第七章 管理与监控Linux进程
查看系统上运行的进程
使用jobs控制进程
发送信号结束和控制进程
监控资源使用情况和系统负载,调整进程优先级
7.1 进程
什么是进程
了解进程状态
查看进程列表
进程, 一个可执行的程序被执行之后的实例,包括:
分配内存的地址空间
进程的运行身份和权限的安全属性
一个或多个线程
进程状态
进程的运行环境,包括:
局部和全局变量
当前的调度上下文
已分配给进程使用的系统资源,例如文件描述符、网络端口等
pid,ppid
一个进程可以在自己的地址空间内创建一个新的子进程,子进程可以继承父进程的环境变量
每个进程都会有自己的进程id(pid),对应的父进程ID叫ppid.在rhel7里,所有的进程都是由systemd这个父进程派生出来的子进程。
子进程在运行自己的程序代码的时候,父进程往往会进入到睡眠状态。
进程状态: man 7 signal
R 进程运行
S 可中断睡眠状态
D 不可中断睡眠状态
K 可被结束的不可中断睡眠状态
Z 僵尸进程
X 进程已经退出
T 进程被暂停
列出进程:
ps aux
ps lax
ps -ef
7.2 使用jobs控制进程
前台进程 firefox,后台进程 frefox &
&
jobs 查看后台进程,ps j
ctrl + Z 从前台放到后台并且暂停 , ctrl +c , ctrl + B
bg %id 从停止进入运行,fg
[student@localhost Desktop]$ sleep 1000 & 加一个后台进程
[2] 5192
[student@localhost Desktop]$ jobs 查看所有后台进程
[1]- Running firefox &
[2]+ Running sleep 1000 &
[student@localhost Desktop]$ fg %1 将1进程弄到前台,ctrl +c后就关闭了火狐浏览器
=================================================
[student@localhost Desktop]$ fg //%2 将2进程放入后 台
sleep 1000
^Z // ctrl + Z 从前台放到后台并且暂停
[2]+ Stopped sleep 1000
[student@localhost Desktop]$ jobs 查看
[2]+ Stopped sleep 1000
[3]- Running firefox &
[student@localhost Desktop]$ bg %2 //从停止进入运行
[2]+ sleep 1000 &
[student@localhost Desktop]$ jobs
[2]- Running sleep 1000 &
[3]+ Running fi
7.3 使用信号管理进程
学会使用kill命令发送信号与进程通信
定义守护进程的角色
结束用户会话和进程
常见信号列表:
数字信号信号别名作用
1HUP挂起信号,往往可以让进程重新配置
2INT中断信号,起到结束进程的作用,和ctrl + c 的作用一样
3QUIT让进程退出,结果是进程退出
9KILL直接结束进程,不能被进程捕获
15TERM进程终止,这是默认信号
18CONT被暂停的进程将继续恢复运行
19STOP暂停进程
20TSTP用户停止请求,作用类似于ctrl + z 把进程放到后台并暂停
kill命令发送信号
kill PID
kill -signal PID
kill -l
killall 可以通过模糊匹配,同时给多个进程发送信号
$ killall command_pattern
$ killall -signal command_pattern
# killall -signal -u username command_pattern
pkill 类似killall
$ pkill command_pattern(命令可以模糊匹配)
$ pkill -signal command_pattern
# pkill -G GID command_pattern
# pkill -P PPID command_pattern
# pkill -t terminal_name -U UID command_pattern
w -f 查看系统上的所有用户会话情况, -f 输出用户来自哪里
pgrep -l -u bob 列出bob用户的所有进程,-l输出pid
w -h -u 查看bob用户会话情况
pkill -t tty3 把tty3终端下的所有进程结束,除了bash本身
pkill -9 -t tty3 把tty3终端下的所有进程结束,并且bash也结束(用户被强制退出)
pstree -p bob 列出所有属于bob的进程树,-p输出pid
pkill -P pid 匹配所有父进程pid(ppid)为该pid的所有进程
7.4 监控进程活动
系统负载的计算和意义
进程以及子进程和线程产生的计算指令都会让cpu执行,产生请求的这些进程组成"运行队列",等待cpu执行,这个队列就是系统负载
系统负载是所有cpu的运行队列的总和.
假设当前计算机有4个核心的cpu,当前的负载是 2.92 // 平均下来是2.92个进程被处理
cpu1cpu2cpu3cpu4
2.94/4(个cpu核心) = 73%的cpu资源被使用,剩下27%的cpu计算资源是空想的
假设当前的计算有2个核心的cpu,当前的负载是2.92
2.92/2 = 146% 已经验证超过了cpu的处理能力
top
常见指令
h查看帮出
1输出每个cpu的使用情况 再按一下就不输出
s设置刷新时间
b高亮现实处于R状态的进程
M按内存使用百分比排序输出
P按CPU使用百分比排序输出
kkill掉指定PID进程
q退出
h查看帮出
========================================================================================
网上找的内容:
A,Shell支持作用控制,有以下命令:
1. command& 让进程在后台运行
2. jobs 查看后台运行的进程
3. fg %n 让后台运行的进程n到前台来
4. bg %n 让进程n到后台去;
PS:"n"为jobs查看到的进程编号.
B. 命令详解
fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的
一。& 最经常被用到
这个用在一个命令的最后,可以把这个命令放到后台执行
二。ctrl + z
可以将一个正在前台执行的命令放到后台,并且暂停
三。jobs
查看当前有多少在后台运行的命令
四。fg
将后台中的命令调至前台继续运行
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
五。bg
将一个在后台暂停的命令,变成继续执行
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
#Linux下使用Shell命令控制任务Jobs执行
下列命令可以用来操纵进程任务:
ps 列出系统中正在运行的进程;
kill 发送信号给一个或多个进程(经常用来杀死一个进程);
jobs 列出当前shell环境中已启动的任务状态,若未指定jobsid,则显示所有活动的任务状态信息;如果报告了一个任务的终止(即任务的状态被标记为Terminated),shell 从当前的shell环境已知的列表中删除任务的进程标识;
bg 将进程搬到后台运行(Background);
fg 将进程搬到前台运行(Foreground);
7.4 监控进程活动 笔记
uptime 告诉我们开了几个小时,当前时间,有几个用户,平均负载 1 5 15分钟的平均负载
如何查看CPU
[student@localhost Desktop]$ cat /proc/cpuinfo
[student@localhost Desktop]$ grep "model name" /proc/cpuinfo
model name: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
model name: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
top
top - 20:16:13 up 3:03, 2 users, load average: 0.00, 0.02, 0.05
Tasks: 476 total, 3 running, 472 sleeping, 1 stopped, 0 zombie僵尸进程
%Cpu(s): 4.2 us, 1.5 sy, 0.0 ni, 94.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1003456 total, 935516 used, 67940 free, 400 buffers
KiB Swap: 0 total, 0 used, 0 free. 266436 cached Mem 虚拟内存,即交换分区,物理内存不足时会占用
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 按CPU的使用百分比来输出的。
1028 root 20 0 207060 37700 8252 R 5.9 3.8 0:24.00 Xorg
2356 student 20 0 1566812 166876 37648 S 4.0 16.6 3:10.96 gnome-she+
2711 student 20 0 619712 18672 12164 S 3.3 1.9 0:05.22 gnome-ter+
5965 student 20 0 123920 1920 1148 R 0.7 0.2 0:00.33 top
top
常见指令
h查看帮出
1输出每个cpu的使用情况 再按一下就不输出
s设置刷新时间
b高亮现实处于R状态的进程
M按内存使用百分比排序输出
P按CPU使用百分比排序输出
kkill掉指定PID进程
q退出
h查看帮出