linux之进程管理(二)
一、查看进程
ps aux
查看系统所有的进程数据
ps -lA
查看所有系统的数据
ps axjf
连同部分进程树状态
ps参数
-A 显示所有进程,等效 -e
-a 不与terminal有关的所有进程
-u 有效用户相关的进程
-f 更详细的输出进程数据
-l 仅查看自己bash的相关进程
j 工作的格式
l 较详细的将PID的信息列出
x 较完善的输出信息(一般与-a一起使用)
eg:
我们可以看到有很多标志,它们具体的意思是什么呢?
F ===> 代表这个进程的权限
1表示此进程仅仅可以复制(fork),而不可执行(exec)
4表示此进程的权限为root
S ===> 代表这个进程的状态
R表示该进程正在运行中(Running)
S表示该进程处于睡眠状态(可被唤醒)
D表示该进程处于睡眠状态(不可被唤醒)
T表示该进程处于停止状态
Z表示该进程处于僵尸状态(进程已被终止,却无法被删除在内存外,CMD后面跟着<defunct>)
C ===> 表示CPU使用率
PRI/NI ===> 进程优先级(数值越小表示优先级越高)
ADDR ===> 该进程所在内存位置
SZ ===> 该进程占用内存大小
WCHAN ===> 该进程是否处于运行状态
TTY ===> 登录者的终端机位置(pts/n表示远程登录)
TIME ===> 使用掉的CPU时间
CMD ===> 造成此程序触发该进程的命令
使用ps aux后会显示如下内容
其中,各字段的意义如下:
USER ===> 该进程所属用户
PID ===> 进程唯一标识符
%CPU ===> 使用掉的CPU资源
%MEM ===> 使用掉的物理内存
VSZ ===> 该进程使用掉的虚拟内存量
RSS ===> 该进程占用的固定内存量
TTY ===> 表示该进程所属终端机(pts/0表示是远程登录所设进程)
STAT ===> 进程状态(同上)
START ===> 该进程被触发启动的时间
TIME ===> 该进程实际使用CPU运行的时间
COMMAND ===> 该进程的实际命令
pstree 以进程树的形式显示所有进程
参数列表
-A: 各进程树之间的连接以ASCII码字符来连接
-U:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误
-p:同时列出每个进程的PID
-u: 同时列出每个进程的所属账号名称
-c: 不使用精简法显示进程信息,即显示的进程中包含子进程和父进程
-n: 根据进程 PID 号来排序输出,默认是以程序名排序输出的
eg:
top 动态查看进程的变化
-d ===> 后面接妙数,指明整个进程界面的更新时间
-b ===> 以批次的方式执行top
-n ===> 与-b搭配,需要进行几次的top输出结果
-p ===> 制定某些个PID来进行检测
运行期间参数
? ===> 帮助
P ===> 以CPU使用资源排序
M ===> 以内存使用资源排序
N ===> 以PID排序
T ===> 以使用CPU累计时间排序
k ===> 给予某个PID一个信号
r ===> 给予某个PID重新制定一个nice值
q ===> 退出top功能界面
二、进程的管理
进程是通过信号量来进行管理的,那么有多少信号量呢?我们可以通过
kill -l
命令查看
eg:
那么如何传递信号量给某个进程呢
kill -signal PID
例如我们要杀掉某个进程
可以看到,top进程是被另一个终端给杀死的
killall -[iTe] [cmd]
根据命令名称(而不是PID或job number)来给予信号量
参数:
-i ===> 交互式,会提醒用户
-e ===> 后面接的命令要一致,但整个完整的命令不能超过15个字符
-I ===> 忽略大小写,可能带参数
eg:
三、进程优先级
进程的优先级是通过Priority与Nice值确定的
在进程信息中分别由PRI NI给出,但是PRI是系统内核自动调整的,我们用户是无法设置的。这时候,我们只能通过调整Nice的值来调整优先级了。一般来说
PRI(new) = PRI(old) + Nice
注意:
1.并不是你设置Nice为多少,系统就会给定PRI = PRI + Nice了,者需要你设置合理,并且通过系统的审核
2.nice的值的范围为 -20 ~19(值越小优先级越高)
3.root用户可以调整任何用户包括自己的Nice值(-20~19)
4.一般用户只能调整自己的Nice值(0~19)
5.一般用户只能给自己的Nice值增大(比如第一次为5,第二次只能大于5)。
使用方法
1.一开始执行程序就给予一个特定的Nice值
格式:
nice -n [-19~20] command
eg:
2.调整某个已经存在的PID的Nice的值
格式:
renice [number] PID
eg: