1.命令基本介绍
|
1
2
|
man
ps
ps
- report a snapshot of the current processes.
|
ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。
2.常用选项
|
1
2
3
4
5
6
|
-A:显示所有程序。与 -e 具有同样的效用。
-e:此选项的效果和指定
"A"
选项相同。
-f:显示UID,PPIP,C与STIME栏位。
a:显示现行终端机下的所有程序,包括其他用户的程序。
u:以用户为主的格式来显示程序状况。
x:显示所有程序,不以终端机来区分。
|
3.常用命令
3.1 ps aux
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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
|
1
2
3
4
5
6
7
8
9
10
|
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最高的进程
|
1
|
ps
aux|
head
-1;
ps
aux|
grep
-
v
PID|
sort
-rn -k 3|
head
|
3.4 查看占用内存最高的进程
|
1
2
3
4
5
6
7
|
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 查看某个用户起的进程
|
1
|
ps
-fu root
#root表示用户
|
3.6 查看僵尸进程
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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 查看进程启动时间与运行时间
|
1
2
3
4
5
6
7
8
|
ps
-eo pid,user,lstart,etime,
comm
,args
pid:进程ID
user:用户
lstart:启动时间
etime:运行时间
comm
:命令
args:命令详细参数
|
3.8 通过ansible管理查看远程主机上某用户运行的程序
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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管理删除远程主机上某用户运行的程序
|
1
2
3
4
5
6
7
8
9
10
11
12
|
[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"
|