Linux 进程管理全解析
一、理解父子进程关系
在 Linux 系统中,当一个进程从 shell 启动时,它会成为该 shell 的子进程。这种父子进程关系在进程管理中非常重要,父进程负责管理子进程。因此,当 shell 停止时,从该 shell 启动的所有进程都会被终止,这为终止不再需要的进程提供了一种简单的方法。
不过,在后台启动的进程在其父 shell 被终止时不会被杀死。若要终止这些后台进程,需要使用 kill
命令。
值得注意的是,在早期的 Bash shell 版本中,后台进程在其父 shell 终止时也会被杀死。为避免这种情况,可以在启动进程时在前面加上 nohup
命令。但在 RHEL 9 中,不再需要使用 nohup
来实现这一目的。如果父进程在子进程仍处于活动状态时被杀死,子进程将成为 systemd
进程的子进程。
二、使用常见命令行工具进行进程管理
在 Linux 服务器上,通常会运行许多进程。在普通的服务器或桌面计算机上,通常会有超过 100 个活动进程。由于活动进程众多,可能会出现问题。此时,了解如何停止非交互式进程或如何调整这些进程的优先级,以便为其他进程提供更多系统资源就显得尤为重要。
(一)理解进程和线程
在 Linux 中,任务通常作为进程启动。一个进程可以启动多个工作线程。使用线程是有意义的,因为如果进程非常繁忙,线程可以由机器中可用的不同 CPU 或 CPU 核心处理。作为 Linux 管理员,无法管理单个线程,但可以管理进程。多线程