Yanıtlar:
-oBayrak kullanın .
Yalnızca kendi işlemlerinizi listelemek için
ps -o command
Tüm sistem işlemlerini listelemek
ps -e -o command
Komutları listelemenin tek yolu bu değildir, komut satırı bayraklarıyla veya yalnızca yürütülebilir olarak yazdırılabilir (bu commandseçenek ne yapar).
Cevabımın altındaki yorumumdan:
command, args ve cmd tam komut verir. Aslında man sayfası durumları komutu ve cmd, - bayrakları dahil olmak üzere argümanlar için takma adlardır. Comm sadece kesin olanın adını verir. Bunun takma adları ucmd ve ucomm'dur. AIX seçenekleri hakkında yanlış okudum, bunlar aslında printf benzeri formatta, argümanlar için% a, comm için% c ile belirtilebilir
Bakın man pskullanımı ve mevcut biçim seçenekleri hakkında daha fazla bilgi için
Programlama yaklaşımı biraz fazla olurdu, çünkü pszaten biçimlendirme seçeneklerini sağlıyor, ancak yapılabilir awk, bu da sütunlu çıktı ile uğraşırken çok yararlıdır.
ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
Ancak, kullanıcı adı boşluk içeriyorsa bu kodun kırıldığını unutmayın, örn john doe. Bu gsub, pslisteden kullanıcı adınızı kaldıracak işlev ekleyerek değiştirilebilir . Ancak, sistemde oturum açmış birden fazla kullanıcı varsa, çıktıdaki tüm kullanıcı adlarını silmek zor olabilir. Böylece, -obayrağın çok daha fazla tercih edildiğini görebilirsiniz .
Yan not, sudotüm işlemleri listelemek için gerekli değildir.ps
commolduğu gibi AIX commandformatıdır. AIX başka bir * NIX benzeri sistemdir, bu nedenle uyumluluk için bu seçenek kullanılabilir. Aksi takdirde, fark yok
diff <(ps -eo comm) <(ps -eo command)ve orada bir çıngırak var gibi görünüyor, açıklığa kavuşturabilir misin?
command, argsve cmdhepsi tam komut veriyor. Aslında man sayfası , bayraklar ile birlikte belirtilir commandve cmdtakma adlardır . Sadece exacutable adını verir. Bunun takma adları ve . Ben AIX seçenekleri hakkında yanlış okudum, bu aslında printf benzeri bir format, args için% a, comm için% c ile belirtilebilirargs-commucmducomm
Daha genel bir yol. Komutun sütununu belirliyoruz. Bu şekilde, hangi anahtarların kullanıldığı önemli değildir ps.
ps ax | awk -v p='COMMAND' 'NR==1 {n=index($0, p); next} {print substr($0, n)}'
Örnek çıktı
% 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
[…]
Peki ne olacak pstree?
Örnek çıktı
% 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}
[…]
Ben bu başarmak için bashy yolunu buldu burada
sudo ps aux | rev | cut -d ' ' -f 1 | rev
revçıkışını tersine çevirir psve sonra kes, ilk alanı sınırlandırmanıza yardımcı olur (sonuncusu!) ve sonra tekrar ters çevirir ...
benim için çalıştı.
ps auxkendisi olarak listelenir aux.
sudoiçin gerekli değildir psve komut çok sayıda komutu kırpar, bu yüzden çok doğru değildir, sütunlarla çalışmak istiyorsanız, awkbu görev için çok daha iyi kullanın . Aslında, kesin komut olurdups aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
awkçalışması gerekir.
sudo psve awkbu görev için çok karmaşık olacağını düşündüm ve ortaya çıktı cut. Her neyse, OP'nin kabul edebilmesi için cevabınızı bu kodla güncellememelisiniz?
pssadece körü körüne ayrıştırılamaz. Bence buradaki tek güvenli yöntem ps -e -o.
ps -eo command& Arasında herhangi bir fark varps -eo commmı? Bulunan tek fark vardıcommand: çıkış gibi olduğu[kthreadd], oysacommçıkış bu gibi hidroliz edilmiştirkthreadd. Bu bir şey ifade ediyor mu?