进程状态命令 Unix/Linux
PS 缩写为process status 命令列出在Linux/Unix机器上运行的活动进程的信息。
这个命令列出了一个shell中所有正在运行的进程。
我们将在下面的章节中看到经常使用的ps命令的例子。所有这些命令都在Linux/Unix的命令行中执行
不带参数的ps命令
不带参数的ps命令列出了当前shell中的所有进程
并且输出为
PID TTY TIME CMD
10169 pts/0 00:00:00 bash
10247 pts/0 00:00:00 ps
ps -aef命令
ps -aef命令将系统中所有进程的信息输出到控制台。
并输出为
nagios 408 1 0 Jul17 ? 00:00:00 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -f
root 410 1 0 Jul17 ? 00:00:10 /usr/sbin/cron -f
root 415 1 0 Jul17 ? 00:04:38 /usr/sbin/irqbalance --foreground
message+ 416 1 0 Jul17 ? 00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root 429 1 0 Jul17 ? 00:04:09 /usr/sbin/rsyslogd -n
root 432 1 0 Jul17 ? 00:00:08 /lib/systemd/systemd-logind
Debian-+ 438 1 0 Jul17 ? 00:27:01 /usr/sbin/snmpd -Lsd -Lf /dev/null -u Debian-snmp -g Debian-snmp -I -smux mteTrigger mteTriggerConf -f
root 439 1 0 Jul17 tty1 00:00:00 /sbin/agetty --noclear tty1 linux
root 441 1 0 Jul17 hvc0 00:00:00 /sbin/agetty --keep-baud 115200,38400,9600 hvc0 vt220
root 471 1 0 Jul17 ? 00:28:35 /usr/sbin/xe-daemon -p /var/run/xe-daemon.pid
root 475 471 0 Jul17 ? 00:00:00 logger -t xe-daemon
root 478 471 0 Jul17 ? 00:00:00 logger -t xenstore
ntp 515 1 0 Jul17 ? 00:07:04 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 109:113
Debian-+ 818 1 0 Jul17 ? 00:00:01 /usr/sbin/exim4 -bd -q30m
root 897 1 0 Jul25 ? 00:00:00 /lib/systemd/systemd --user
root 898 897 0 Jul25 ? 00:00:00 (sd-pam)
root 5636 2 0 Sep20 ? 00:00:03 [kworker/0:1]
root 6170 2 0 Sep18 ? 00:00:03 [kworker/0:2]
root 8211 2 0 Aug22 ? 00:00:00 [bioset]
PS with greap 搜索命令ps -aef| grep java 我们可以用ps命令与grep进行管道连接。列出Linux/UNIX中所有名字为java的进程。
root:~[0]# ps -aef| grep java
并输出为
root 27101 1 0 Aug09 ? 00:34:40 /opt/java-jdk/jdk1.8.0_152/bin/java -classpath /root/sumfox/.mvn/wrapper/maven-wrapper.jar -Dmaven.home=/root -Dmaven.multiModuleProjectDirectory=/root/sumfox org.apache.maven.wrapper.MavenWrapperMain -Pprod
root 27783 27101 0 Aug09 ? 00:37:20 /opt/java-jdk/jdk1.8.0_152/jre/bin/java -cp /root/sumfox/target/classes:/root/.m2/repository/org/springframework/boot/
.............................
强制杀死进程ID
Kill proceed to kill the process which has an id of the process.我们可以使用kill -9命令来强行杀死该进程。
如何通过名字杀死进程 Killall
Killall 是一条用进程名称杀死进程的命令
root:~[0]#Killall processname
processname是进程的名称。
如何停止进程
kill 0可以停止所有的进程。
root:~[0]#Kill 0 processname
进程树命令
该命令提供所有进程的进程树。它给出了父进程和子进程的链接信息。
root:~[0]# ps -e --forcast
输出是
31138 ? 00:00:25 packagekitd
31142 ? 00:00:00 polkitd
897 ? 00:00:00 systemd
898 ? 00:00:00 \_ (sd-pam)
27101 ? 00:34:40 java
27783 ? 00:37:20 \_ java
30699 ? 00:01:59 postgres
30701 ? 00:00:01 \_ postgres
ps aux命令
该命令列出了所有用户的所有进程
输出为
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 57276 4876 ? Ss Jul17 1:09 /sbin/init
root 2 0.0 0.0 0 0 ? S Jul17 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Jul17 0:07 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Jul17 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S Jul17 7:21 [rcu_sched]
root 8 0.0 0.0 0 0 ? S Jul17 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S Jul17 0:12 [migration/0]
root 10 0.0 0.0 0 0 ? S< Jul17 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S Jul17 0:15 [watchdog/0]
root 12 0.0 0.0 0 0 ? S Jul17 0:00 [cpuhp/0]
root 13 0.0 0.0 0 0 ? S Jul17 0:00 [cpuhp/1]
root 14 0.0 0.0 0 0 ? S Jul17 0:16 [watchdog/1]
ps -ef 命令
该命令列出了所有进程的完整格式。
root:~[0]#ps -ef or ps -eF
并输出为
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jul17 ? 00:01:09 /sbin/init
root 2 0 0 Jul17 ? 00:00:00 [kthreadd]
root 3 2 0 Jul17 ? 00:00:07 [ksoftirqd/0]
root 5 2 0 Jul17 ? 00:00:00 [kworker/0:0H]
root 7 2 0 Jul17 ? 00:07:21 [rcu_sched]
root 8 2 0 Jul17 ? 00:00:00 [rcu_bh]
root 9 2 0 Jul17 ? 00:00:12 [migration/0]
root 10 2 0 Jul17 ? 00:00:00 [lru-add-drain]
root 11 2 0 Jul17 ? 00:00:15 [watchdog/0]
root 12 2 0 Jul17 ? 00:00:00 [cpuhp/0]
root 13 2 0 Jul17 ? 00:00:00 [cpuhp/1]