Linux 如何杀死进程

在操作系统中,有许多程序发生在计算机的RAM上。这些程序可以由操作系统本身或用户运行,这些程序称为“进程”。通常,一个进程有其生命周期,并在完成或我们手动退出时自行终止。但是,有时,由于进程调度错误或消耗大量 RAM 或 CPU,进程可能会挂起。在这种情况下,我们需要手动终止进程,以使我们的机器免于意外挂断。

Linux允许各种工具来杀死错误的进程。为了杀死一个进程,我们必须拥有进程信息,如PID、信号等。

定位进程

要终止进程,我们必须访问进程信息。有各种命令可以跟踪进程,例如top,ps,pgrep和pidof。

Linux 系统允许我们以各种方式杀死进程,例如通过其名称或进程 ID (PID) 杀死进程。因此,我们将根据需要使用上述命令。

通过“top”命令定位进程

top 命令用于列出 Linux 系统中所有正在运行的进程。它显示详细信息,例如PID,用户名,CPU使用率,时间,执行的命令等。

要查找进程,请按如下方式执行命令:

top  

上面的命令将显示正在运行的进程。请考虑以下输出:

我们可以通过在终端上上下滚动来浏览流程。top 命令提供了各种过滤器来过滤进程,例如进程名称、CPU 使用情况等。要从顶部退出,请按“q”键,它将带您返回终端。但是,我们也可以通过按 CTRL+ C 键来使用传统的退出选项。

通过 ps 和 grep 命令定位进程

ps 命令是显示进程信息的另一种方式。ps 命令一起使用的选项有很多,例如 aux,这意味着:

一个:为所有用户显示进程

u :显示特定用户使用的进程

x :显示所有进程。如果我们不指定 x 选项,它将不会显示 GUI 进程。

执行以下命令列出所有正在运行的进程:

ps aux 

输出结果:

ps 命令的输出类似于 top 命令。进程名称和 PID 在前两列中给出,进程名称在最右边的列中给出。

ps 命令比 top 命令更有用。它允许我们使用 grep 命令过滤输出。

假设我们要用用户名 javatpo+ 过滤所有进程,执行命令如下:

ps aux | grep javatpo+

上面的命令将通过grep命令过滤所有指定的进程。请考虑以下输出:

上面的输出一起提供了 ps 命令以及 grep 命令的功能。

通过 pidof 和 pgrep 命令定位进程

pidof 命令还允许我们找到进程。如果我们想按名称跟踪进程,pidof 命令将非常有用。当它与进程名称一起使用时,它会显示进程的 PID。

pidof process_name

如果我们正在运行的进程具有确切的名称 chrome,请按如下方式执行命令以获取它的 PID。

pidof chrome

输出结果:

终止进程

现在,当我们跟踪进程时,我们可以杀死一个进程。有多种命令可用于终止进程,例如 kill、kill、top 和 pkill。

在杀死一个进程之前,有必要知道我们可以杀死哪些进程。以下是关于杀戮过程的一些要点:

  • 如果您是普通用户,那么您只能杀死属于您的进程。不能终止其他用户正在运行的进程。top 和 ps aux 命令显示用户和相关进程。
  • 根用户可以终止所有进程。但是,我们也可以在任何命令之前添加 sudo,以 root 身份执行它。
  • 在 Linux 中,当一个进程被杀死时,一个特殊的信号会传输到进程。虽然Linux中有各种类型的信号,但在这种情况下,Linux处理的是SIGKILLS和SIGTERM信号。默认情况下。Linux 发送 SIGTERM,它会优雅地终止进程。如果你想强行杀死一个进程,请改用SIGKILL。
  • Linux 会保留进程的状态,直到它从系统中完全删除。因此,子进程将显示在进程列表中,直到删除父进程。
  • 如果一个进程处于“不间断的睡眠”状态,我们就无法杀死它。当进程执行输入/输出操作时,会发生这种情况。这种状态可以在 top 和 ps aux 命令的第8 列中看到。

通过 killall 命令终止进程

killall 命令是终止进程的最简单技术,如果您知道确切的进程名称,它未由任何其他用户运行,并且它不处于 Z 或 D 状态。在 kill all 命令中,无需定位进程或 PID。要终止进程,请按如下方式执行命令:

killall firefox 

上面的命令将终止进程并退出火狐浏览器。请考虑以下输出:

如果命令成功终止进程,则不会提供任何输出。

要强制终止进程,请使用 -SIGKILL 执行 killall 命令,如下所示:

killall -SIGKILL process_name  

我们也可以使用 -9 代替 -SIGKILL。

要以交互方式终止进程,请按如下方式执行命令:

killall -i process_name  

要以其他用户身份终止进程,请按如下方式执行命令

sudo killall process_name  

我们还可以使用 -o 和 -y 标志在固定时间段内终止进程。要终止已运行超过 20 分钟的进程,请执行以下命令:killall -o 20m process_name

要终止运行时间少于 20 分钟的进程,请执行以下命令:

killall -y 20m process_name 

使用时间段的缩写如下:

秒:s

分钟: m

小时: H

天数: D

周: W

月: M

年: y

热门文章

优秀文章