概念:
进程通俗来说,运行中的程序,
在linux下,知道程序要运行,首先就是将磁盘中相应的可执行文件加载到内存中,那么我们怎么知道他在内存中哪呢?这个时候就需要我们通过一个叫做进程标识符的东西找到它。类似于我们自己的身份证
进程分为临时进程和持久进程
临时进程
执行完命令,自动结束
持久进程
程序运行后,需要手动结束。
程序被加载为进程的示意图:
1、用户执行程序。
2、程序加载到内存中。
2.1、给程序一个临时的pid
2.2、查看执行的权限,如果用户没有执行权限,那么拒绝操作,如果有,开始加载程序执行的相关资料
2.3、确认临时的PID。
如何查看进程:
在Linux系统中,不像windows那样方便,可以通过快捷键调出图形化的任务管理器来管理进程。
静态查询:
重要 ps:
将某个时间点的程序运作情况截取下来
常用组合选项 -aux
a
关联的所有 process,通常与x一起使用,列出完整信息。
x
后台进程
u
有效使用者的相关联的进程
ajxf
可以让ps的结果以树状的格式显示出来。
举例:当我们新开一个通道编辑一个文件的时候,我们通过ps -aux可以查看到
查询特定进程用
ps -aux | grep sshd
查询sshd服务
ps查询结果各项解释:
USER
用户
PID
进程ID
%CPU
cpu占用率
%MEM
内存使用率
VSS
虚拟内存使用量
RSS
物理内存使用量
TTY
tty1-tty6 是本机上面的登入者程序。
pts/0 等等的,则表示为由网络连接进主机的程序。
如果显示?则表示与终端机无关。
STAT
进程的状态
START
进程启动的时间
TIME
累计消耗CPU的时间
COMMAND
表示哪个命令/程序运行的该进程
状态标识:
R
正在运行,或在队列中的进程
S
处于休眠状态
l
多进程
Z
僵尸进程
T
停止或者被追踪
<
高优先级
N
低优先级
s
包含子进程
位于后台的进程组
僵尸进程:
由于该进程已经执行完毕,但是父进程没有终止或其他原因导致该进程并没有真正的结束,所形成的进程称之为僵尸进程。
此进程对服务器的危害在于它会持续的消耗服务器资源,消耗量会越来越大。最终导致其他的进程无资源可用,服务器崩溃。
pstree:
选项:
A
各程序之间的连接以ASCII字符来连接
U
各程序之间的连接以UTF-8的字符来连接
u
列出每个process的所属账号名称
p
同时列出每个程序的进程的ID
举例:
#bash
pstree -up
注:使用哪个账户运行此命令,那么与其相关的进程则不会显示用户名
动态查询:
重要 top:
动态查询系统的进程状态。默认是3秒一更新。
选项:
-d
跟时间,可以修改top默认更新(刷新)的时间
-b :
以批次的方式执行 top ,还有更多的参数可以使用,通常会搭配数据流 重导向来将批次的结果输出成为档案;
-n Number:
与 -b 搭配,意义是需要进行几次 top 的输出结果;
-p :
指定某些个 PID 来进行观察监测而已;
案例:
每秒刷新一次top
bash
top -d 1
每2秒刷新一次top,以批次输出2次。
#bash
top -d 2 -n 2
每秒刷新一次top,以批次输出5次。
bash
top -d 1 -b -n 5 >> top.log # >>表示以追加的方式输出,>表示以覆盖的方式输出
交互式按键:(并不常用)
? :
显示在 top 当中可以输入的按键指令
P :
以CPU的使用资源排序显示
M :
以Memory的使用资源排序显示
N :
以PID来排序
T :
由该Process使用的CPU时间累积 (TIME+) 排序
q :
离开top软件的按键
重要 进程的管理:
单进程的管理:
kill:结束某个进程
语法:kill 信号量 PID
信号量:
-15:
以正常的程序方式终止一个进程!!!
-9 :
立刻强制终止一个进程!!!(!!不能强制结束系统级别的进程)
-2 :
代表由键盘输入 [ctrl] + c 同样的动作;
-1 :
对于sshd这样的守护进程,重新读取一次参数的配置文件 (类似 reload),如果进程为非守护进程,默认为终止进程; !!
多进程的管理:
killall:结束基于某个程序运行进程。
语法:killall 信号量 程序名/命令名
信号量:
-15:
以正常的程序方式终止一个进程!!!
-9 :
立刻强制终止一个进程!!!(!!不能强制结束系统级别的进程)
-2 :
代表由键盘输入 [ctrl] + c 同样的动作;
-1 :
对于sshd这样的守护进程,重新读取一次参数的配置文件 (类似 reload),如果进程为非守护进程,默认为终止进程; !!
案例:
结束所有httpd的进程(如果没有可以先安装一下yum install -y httpd)
bash
killall -9 httpd
结束所有java的进程
bash
killall -9 java