Respostas:
Use -o
flag.
Para listar apenas seus próprios processos
ps -o command
Para listar todos os processos do sistema
ps -e -o command
Essa não é a única maneira de listar comandos, eles podem ser impressos com sinalizadores de linha de comando ou apenas como executáveis (que é a command
opção).
Do meu comentário abaixo a resposta:
command, args e cmd fornecem comando completo. De fato, man page states command e cmd são aliases para args, com os sinalizadores - incluídos. A comunicação fornece apenas o nome do exacutável. Aliases para isso são ucmd e ucomm. Eu li mal as opções do AIX, elas podem ser especificadas com o formato do tipo printf,% a para args,% c para comm
Consulte para man ps
obter mais informações sobre uso e opções de formato disponíveis
A abordagem programática seria um pouco redundante, uma vez que ps
já nos fornece as opções de formatação, mas isso pode ser feito awk
, o que é muito útil ao lidar com saída em colunas.
ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
Observe, no entanto, que esse código quebra se o nome de usuário contiver espaço em branco, por exemplo john doe
. Isso pode ser alterado com a adição de uma gsub
função que elimina seu nome de usuário da ps
lista. No entanto, se houver vários usuários conectados ao sistema, pode ser difícil apagar todos os nomes de usuários da saída. Assim, você pode ver que a -o
bandeira é muito mais preferida.
Nota lateral, sudo
não é necessário para listar todos os processos comps
comm
é o formato AIX, onde command
é o estilo GNU padrão. O AIX é outro sistema semelhante ao * NIX, portanto essa opção pode ser usada para compatibilidade. Caso contrário, não há diferença #
diff <(ps -eo comm) <(ps -eo command)
e parece haver um barulho lá embaixo, você pode esclarecer?
command
, args
e cmd
todos dão o comando total. De fato, a página de manual declara command
e cmd
é alias para args
, com os -
sinalizadores incluídos. O comm
fornece apenas o nome do exacutável. Aliases para que são ucmd
e ucomm
. Eu mal interpretado sobre as opções AIX, aqueles podem ser realmente especificado com printf-como formato,% a para args,% c para comm
Uma maneira mais genérica. Nós determinamos a coluna do comando. Dessa maneira, não importa para quais opções são usadas ps
.
ps ax | awk -v p='COMMAND' 'NR==1 {n=index($0, p); next} {print substr($0, n)}'
Saída de amostra
% 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
[…]
E o que é isso pstree
?
Saída de amostra
% 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}
[…]
Eu encontrei uma maneira bash de conseguir isso daqui
sudo ps aux | rev | cut -d ' ' -f 1 | rev
rev
inverte a saída ps
e, em seguida, corta pode ajudá-lo a delimitar o primeiro campo (que é o último!) e depois reverter novamente ...
trabalhou para mim.
ps aux
ele próprio será listado como aux
.
sudo
não é necessário ps
e o comando recorta muitos comandos; portanto, não é muito preciso; se você quiser trabalhar com colunas, use awk
-o muito melhor para essa tarefa. De fato, o comando exato seriaps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
awk
deve trabalhar nisso.
sudo ps
e eu pensei awk
que seria muito complicado para esta tarefa e que saiu com ela cut
. De qualquer forma, você não deve atualizar sua resposta com esse código para que o OP possa aceitá-lo?
ps
simplesmente não é cegamente analisável. Eu acho que o único método seguro aqui é ps -e -o
.
ps -eo command
&ps -eo comm
? A única diferença que foi encontradocommand
na saída foi tais como:[kthreadd]
enquanto que nacomm
saída foi como este:kthreadd
. Isso significa alguma coisa?