1.命令基本介绍
man ps ps - report a snapshot of the current processes.
ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。
2.常用选项
-A:显示所有程序。与 -e 具有同样的效用。 -e:此选项的效果和指定"A"选项相同。 -f:显示UID,PPIP,C与STIME栏位。 a:显示现行终端机下的所有程序,包括其他用户的程序。 u:以用户为主的格式来显示程序状况。 x:显示所有程序,不以终端机来区分。
3.常用命令
3.1 ps aux
ps aux详解:是用BSD的格式来显示 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND USER:该进程的属组。 PID :该进程的进程ID号。 %CPU:该进程占用的CPU 资源百分比。 %MEM:该进程所占用的物理内存百分比。 VSZ :该进程使用掉的虚拟内存量 (Kbytes) RSS :该进程占用的固定的内存量 (Kbytes) TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。 STAT:该程序目前的状态,主要的状态有: D :不可中断 uninterruptible sleep (usually IO) R :运行 runnable。该程序目前正在运作,或者是可被运作; S :中断 sleeping。该程序目前正在睡眠当中 ,但可被某些讯号(signal) 唤醒。 T :停止 traced or stopped。该程序目前正在侦测或者是停止了; Z :僵死 a defunct (”zombie”) process。该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态 START:该进程被触发启动的时间; TIME :该进程实际使用 CPU 运作的时间。 COMMAND:该程序的实际命令。
3.2 ps -ef
ps -ef 详解:标准的格式显示进程的 UID PID PPID C STIME TTY TIME CMD UID 用户ID、但输出的是用户名 PID 进程的ID PPID 父进程ID C 进程占用CPU的百分比 STIME 进程启动到现在的时间 TTY 该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 CMD 命令的名称和参数
3.3 查看占用CPU最高的进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k 3|head
3.4 查看占用内存最高的进程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head 解释: ps aux|head -1:得到头 ps aux|grep -v PID :查看进程 sort -rn -k 4|head:以第四列的数值大小进行逆序排列(默认从小到大)
3.5 查看某个用户起的进程
ps -fu root #root表示用户
3.6 查看僵尸进程
linux系统上: ps -ef | grep defunct #查看命令 另外可以使用top命令查看 top Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie ps -ef | grep defunct | grep -v grep | wc -l #统计所有的僵尸进程 solaris系统上: a)确定僵尸进程 ps -efo uid,pid,ppid,pcpu,pmem,vsz,rss,osz,etime,stime,s,comm | grep Z 或者 ps -ef | grep defunct | more b)确定僵尸进程启动时间 ps -efo uid,pid,ppid,pcpu,pmem,vsz,rss,osz,etime,stime,s,comm | grep 20396 (进程号)
3.7 查看进程启动时间与运行时间
ps -eo pid,user,lstart,etime,comm,args pid:进程ID user:用户 lstart:启动时间 etime:运行时间 comm:命令 args:命令详细参数
3.8 通过ansible管理查看远程主机上某用户运行的程序
cat checkproc.yml --- - name: check remote proc hosts: linux remote_user: root gather_facts: false tasks: - name: check proc shell: ps -ef | grep -v grep | grep apache | wc -l register: proccount - name: see the pro fail: msg: "apache user exist process!" when: pscount.stdout != "0" ansible-playbook -i hosts checkproc.yml
3.9 通过ansible管理删除远程主机上某用户运行的程序
[root@localhost ansible]# cat kill.sh #!/bin/bash ps -ef | grep -v grep | grep nxy | awk '{print $2}' | xargs kill [root@localhost ansible]# ls ansible.cfg hosts hosts.20170605bak kill.sh roles [root@localhost ansible]# ansible -i hosts node2 -m script -a "/etc/ansible/kill.sh"