一.ps
ps -l //仅查看自己的bash相关进程
ps aux //查看系统所有的进程
ps -aux --sort %cpu //按照cpu
ps aux|grep java //只查看某个进程
ps axo pid,%cpu,%mem,comm //定制某些列
pgrep -U root //过滤出由root产生的进程
pgrep -G student //过滤出所属组为strdent的进程
pidof firefox-bin //显示firefox-bin的pid.pidof必须给出进程的全名
二.top 动态显示进程
top //默认5s更新一次
top -d 2 //每2s更新一次
top -b -n 2 >/tmp/top.txt //将top的信息进行2次,结果输出到/tmp/top.txt中
top -d 2 -p 13639 //查看PID为"13639"的进程,每2s更新一次
top -p 13696 //查看PID为"13696"的进程
top界面下:
r //修改NI的值。
q //退出top.
P //以CPU使用资源排序。
M //以内存使用资源排序。
三.pstree
pstree -A //显示出进程树,各进程之间的连接以ASCII字符连接
pstree -Aup //显示出进程树,ASCII连接,同时显示拥有人和PID
四.kill
怎么控制程序?通过给予程序一个信号(singal)去告之该进程你想让它做什么!
主要的信号:
15 //默认信号,正常结束某个程序。
9 //强制结束。会产生垃圾文件。
1 //启动被终止的进程,可以让该PID重新读取自己的配置文件,类似重新启动。
怎么传送一个信号给某个进程呢?用kill或killall
kill 6316 //即:kill -15 6316
kill -9 6316 //强制结束
killall -9 httpd //按照名字杀进程,有的不止一个进程.将所有以httpd启动的进程都干掉。
pkill -9 httpd //与killall类似,但是如果给出的进程名不完整,killall会报错,pkill不会。
五.进程优先级
进程优先级,用Nice的值来表示。范围:-20~19。数字越小,优先级越高。
所有进程的优先级默认为0.
仅root用户可以把进程优先级调高;普通用户可以调低,不能调高,想调多低调多低。
ps -axo pid,nice,comm //查看进程优先级
nice -n 5 vim test.txt //当程序还没有运行时,制定优先级
renice 5 4478 //将已经运行的程序的优先级进行调整。也可以在top界面下输入"r"来调整。父进程的nice改变之后,该进程的
子进程的nice也会继承为5.
六.工作管理(job control):在单一的终端下同时进行多个工作的行为管理。
通过vim /etc/security/limits.conf 设置用户同时可以登录的连接数。有些情况下,可能只有一个连接来工作。此时就要用到job control了
放入后台的工作想要运行,必须不能够与用户互动。
bash只能管理自己的工作而不能管理其他bash的工作,即使你是root用户也不能将别人的bash下的job 拿过来执行。
cp -a /usr/ .
&
//"&"用于将一个程序放到后台运行.由于"cp -a /usr/ ."运行地太慢,所以放到后台。
Ctrl + z
//暂停。将正在运行的进程暂停掉
fg[%num]
//从后台拿到前台,并且在前端工作
bg[%num]
//把状态激活,并放到后台执行
jobs
//列出job数和名称
kill [%num] //根据job号干掉工作
**************************************
ps -l //仅查看自己的环境变量有关的进程,即最上层的父进程是你自己的bash而没有扩展到init这个进程去。结果如下:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 4565 4504 0 75 0 - 1194 wait pts/1 00:00:00 bash
4 R 0 6536 4565 0 77 0 - 1113 - pts/1 00:00:00 ps
各字段含义:
F:
S:进程状态。R:运行;S:睡眠;
T:停止;Z:僵尸;D:不可被唤醒的睡眠。
UID/PID/PPID: 进程拥有人;进程号;父进程的PID。
C: CPU使用率
PRI/NI: Primary/Nice的缩写,代表此进程被cpu执行的优先级,数值越小优先级越高。
ADDR/SZ/WCHAN:
TTY: 登陆者的终端机位置。若为远程终端则使用动态终端接口(pts/n)
TIME: 此进程实际花费CPU运行的时间。
CMD: 造成此程序的触发进程的命令。
ps -aux //或"ps aux",结果如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMEND
-----------------------------------------------------------------------------------------
root 1 0.0 0.0 2040 636 ? Ss 09:01 0:00 init[5]
apache 8683 0.0 0.9 83384 9992 ? Z 14:33 0:00 /usr/sbin/thhpd ##后面有说明也是僵尸进程。
各字段含义:
USER:进程拥有人
PID:进程ID,缺省时以PID这一列排序
%CPU:
%MEM:
VSZ:该进程使用掉的虚拟内存量
RSS:使用的真实内存的大小
TTY:"?"说明该进程不属于任何终端,在进入终端之前就已经运行了。
STAT:进程状态。Ss:睡眠。Z:僵尸。
START:该进程被触发启动的时间。
TIME:进程持续时间。
COMMEND:指哪个指令产生的进程。init(5)是所有进程的父进程,它的进程号永远是"1"。
top 动态查看进程的变化,结果如下:
结果如下:
top - 21:41:15 up 1:21, 2 users, load average: 2.10, 1.73, 1.06
Tasks: 131 total, 3 running, 126 sleeping, 0 stopped, 2 zombie
Cpu(s): 22.0%us, 64.6%sy, 6.6%ni, 0.0%id, 5.8%wa, 1.0%hi, 0.0%si, 0.0%st
Mem: 2937108k total, 1093084k used, 1844024k free, 127408k buffers
Swap: 2096472k total, 0k used, 2096472k free, 740744k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
-----------------------------------------------------------------------
4220 root 15 0 62888 20m 5804 S 27.1 0.7 1:40.98 Xorg
第一行:目前的时间是21:41:15
开机到现在所经过的时间:up 1:21
已经登入系统的用户人数:2 users
系统在1,5,15分钟的平均工作负载。代表在1,5,15分钟,系统平均要负责运行几个进程(工作)。batch计划任务在系统负载小于0.8时才会执行,它谈到的负
载就是这个负载。越小代表越闲置,若高于1得要注意系统压力过于繁复了。
第二行:目前进程总量:131
后面表示进程在什么状态。最后zombie这个数值,如果不是0,应好好看哪个进程变成僵尸了。
第三行:显示CPU的整体负载。
第四行:目前物理内存使用情况。
第五行:目前虚拟内存使用情况。
第六行:当在top进程中输入命令时显示状态的情况。
PID:进程ID
USER:进程拥有人
PR/NI:进程优先级
VIRT:
RES:
SHR:
S:
%CPU: 默认按CPU使用率排序。
%MEM:
TIME+:CPU使用时间的累加
COMMAND: