Linux 进程管理:终极指南
通过了解 Linux 中的进程管理来提高系统性能和安全性。
在基于 Linux 和 Unix 的操作系统中,正在运行的命令实例称为进程。您可以通过唯一的进程 ID 来识别每个进程。 Linux 提供了命令行工具来有效地列出、管理和监视这些进程。
您可以使用这些工具来确定每个进程的优先级,或将它们置于后台或前台以有效管理系统资源。
本 Linux 进程管理指南包括 ps、kill、renice 等工具以及其他帮助系统管理员管理和列出进程的命令。
使用 ps 命令列出进程
用于列出 Linux 上当前正在运行的进程的最古老且最常用的命令行实用程序是 ps。尽管 top 命令是管理和列出系统进程的另一种交互式且面向屏幕的方式,但 ps 还显示其他信息,例如每个进程消耗的资源。
由于多用户环境,Linux 中的每个进程都与单独的用户和组帐户关联。因此,带有进程详细信息的帐户信息可帮助您访问进程可以使用的系统资源。
例如,以超级用户权限运行的进程可以比普通用户访问更多的系统资源,这就是 ps 帮助系统管理员的地方。
以下输出是列出进程及其用户名、已用时间以及相关内存和 CPU 消耗的示例:
您还可以注意显示正在运行的进程的状态的 STAT 列。 R代表进程当前正在运行,S是休眠进程,带有加号表示前台操作。
可以列出当前用户的所有进程,如下:
ps ux | less
列出所有用户的进程:
ps aux | less
使用系统监视器管理进程
系统监视器提供了显示和管理进程的图形方式。要启动系统监视器,请转至应用程序 > 系统监视器。切换到进程选项卡以查看所有正在运行的进程。
默认情况下,它按字母顺序显示当前用户的进程。您可以通过单击任何列标题对进程列表重新排序。此外,您还可以单击%CPU和内存标题来查看消耗更多处理能力和内存的进程。
系统监视器允许您以多种方式管理进程,这意味着您只需右键单击进程名称即可停止、终止、继续、结束和更改进程优先级。
对于不知道如何使用命令行实用程序的 Linux 新用户来说,它是最好的首选工具。
使用后台/前台进程
有时您必须仅使用命令行通过网络访问 Linux 系统。这限制了多个活动程序的有效管理。但是 shell 允许您通过将程序切换到后台和前台来管理程序。
如何启动后台进程
要在继续在 shell 中工作的同时启动程序,请运行命令,停止它并使用 Ctrl + Z 将其置于后台。要直接在后台运行程序,请在命令末尾添加与号 (&),如下所示:
find /usr > /tmp/allusrfiles &
记下作业编号和进程 ID。请记住,您无法在后台运行需要终端输入的命令。
您可以使用jobs命令来显示在后台运行的所有程序/命令或您停止的程序/命令(使用Ctrl + Z)。
jobs
如何恢复前台和后台进程
要继续您放在后台的作业,请使用 fg 命令,它将将该命令带到前台。
fg %<job-number>
同样,如果您停止了某个命令在后台运行,您可以使用 bg 命令在后台再次重新启动它,如下所示:
bg %<job_number>
杀死 Linux 上的进程
正如系统监视器等图形工具允许您终止、停止和继续进程一样,您也可以使用 kill 和 killall 等命令行工具发送信号到一个正在运行的进程。
除了简单地终止进程之外,kill 命令还有助于发送不同的信号来管理进程行为。
您可以使用名称或数字来使用信号。
kill -signalnumber <process-id>
kill -signalname <process-id>
例如,以下命令将 SIGKILL 信号发送到 PID 为 1987 的进程:
kill -9 1987
kill -SIGKILL 1987
最常用的过程信号是:
Option | Description |
SIGKILL (9) | Kills the process immediately |
SIGTERM (15) | Terminates the process |
SIGSTOP (19/28/25) | Stops the process |
SIGCONT (19/28/25) | Continues the process after it stops |
SIGUP (1) | Tells the process to read its configuration file |
请注意,不同的进程对这些信号的响应不同,但它们无法停止 SIGSTOP 和 SIGKILL 信号。键入以下命令以了解有关这些信号的更多信息:
man 7 signal
Linux 上的重新调整进程
Linux 内核通过考虑用户帐户权限来确定运行进程的优先级并分配系统资源。内核还考虑另一个因素,即每个正在运行的进程的“nice”值。
进程的默认nice值为零,但是,您可以将范围设置为-20到19之间。有关使用nice和renice值设置进程优先级的一些事实是:
低nice值的进程有更多的CPU资源访问权
普通用户只能重新确定其流程的优先级
普通用户只能设置-20到19之间的值,并且只能设置更高的值
超级用户可以将任何人的进程设置为任何值(高或低)
Linux 上的进程管理变得简单
多用户环境有多个进程,需要足够的系统资源管理知识,以防止出现瓶颈和系统限制。该任务的一部分包括通过在后台/前台运行进程、终止或重新调整进程来管理进程。
您还可以了解 top 命令实用程序来显示和排序进程,并学习终止 Linux 上无响应的进程。