টার্মিনালে only PS` কমান্ডের COMMAND এর অধীনে কেবল কলামটি আউটপুট দেয়


12

আমি জানি যে আমরা নিম্নলিখিতগুলি সহজেই খুঁজে পেতে পারি:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

কমান্ডটি ব্যবহার করে সমস্ত চলমান প্রক্রিয়াগুলি:

sudo ps aux

আমার, প্রশ্নটি হ'ল, কেবলমাত্র কলামের আউটপুট দেখানো সম্ভব COMMANDএবং এর বাইরে আর কিছুই নয়?

উত্তর:


18

-oপতাকা ব্যবহার করুন ।

শুধুমাত্র আপনার নিজস্ব প্রক্রিয়া তালিকা করতে

 ps -o command  

সমস্ত সিস্টেম প্রক্রিয়া তালিকাভুক্ত করা

 ps -e -o command

কমান্ড তালিকাভুক্ত করার একমাত্র উপায় নয়, সেগুলি হয় কমান্ড লাইন পতাকা দ্বারা মুদ্রণ করা যেতে পারে, বা কেবল এক্সিকিউটেবল হিসাবে (যা commandবিকল্পটি ব্যবহার করে)।

আমার মন্তব্য থেকে উত্তরটি নমস্কার করুন:

কমান্ড, আরগস, এবং সিএমডি সমস্ত সম্পূর্ণ কমান্ড দেয়। প্রকৃতপক্ষে ম্যান পেজ স্টেটস কমান্ড এবং সেন্টিমিডি হ'ল - ফ্ল্যাগগুলি অন্তর্ভুক্ত করে অর্গগুলির জন্য উপকরণ are কম কেবল এক্সট্যাকটেবলের নাম দেয়। উপন্যাসগুলি ইউসিএমডি এবং ইউকম হয়। আমি এআইএক্স বিকল্পগুলি সম্পর্কে ভুলভাবে পড়েছি, সেগুলি প্রকৃতপক্ষে প্রিন্টফ-এর মতো ফর্ম্যাট, আর্গের জন্য% একটি, কমের জন্য% সি দিয়ে নির্দিষ্ট করা যেতে পারে

পড়ুন man psব্যবহার এবং প্রাপ্তিসাধ্য ফর্ম্যাট বিকল্পগুলি আরো তথ্যের জন্য

প্রোগ্রাম্যাটিক অ্যাপ্রোচটি কিছুটা রিয়ন্ডান্ট হতে পারে, যেহেতু psইতিমধ্যে আমাদের ফরম্যাটিং বিকল্পগুলি সরবরাহ করে তবে এটি করা যেতে পারে awk, যা কলামাইজড আউটপুট নিয়ে কাজ করার সময় অনেক কার্যকর।

ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'

তবে দ্রষ্টব্য, এই ব্যবহারকারীর ব্যবহারকারীর মধ্যে যদি সাদা স্থান থাকে তবে এই কোডটি ভেঙে যায় john doe। এটি gsubফাংশন যুক্ত করে সংশোধন করা যেতে পারে যা আপনার ব্যবহারকারী নাম psতালিকা থেকে মুছে ফেলবে । তবে, সিস্টেমে যদি একাধিক ব্যবহারকারী লগইন করেন তবে আউটপুট থেকে সমস্ত ব্যবহারকারীর নাম মুছে ফেলা মুশকিল। সুতরাং, আপনি দেখতে পারেন যে -oপতাকাটি অনেক বেশি পছন্দসই।

সাইড নোট, sudoসমস্ত প্রক্রিয়া তালিকাভুক্ত করার জন্য প্রয়োজন হয় নাps


ধন্যবাদ! ps -eo command& এর মধ্যে কোনও পার্থক্য আছে ps -eo commকি? শুধু পার্থক্য আমি দেখেছি ছিল command: আউটপুট যেমন ছিল [kthreadd]যেহেতু commআউটপুট এই ছিল: kthreadd। এটি কি কিছু বোঝায়?
— রাফেল

ম্যান পেজ অনুসারে @ রাফেল, পার্থক্যটি হল এআইএক্স commফর্ম্যাট, যেখানে commandস্ট্যান্ডার্ড জিএনইউ স্টাইলের ফর্ম্যাট। এআইএক্স হ'ল সিস্টেমের মতো আরও একটি * এনআইএক্স, সুতরাং সেই বিকল্পটি সামঞ্জস্যতার জন্য ব্যবহার করা যেতে পারে। অন্যথায়, কোনও পার্থক্য নেই
— সের্গেই কলডিয়াজহনি

@ সার্জ, আমি সবেমাত্র মৃত্যুদন্ড কার্যকর করেছি diff <(ps -eo comm) <(ps -eo command)এবং সেখানে খুব একটা খড়খড়ি বলে মনে হচ্ছে, আপনি কি স্পষ্ট করে বলতে পারেন?
— অ্যান্ড্রু

দেখুন, awkকোনও ব্যবহারকারীর শূন্যস্থান ( এখানে ) থাকলে সমাধানটি ভেঙে যায় ; এছাড়াও সম্ভবত ঠিক ps aux | awk '{ for(i=11;i<=NF;i++) {printf $i" "}; printf "\n" }'?
— kos

2
@ অ্যান্ড্রু তাই, আমি ম্যানুয়ালটি আরও কিছুটা পড়েছি। সুতরাং command, argsএবং cmdসমস্ত সম্পূর্ণ আদেশ দেয়। প্রকৃতপক্ষে ম্যান পেজটি পতাকাগুলি অন্তর্ভুক্ত করে commandএবং cmdএর জন্য উপাধি রয়েছে। শুধুমাত্র exacutable নাম দেয়। উপন্যাসগুলি হ'ল এবং । আমি এআইএক্স বিকল্পগুলি সম্পর্কে ভুলভাবে পড়েছি, সেগুলি প্রকৃতপক্ষে প্রিন্টফ-এর মতো ফর্ম্যাট, args-commucmducomm
— আর্গের

4

আরও সাধারণ উপায়। আমরা কমান্ডের কলামটি নির্ধারণ করি। এইভাবে, কোন স্যুইচগুলির জন্য ব্যবহৃত হয় তা বিবেচ্য নয় ps।

ps ax | awk -v p='COMMAND' 'NR==1 {n=index($0, p); next} {print substr($0, n)}'

নমুনা আউটপুট

% ps aux | awk -v p='COMMAND' 'NR==1 {n=index($0, p); next} {print substr($0, n)}'
/sbin/init splash
[kthreadd]
[ksoftirqd/0]
[kworker/0:0H]
[rcu_sched]
[rcu_bh]
[migration/0]
[watchdog/0]
[watchdog/1]
[migration/1]
[ksoftirqd/1]
[kworker/1:0H]
[watchdog/2]
[migration/2]
[ksoftirqd/2]
[kworker/2:0H]
[khelper]
[kdevtmpfs]
[netns]
[perf]
[khungtaskd]
[writeback]
[ksmd]
[khugepaged]
[crypto]
[kintegrityd]
[bioset]
[kblockd]
[ata_sff]
[md]
[devfreq_wq]
[kswapd0]
[fsnotify_mark]
[ecryptfs-kthrea]
[kthrotld]
[acpi_thermal_pm]
[scsi_eh_0]
[scsi_tmf_0]
[scsi_eh_1]
[scsi_tmf_1]
[ipv6_addrconf]
[deferwq]
[charger_manager]
[kpsmoused]
[scsi_eh_2]
[scsi_tmf_2]
[kworker/0:1H]
[jbd2/sda1-8]
[ext4-rsv-conver]
[kauditd]
[kworker/0:2]
/lib/systemd/systemd-journald
/lib/systemd/systemd-udevd
[…]

এবং কি সম্পর্কে pstree?

নমুনা আউটপুট

% pstree -alU
systemd splash
  ├─ModemManager
  │   ├─{gdbus}
  │   └─{gmain}
  ├─NetworkManager --no-daemon
  │   ├─dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /run/sendsigs.omit.d/network-manager.dhclient-eth0.pid -lf /var/lib/NetworkManager/dhclient-57cfb005-1dc6-410d-aebc-16d8d152abfd-eth0.lease -cf /var/lib/NetworkManager/dhclient-eth0.conf eth0
  │   ├─dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/run/sendsigs.omit.d/network-manager.dnsmasq.pid --listen-address=127.0.1.1 --conf-file=/var/run/NetworkManager/dnsmasq.conf --cache-size=0 --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d
  │   ├─{gdbus}
  │   └─{gmain}
  ├─VBoxClient --clipboard
  │   └─VBoxClient --clipboard
  │       └─{SHCLIP}
  ├─VBoxClient --display
  │   └─VBoxClient --display
  │       └─{VT_MONITOR}
  ├─VBoxClient --seamless
  │   └─VBoxClient --seamless
  │       └─{X11 events}
  ├─VBoxClient --draganddrop
  │   └─VBoxClient --draganddrop
  │       ├─{dndHGCM}
  │       └─{dndX11}
  ├─VBoxService --pidfile /var/run/vboxadd-service.pid
  │   ├─{automount}
  │   ├─{control}
  │   ├─{cpuhotplug}
  │   ├─{memballoon}
  │   ├─{timesync}
  │   ├─{vminfo}
  │   └─{vmstats}
  ├─VBoxService
  │   ├─{automount}
  │   ├─{control}
  │   ├─{cpuhotplug}
  │   ├─{timesync}
  │   ├─{vminfo}
  │   └─{vmstats}
  ├─accounts-daemon
  │   ├─{gdbus}
  │   └─{gmain}
  ├─agetty --noclear tty1 linux
  ├─apache2 -k start
  │   ├─apache2 -k start
  │   ├─apache2 -k start
  │   ├─apache2 -k start
  │   ├─apache2 -k start
  │   └─apache2 -k start
  ├─at-spi-bus-laun
  │   ├─dbus-daemon --config-file=/etc/at-spi2/accessibility.conf --nofork --print-address 3
  │   ├─{dconf worker}
  │   ├─{gdbus}
  │   └─{gmain}
  ├─at-spi2-registr --use-gnome-session
  │   ├─{gdbus}
  │   └─{gmain}
  ├─atd -f
  ├─avahi-daemon
  │   └─avahi-daemon
  ├─cgmanager -m name=systemd
  ├─colord
  │   ├─{gdbus}
  │   └─{gmain}
  ├─console-kit-dae --no-daemon
  │   ├─62*[{console-kit-dae}]
  │   ├─{gdbus}
  │   └─{gmain}
  ├─cron -f
  ├─cups-browsed
  │   ├─{gdbus}
  │   └─{gmain}
  ├─cupsd -l
  │   └─dbus dbus:// 
  ├─dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
  ├─dnsmasq -u lxc-dnsmasq --strict-order --bind-interfaces --pid-file=/run/lxc/dnsmasq.pid --listen-address 10.0.3.1 --dhcp-range 10.0.3.2,10.0.3.254 --dhcp-lease-max=253 --dhcp-no-override --except-interface=lo --interface=lxcbr0 --dhcp-leasefile=/var/lib/misc/dnsmasq.lxcbr0.leases --dhcp-authoritative
  ├─gdm
  │   ├─gdm-session-wor
  │   │   ├─gdm-x-session /usr/bin/gnome-session --autostart /usr/share/gdm/greeter/autostart
  │   │   │   ├─Xorg vt7 -displayfd 3 -auth /run/user/120/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
  │   │   │   │   ├─{llvmpipe-0}
  │   │   │   │   ├─{llvmpipe-1}
  │   │   │   │   └─{llvmpipe-2}
  │   │   │   ├─dbus-daemon --print-address 4 --session
  │   │   │   ├─gnome-session-b --autostart /usr/share/gdm/greeter/autostart
  │   │   │   │   ├─gnome-settings-
  │   │   │   │   │   ├─{dconf worker}
  │   │   │   │   │   ├─{gdbus}
  │   │   │   │   │   ├─{gmain}
  │   │   │   │   │   └─{pool}
  │   │   │   │   ├─gnome-shell --mode=gdm
  │   │   │   │   │   ├─ibus-daemon --xim --panel disable
  │   │   │   │   │   │   ├─ibus-dconf
  │   │   │   │   │   │   │   ├─{dconf worker}
  │   │   │   │   │   │   │   ├─{gdbus}
  │   │   │   │   │   │   │   └─{gmain}
  │   │   │   │   │   │   ├─ibus-engine-sim
  │   │   │   │   │   │   │   ├─{gdbus}
  │   │   │   │   │   │   │   └─{gmain}
  │   │   │   │   │   │   ├─{gdbus}
  │   │   │   │   │   │   └─{gmain}
  │   │   │   │   │   ├─{JS GC Helper}
  │   │   │   │   │   ├─{JS Sour~ Thread}
  │   │   │   │   │   ├─{Sync}
  │   │   │   │   │   ├─{dconf worker}
  │   │   │   │   │   ├─{gdbus}
  │   │   │   │   │   ├─{gmain}
  │   │   │   │   │   ├─{llvmpipe-0}
  │   │   │   │   │   ├─{llvmpipe-1}
  │   │   │   │   │   ├─{llvmpipe-2}
  │   │   │   │   │   └─{threaded-ml}
  │   │   │   │   ├─{dconf worker}
  │   │   │   │   ├─{gdbus}
  │   │   │   │   └─{gmain}
  │   │   │   ├─{gdbus}
  │   │   │   └─{gmain}
  │   │   ├─{gdbus}
  │   │   └─{gmain}

[…]

আরও জেনেরিক উপায় যুক্ত করা হয়েছে।
— এবি

ব্রাভো, এবি! তুমি আমাকে এবং @kos কি চিন্তা করার চেষ্টা করা হয়েছে মীমাংসিত - দূর ব্যবহারকারীর নাম
— Sergiy Kolodyazhnyy

1

আমি এখান থেকে এটি অর্জন করার একটি বাজে উপায় খুঁজে পেয়েছি

sudo ps aux | rev | cut -d ' ' -f 1 | rev

revএর আউটপুটকে বিপরীত করে psএবং তারপরে কাটা আপনাকে প্রথম ক্ষেত্রটি (যা শেষ!) সীমাবদ্ধ করতে সাহায্য করতে পারে এবং তারপরে আবার বিপরীত হয় ...

আমার জন্য কাজ।


2
তাদের নামের স্থান সহ প্রক্রিয়াগুলি এই পদ্ধতি দ্বারা সঠিকভাবে তালিকাভুক্ত হবে না: ps auxনিজেই হিসাবে তালিকাভুক্ত হবে aux।
— kos

1
sudoজন্য প্রয়োজন হয় না psএবং কমান্ড কমান্ড অনেক শস্য, তাই এটি খুব সঠিক, যদি আপনি colums সঙ্গে কাজ করতে চান, ব্যবহার করেন awkএটা অনেক যে কাজের জন্য ভালো। প্রকৃতপক্ষে, সঠিক আদেশটি হবেps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
— সের্গেই কলডিয়াজহনি

@ কোস হ্যাঁ, আমি এটি বুঝতে পেরেছি, এটি দেখানোর জন্য ধন্যবাদ, সার্গের awkএটি কাজ করা উচিত।
— অ্যান্ড্রু

@ সার্জ +1, ওপি অনুরোধ করেছিল sudo psএবং আমি ভেবেছিলাম awkএই কাজটির জন্য খুব জটিল হবে এবং বেরিয়ে এসেছি cut। যাইহোক, আপনার কোডটি উত্তরটি আপডেট করা উচিত নয় যাতে ওপি তা গ্রহণ করতে পারে?
— অ্যান্ড্রু

এটি আরও ভাল, তবে লিনাক্সের প্রযুক্তিগতভাবে ব্যবহারকারীর নামগুলিতে স্পেস থাকতে পারে, যা সেই আদেশটিও গোলমাল করতে পারে। psএটি কেবল অন্ধভাবে পার্সেবল নয়। আমি মনে করি এখানে একমাত্র নিরাপদ পদ্ধতি ps -e -o।
— kos
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.