进程管理

有 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 值时有几个注意事项:

  1. NI 范围是-2019. 2. 普通用户调整 NI 值的范围是 019,而且只能调整自己的进程。
  2. 普通用户只能调高 NI 值,而不能调低。
  3. 只有 root 用户才能设定进程 NI 为负值,而且可以调整任何用户的进程。
    默认情况下,进程的 NI 值为 0。进程的 NI 值可以通过 nice 命令和 renice 命令修改,进而
    调整进程的运行顺序。
    nice 命令可以给要启动的进程赋予 NI 值,但不能修改已运行进程的 NI 值。
    [root@localhost ~]# nice [ -n NI 值] 命令
    renice 命令可以在进程运行时修改其 NI 值,从而调整优先级。
    [root@localhost ~]# renice [优先级] PID