************************************如有写错或者不准之处还请指出************************************
1-1Linux进程介绍与进程管理的作用
Linux系统管理员面临的最复杂的任务之一就是追踪运行在系统中的程序。想要监看这些运行的 程序,那就要熟悉ps命令的用法。下面将介绍ps,pstree,top,kill,killall,pkill和nice等命令。
(1)进程简介
进程:是指当程序运行在系统上时,称之为进程。(或者另一种解释)
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
(2)进程管理的作用
1.判断服务器的健康状态 ----->在服务器中主要作用
2.查看系统中所有进程。
3.杀死进程 ------>服务器中不是很重要的作用。(注意:即使cpu占用99%及以上,也不能随意杀死进程)
1-2进程查看ps和pstree命令
Linux系统中使用的GNU ps命令支持3种不同的类型的命令行参数:
1.Unix风格的参数:前面加破折号;
2.BSD风格的参数:前面不加剖折号;
3.GNU风格的参数:前面双破折号。
详细的区别在此不再论述。(可以百度)
(1)查看所有进程
1.ps aux #查看系统中的所有进程,使用BSD风格
2.ps -le #查看系统中的所有进程,使用Linux风格
其中常用的选项:
-a:显示一个终端的所有进程,除了会话引线。
-u:显示进程的归属用户及内存的使用情况。
-x:显示没有控制终端的进程。
-l:长格式显示。显示更加详细的信息。
-e:显示所有进程,和-A作用一样。
3.ps -aux命令也是可以执行没问题的:加上一个“-”会有一行报错,但并不影响,加‘-’是Linux的风格。不加为BSD风格。
而使用ps aux则没有:
想知道详细信息我们可以man ps。(
(2)ps的输出
详细的ps命令的输出情况可以对照上面的图。
其中START列为双字符状态码,能比Unix风格输出的单字符状态码更详细。其中第一个字符采用了和Unix风格s列相同的值,表明进程是在休眠,运行还是等待等等。第二个字符进一步说明进程的特点。
第一个字符:
O:正在运行;
S:休眠;
T:停止;
R:可运行,正等待运行;
Z:僵化,进程已结束但父进程已不存在;
第二个字符:
<:该进程运行在高优先级上;
N:进程运行在低优先级上;
L:该进程有页面锁定在内存中;
s:该进程是控制进程(包含子进程);
l:该进程是多进程的;
+:该进成位于后台。
(3)查看进程树pstree命令
pstree [选项] #查看进程树
选项:-p :显示进程的PID
-u:显示进程的所属用户
具体运行:
完整的太长了...所以...
1-3进程查看top命令
(1)查看系统的健康状态
top [选项] #查看系统的健康状态
选项:-d:指定top命令每隔几秒更新(默认是3s)一般我们不需要更改。
-b:使用批处理模式输出。一般和‘-n’选项合用
-n 次数 :指定top命令执行的次数。一般和‘-b’选项合用
在top命令的交互中可以执行的命令(即top命令正在刷新的过程中按下下面的键,按esc键退出到top中):
?或者h:显示交互的帮助
P:已使用cpu使用率排序,默认是此项
M:以内存的使用率排序
N:以PID排序
q:退出top
*** 建议:承担高负载的服务器,如游戏,电影,视频等网站的服务器就,建议每周重启一次。
如果我们想看到全部的进程信息,可以使用-b -n选项合用。
如:ps -b -n 1 > top.log #批处理 每1s刷新一次,存到top.log文件中(其中>为输出重定向)
然后我们可以输入vi top.log命令就可以看到完整的进程信息了。
(2)top前五行解读
其中,buffers 缓冲是用来加速写入,cached缓存是用来加速读取的。
服务器健康评判最重要看的数据:1.load average:0.0,0.0,0.0;2.cpu空闲率(100%id);3内存空闲空间(6780k free);4.swap空闲内存第五行的(5424802k free)。
1-4杀死进程
1.kill命令(杀死单一进程)
kill -l #查看可用的进程信息,如果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
部分信号说明如下:
例如:kill -9 2236 #强制杀死2236号进程;
或者kill -KILL 2236 #强制杀死2236号进程
kill -HUP 1523 #吧1523号阿帕奇服务器进程重启一遍(这样重启阿帕奇服务器是平缓重启不会导致已经登录的用户掉线),注意一定要是进程ID号,不能为进程名
或者kill -1 1523 与上面一样的作用
注意:只有在该进程正常终止无效时,才执行强制终止杀死该进程,不能随意强制杀死进程。(避免出现用户体验很差。)
2.killall命令(杀死多个进程)
killall [选项] [信号] 进程名 #按照进程名杀死进程
选项: -i :交互询问是否要杀死该进程。
-I:忽略大小写
例如:killall -i -9 httpd #杀死httpd进程,注意killall后面一定要写进程名,来杀死一系列此进程。
3.pkill命令
pkill [选项] [信号] 进程号 #按照进程号终止进程
选项:-t 终端号 :按照终端号踢出用户
例如:pkill -9 -t pts/1 #强制杀死以pts/1虚拟终端登录的进程。
******若两个用户都是root超级用户,那么先下手为强。看谁先执行踢出对方命令。
w #使用w命令查看下本机已经登录的用户
例如:
1-5修改进程优先级
(1).进程优先级介绍
Linux操作系统是多用户,多任务操作系统,Linux系统中通知运行着非常多的进程,但是cpu在同一时钟周期内只能运算一个指令。那么进程优先级决定了每一个进程的处理先后了。
ps -le #查看进程
其中,PRI代表Priority,NI代表Nice,这两个值都是代表优先级,数字越小优先级越高。
注意:PRI值是 无法修改的(即使你是root用户),而NI值是可以修改的,所以我们是通过修改NI值来改变优先级的。PRI与NI值之和决定优先级。
修改NI值是时有几个要注意的事项:
1.NI值的范围是-19到20;
2.普通用户调整NI值的范围是0到19,而且只能调整自己的进程;
3.普通用户只能调高NI值,而不能降低NI值,如原本NI值为0,则只能调整值为大于0;
4.root用户才能设定进程NI值为负数,而且可以调整任何用户任何进程;
5.PRI(最终值)=PRI(原始值)+NI;
6.用户只能修改NI值,而不能修改PRI值。
2.nice命令(修改NI值)
nice [选项] 命令 #nice命令可以给新执行的命令直接赋予NI值,但是不能修改已经已经存在的进程值。(若要修改已经存在的用renice命令)
选项:-n NI值 :给命令赋予NI值
例如:
service httpd stop #先暂停阿帕奇服务器
nice -n -5 service httpd start #在给httpd赋予NI值为5
renice [优先级] PID #renice命令是修改已经的进程NI值
例如:renice -10 2125 #
注意:进程优先级的修改是认为感观无法察觉的 ,除非是做Linux内核裁剪,或者嵌入式开发等可以感觉到。
最后,不懂的命令都是可以通过man 命令进行查询Linux官方文档。
************************************如有写错或者不准之处还请指出************************************
原文地址:https://www.cnblogs.com/exproration/p/10498887.html