Antworten:
Verwenden -oFlagge.
Um nur Ihre eigenen Prozesse aufzulisten
ps -o command
Um alle Systemprozesse aufzulisten
ps -e -o command
Dies ist nicht die einzige Möglichkeit, Befehle aufzulisten. Sie können entweder mit Befehlszeilen-Flags oder nur als ausführbare Dateien gedruckt werden (was bei dieser commandOption der Fall ist).
Aus meinem Kommentar unten die Antwort:
befehl, args und cmd geben alle den vollen befehl. In der Tat sind Befehl und Befehl der man-Seite Aliase für args, einschließlich der - Flags. Das Komm gibt nur den Namen der ausführbaren Datei an. Aliase dazu sind ucmd und ucomm. Wenn ich AIX-Optionen falsch verstehe, können diese tatsächlich mit einem printf-ähnlichen Format angegeben werden,% a für args,% c für comm
Siehe man psfür mehr Informationen zur Verwendung und die verfügbaren Formatoptionen
Ein programmatischer Ansatz wäre ein bisschen redundant, da er psuns bereits die Formatierungsoptionen bietet, dies kann jedoch durchgeführt werden awk, was beim Umgang mit kolumnisierten Ausgaben sehr hilfreich ist.
ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
Beachten Sie jedoch, dass dieser Code abbricht, wenn der Benutzername Leerzeichen enthält, z john doe. Dies kann durch Hinzufügen einer gsubFunktion geändert werden, die Ihren Benutzernamen aus der psListe entfernt. Wenn jedoch mehrere Benutzer am System angemeldet sind, ist es möglicherweise schwierig, alle Benutzernamen aus der Ausgabe zu löschen. Sie sehen also, dass die -oFlagge viel bevorzugter ist.
Randnotiz, sudoist nicht erforderlich, um alle Vorgänge mit aufzulistenps
commAIX-Format, wobei commandes sich um das Standard-GNU-Format handelt. AIX ist ein anderes * NIX-ähnliches System, daher kann diese Option aus Gründen der Kompatibilität verwendet werden. Ansonsten kein Unterschied
diff <(ps -eo comm) <(ps -eo command)und da unten scheint es ein ziemliches Rasseln zu geben, kannst du das klarstellen?
command, argsund cmdalle geben das volle Kommando. In der Tat gibt die Manpage an commandund cmdist ein Alias für args, wobei die -Flags enthalten sind. Der commgibt nur den Namen der ausführbaren Datei an. Aliase dazu sind ucmdund ucomm. Ich habe die AIX-Optionen falsch verstanden, diese können tatsächlich mit einem printf-ähnlichen Format angegeben werden,% a für args,% c für comm
Ein allgemeinerer Weg. Wir bestimmen die Spalte des Befehls. Auf diese Weise spielt es keine Rolle, für welche Schalter verwendet werden ps.
ps ax | awk -v p='COMMAND' 'NR==1 {n=index($0, p); next} {print substr($0, n)}'
Beispielausgabe
% 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
[…]
Und worum geht es pstree?
Beispielausgabe
% 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}
[…]
Ich habe einen bescheidenen Weg gefunden, um dies von hier aus zu erreichen
sudo ps aux | rev | cut -d ' ' -f 1 | rev
revDurch Umkehren der Ausgabe von psund anschließendes Ausschneiden können Sie das erste Feld (welches das letzte ist!) eingrenzen und dann wieder umkehren ...
arbeitete für mich.
ps auxselbst wird als aufgeführt aux.
sudoist nicht notwendig für psund der Befehl schneidet viele der Befehle ab, daher ist es nicht sehr genau. Wenn Sie mit Spalten arbeiten möchten, verwenden Sie awkes viel besser für diese Aufgabe. In der Tat wäre der genaue Befehlps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
awkfunktionieren sollte.
sudo psund ich dachte, awkwäre zu kompliziert für diese Aufgabe und kam mit raus cut. Sollten Sie Ihre Antwort nicht mit diesem Code aktualisieren, damit das OP sie akzeptieren kann?
pses ist einfach nicht blindlings analysierbar. Ich denke, die einzig sichere Methode ist hier ps -e -o.
ps -eo command&ps -eo comm? Der einzige Unterschied , den ich fand , war incommandder Ausgabe als solche war:[kthreadd]während incommder Ausgabe als dies:kthreadd. Bedeutet das etwas?