Відповіді:
Використовуйте -o
прапор.
Перелічити лише власні процеси
ps -o command
Щоб перелічити всі системні процеси
ps -e -o command
Це не єдиний спосіб перелічити команди, вони можуть бути надруковані прапорами командного рядка, або лише як виконувані файли (що таке command
опція).
З мого коментаря нижче відповіді:
команда, аргументи та cmd всі дають повну команду. Насправді команда man page stanja і cmd є псевдонімами для аргументів, включаючи - прапори. Команда дає назву виключно гострим. Псевдоніми до цього є ucmd та ucomm. Я неправильно читав про параметри AIX, їх можна фактично вказати у форматі printf,% a для аргументів,% c для comm
Докладнішу 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
comm
це AIX формат, де, як command
і стандартний формат стилю GNU. AIX - це ще одна система, схожа на NIX, тому ця опція може бути використана для сумісності. Інакше різниці немає
diff <(ps -eo comm) <(ps -eo command)
і там, здається, є досить брязкальце, ви можете уточнити?
command
, args
і cmd
всі віддають повну команду. Насправді сторінка man повідомляє command
і cmd
є псевдонімами args
, з -
включеними прапорцями Ім'я comm
дає назву тільки невиправданим. Псевдоніми до цього є ucmd
і ucomm
. Я неправильно читаю про параметри AIX, їх можна фактично вказати у форматі printf,% a для аргументів,% c для comm
Більш родовий спосіб. Визначаємо стовпчик команди. Таким чином, не має значення, для яких вимикачів використовуються 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}
[…]
Я знайшов грізний спосіб досягти цього звідси
sudo ps aux | rev | cut -d ' ' -f 1 | rev
rev
повертає результат ps
і потім вирізати допоможе вам розмежувати перше поле (яке є останнім!), а потім повернути його знову ...
працював на мене.
ps aux
сам буде вказаний як aux
.
sudo
не потрібно, ps
і команда обробляє багато команд, тому це не дуже точно, якщо ви хочете працювати з колонками, використовуйте awk
це набагато краще для цього завдання. Насправді точна команда була бps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
awk
повинен працювати.
sudo ps
і я подумав, awk
що це завдання буде занадто складним, і я вийшов cut
. У будь-якому випадку, чи не слід оновлювати свою відповідь цим кодом, щоб ОП може прийняти її?
ps
це просто не сліпо розбирається. Я думаю, єдиний безпечний метод тут ps -e -o
.
ps -eo command
&ps -eo comm
? Єдина відмінність я знайшов вcommand
вихідний був такий: в[kthreadd]
той час як вcomm
вихідний був , як це:kthreadd
. Чи означає це щось?