进程管理
有 3 个作用:
1.判断服务器的健康状态;2.查看系统中所有进程;3.杀死进程
进程监控
ps 命令
缺乏时效性最常用进程监控命令,可查看系统中所有运行进程的详细信息。
-a:显示一个终端的所有进程(除会话引线外)
-u:显示进程的归属用户及内存的使用情况
-x : 显示没有控制终端的进程
-l :以长格式显示更加详细的信息
-e:显示所有进程
建议记忆几个固定选项:
ps-aux :可以查看系统中所有的进程
ps-le : 可以查看系统中所有的进程,而且还能看到进程的父进程 PID 和进程优先级。
ps-l :只能看到当前 shell 产生的进程。
僵尸进程:一般是由于进程非正常停止或程序编写错误,因此子进程先于父进程结束,而
父进程又没有正确地回收子进程,从而子进程一直存在内存中。
pstree 命令
以树形结构显示程序和进程之间的关系
top 命令
可以动态地持续监听进程的运行状态。还提供了一个交互界面,用户可根据需要,人性化
地定制自己的输出,进而更清楚地了解进程的运行状态。
top 的输出内容是动态的,默认每隔 3 秒刷新一次。
缓存是在读取硬盘中数据时,把最常用的数据保存在 内存 的缓存区中,再次读取该数据时,
就不去 硬盘中 读取了,而在 缓存 中读取;缓冲是在硬盘写入数据时,先把数据放入 缓冲
区,然后再一起向硬盘写入,把 分散的写操作 集中进行,减少磁盘碎片和硬盘的反复寻道,
从而提高系统性能。
设置缓存是为了加快数据从硬盘读取的速度,而设置缓冲是为了加快数据写入硬盘的速度。
lsof 命令
ps 命令可以查询到系统中所有的进程,可以进一步知道这个进程到底在调用哪些文件。
list opened files -c 字符串:只列出以字符串开头的进程打开的文件。
-p PID:列出 PID 所指的进程打开的文件。
结束进程
进程的管理主要是指进程的关闭与重启。进程的关闭要依赖进程的信号。系统中可以识别的信号较多,可以使用命令kill-l”来查询。
常见的进程信号
1:sighup 是进程立即关闭,重新读取配置文件之后重启
9:sigkill 立即结束程序的运行;本信号不能被阻塞、处理和忽略;一般用于强制终止进程
15:sigterm 正常结束进程的信号,kill 命令的默认信号;如果进程已经发生了问题,那么
这个信号是无法正常结束进程的,这是可以尝试 sigkill 信号 9. 在使用 kill 命令来终止一个很消耗资源的进程的时候,最合适的信号值是 9。
kill
killall
pkill
进程优先级
在 Linux 系统中,有 2 个参数表示进程优先级:PRI 和 NI。priority,nice。数值越小代表该进程越优先被 CPU 处理。不过,PRI 值是由内核动态调整的,用户不能直接修改。只能通
过修改 NI 值来影响 PRI 值,间接地调整进程优先级。
PRI 和 NI 的关系:PRI(最终值)=PRI(原始值)+NI。
NI 值越小,进程的 PRI 就会越小,该进程就越优先被 CPU 处理。
修改 NI 值时有几个注意事项:
- NI 范围是-20
19. 2. 普通用户调整 NI 值的范围是 019,而且只能调整自己的进程。 - 普通用户只能调高 NI 值,而不能调低。
- 只有 root 用户才能设定进程 NI 为负值,而且可以调整任何用户的进程。
默认情况下,进程的 NI 值为 0。进程的 NI 值可以通过 nice 命令和 renice 命令修改,进而
调整进程的运行顺序。
nice 命令可以给要启动的进程赋予 NI 值,但不能修改已运行进程的 NI 值。
[root@localhost ~]# nice [ -n NI 值] 命令
renice 命令可以在进程运行时修改其 NI 值,从而调整优先级。
[root@localhost ~]# renice [优先级] PID