Linux 进程 - 第一部分
设置
有关设置工作区的更多背景信息,请查看本系列的第一个指南:Linux 中的用户和组管理。
流程
Linux 系统上运行的每个程序都作为进程进行管理。因此,它会启动、执行,最终终止或继续在后台运行。在后一种情况下,它通常被称为守护进程或系统服务。
此周期由内核自动管理,正常情况下无需用户干预。但是,如果进程的行为不符合预期,如果在更改其配置后需要重新启动,或者我们需要在进程执行之前或执行期间修改分配给它的系统资源,则可能需要我们采取措施。
在本节中我们将介绍以下进程管理命令:
ps:报告当前进程的快照
pstree:显示进程树
top:显示进程和正常运行时间信息
nice:运行修改了调度优先级的程序
renice:改变正在运行的进程的优先级
kill:终止进程
正常运行时间:系统运行了多长时间
Linux 中的进程简介
当一个进程被手动启动或在引导过程中启动时,它会被分配一个唯一的整数作为标识符,称为进程 ID 或简称 PID。如果进程A启动或启动了进程B,则称A是B的父进程,或称B是A的子进程。在这种情况下, A的 PID是B的父 PID(或 PPID)。
在现代 Linux 发行版中,内核在启动时启动的第一个进程 (PID=1) 称为systemd。此进程负责启动其他几个进程,然后依次启动更多进程,直到操作系统完全正常运行。
此外,每个进程都与启动它的用户相关联。此用户可以是实际的人,也可以是系统用于其操作的帐户。我们在 Linux 权限指南中讨论的内容也适用于此:进程只能访问其关联用户帐户可以利用的系统资源。换句话说,如果进程A由user1启动,并且该帐户对给定文件没有写入权限,则该进程也不允许写入该文件。
要显示系统中当前正在运行的所有进程的快照,我们将使用ps。如果不带参数执行,此命令将仅返回当前用户拥有的进程。使用aux或-ef选项可获得更多有用信息。由于两种情况下的输出都可能很长,我们可以将输出通过管道传输到诸如less 之类的分页器,以便更轻松地检查它:
ps aux | less
或者
ps -ef | less
正如预期的那样,您需要按字母q来退出 less 并退出上述任何命令。
上述命令返回的信息比我们通常感兴趣的要多。我们通常想要查看 PPID、PID、与进程关联的命令(或可执行文件的绝对路径)以及系统内存和 CPU 使用率的百分比。man ps中的“标准格式说明符”部分详细解释了这些字段(以及其他字段) 。
为了在ps的输出中仅查看这些字段,我们将使用-eo组合选项,后跟相应的格式说明符。例如,
ps -eo ppid,pid,cmd,%mem,%cpu | less
在定期检查或系统故障排除期间,确定哪些进程消耗的内存最多是很有用的。幸运的是,ps支持--sort选项。当与上述命令一起使用时,并通过管道传输到head而不是less,我们可以轻松获得最耗内存的进程列表,如下所示:
ps -eo ppid,pid,cmd,%mem,%cpu --sort -%mem | head -n 5
除此之外,上图显示snapd的 PID是 940,从 PPID=1 就可以看出,这个进程是由systemd启动的,也是目前消耗内存最多的进程。
--sort后面的-%mem中的减号表示输出应按降序排序。如果使用加号 (+),则输出将按升序排序,这是默认行为。
下一步
请继续阅读本系列的下一篇指南:Linux 进程 - 第 2 部分,以继续了解 Linux 管理。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~