답변:
-o플래그를 사용하십시오 .
자신의 프로세스 만 나열하려면
ps -o command
모든 시스템 프로세스를 나열하려면
ps -e -o command
이것은 명령을 나열하는 유일한 방법이 아니며 명령 행 플래그와 함께 인쇄되거나 실행 파일로만 인쇄 될 수 있습니다 ( command옵션이 수행하는 작업).
내 의견에서 대답은 다음과 같습니다.
command, args 및 cmd는 모두 전체 명령을 제공합니다. 실제로 man page states command 및 cmd는-플래그가 포함 된 args의 별명입니다. 통신은 실행 가능한 이름 만 제공합니다. 이에 대한 별명은 ucmd 및 ucomm입니다. AIX 옵션에 대해 잘못 읽었습니다. 실제로 printf와 같은 형식, args의 경우 % a, comm의 경우 % c로 지정할 수 있습니다
man ps사용법 및 사용 가능한 형식 옵션에 대한 자세한 내용은 참조하십시오
프로그래밍 방식은 ps이미 중복 옵션 이 될 것입니다. 이미 서식 옵션을 제공했지만 열 awk처리 된 출력을 처리 할 때 매우 유용합니다.
ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
그러나 username에 공백이 포함되어 있으면이 코드가 작동하지 않습니다 (예 :) john doe. 이것은 목록 gsub에서 사용자 이름을 제거하는 기능을 추가하여 수정 될 수 있습니다 ps. 그러나 시스템에 여러 사용자가 로그인 한 경우 출력에서 모든 사용자 이름을 지우는 것이 어려울 수 있습니다. 따라서 -o플래그가 훨씬 선호 된다는 것을 알 수 있습니다 .
참고로 sudo모든 프로세스를 나열 할 필요는 없습니다.ps
comm과 마찬가지로 AIX 형식 command입니다. AIX는 시스템과 같은 또 다른 * NIX이므로 옵션을 호환성에 사용할 수 있습니다. 그렇지 않으면, 차이가 없습니다
diff <(ps -eo comm) <(ps -eo command)했고 거기에 꽤 딸랑이가있는 것 같습니다. 설명 할 수 있습니까?
command, args및 cmd모두가 전체 명령을 제공합니다. 사실 매뉴얼 페이지 상태에서 command와 cmd앨리어스 (alias) args와, -포함 플래그. 는 comm단지 exacutable의 이름을 제공합니다. 에 대한 별칭은 ucmd및 ucomm입니다. AIX 옵션에 대해 잘못 읽었습니다. 실제로 printf와 같은 형식, args의 경우 % a, comm의 경우 % c로 지정할 수 있습니다
보다 일반적인 방법입니다. 우리는 명령의 열을 결정합니다. 이런 식으로 어떤 스위치가 사용되는지는 중요하지 않습니다 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}
[…]
여기 에서 이것을 달성 할 수있는 bashy 방법을 찾았 습니다
sudo ps aux | rev | cut -d ' ' -f 1 | rev
rev출력을 뒤집은 ps다음 cut을 사용하면 첫 번째 필드 (마지막입니다!)를 구분하고 다시 뒤집을 수 있습니다 ...
나를 위해 일했다.
ps aux자체는로 표시됩니다 aux.
sudo필요하지 않으며 ps명령이 많은 명령을 자르기 때문에 매우 정확하지 않습니다. colums로 작업하려면 awk해당 작업에 훨씬 좋습니다. 실제로, 정확한 명령은 다음과 같습니다ps aux | awk '{ for(i=1;i<=NF;i++) {if ( i >= 11 ) printf $i" "}; printf "\n" }'
awk합니다. Serg 가 작동해야합니다.
sudo ps하다고 생각 awk하여 나왔습니다 cut. 어쨌든 OP가 수락 할 수 있도록 해당 코드로 답변을 업데이트해서는 안됩니까?
ps그것은 맹목적으로 분석 할 수 없습니다. 여기서 유일한 안전한 방법은 ps -e -o입니다.
ps -eo command& 사이에 차이점이ps -eo comm있습니까? 내가 찾은 유일한 차이점command은 출력과[kthreadd]같았습니다comm. 출력은 다음과 같습니다kthreadd. 이것이 무엇을 의미합니까?