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
热门文章
优秀文章