📜  杀死进程Linux

📅  最后修改于: 2020-12-07 08:13:45             🧑  作者: Mango

杀死进程Linux

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

Linux允许使用各种工具杀死错误的进程。为了终止进程,我们必须具有进程信息,例如PID,信号等

定位过程

要终止进程,我们必须访问进程信息。有多种命令可跟踪进程,例如toppspgreppidof。

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

通过“ top”命令查找进程

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

要找到进程,请执行以下命令:

top

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

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

通过ps和grep命令查找进程

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

a:显示所有用户的进程

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。

要查找进程的PID,请执行以下pidof命令:

pidof process_name

如果我们正在运行的进程的名称确切为chrome ,请执行以下命令以获取其PID。

pidof chrome

考虑以下输出:

杀死进程

现在,当我们跟踪流程时,我们可以终止流程。有多种用于杀死进程的命令,例如killkilltoppkill。

在终止进程之前,有必要知道我们可以终止哪些进程。以下是有关终止进程的一些要点:

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

使用killall命令杀死进程

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

killall firefox

上面的命令将终止进程并退出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

分钟:米

小时:h

天:d

周:w

个月:M

年:y

通过pkill命令杀死一个进程

有时我们不知道进程的确切名称;在这种情况下,pkill命令将是杀死进程的最有用的工具。它允许我们通过输入匹配的进程名称来杀死进程。例如,我们要杀死所有具有匹配名称java的进程,执行命令如下:

pkill java

它将关闭所有包含名称java的进程。同样,为了杀死firefox进程,请执行以下命令:

pkill fire

考虑以下输出:

如果pkill命令成功执行,将不会显示任何输出。

要通过pkill命令强制杀死进程,请按以下步骤执行:

pkill -SIGKILL process_name

we can also use -9 instead of -SIGKILL.

使用kill命令杀死进程

kill命令是杀死进程的最简单工具。我们只需要一个流程的PID。一旦我们获得了流程的PID,它就是一个简单的流程。要终止进程,请先执行kill命令,再执行PID。要找到进程的PID,请使用top或ps aux命令,如上所述。

要终止具有PID 5296的进程,请执行以下命令:

kill 5296

要强制终止进程,请使用-SIGKILL或-9选项:

kill -SIGKILL 5296

上面的命令将终止具有PID 5296的过程。

通过最高命令杀死进程

top命令使我们能够定位并终止进程。通过使用top命令终止进程是一个简单的过程。首先,执行top命令以定位进程,然后在命令运行时按“ k”键。它将使您陷入进程终止模式,输入要终止的进程的PID。考虑以下输出:

从上面的输出中可以看到,从进程列表上方可以选择一个“ PID信号/终止”来终止该进程。输入过程的PID,然后按ENTER键。

如果我们将PID保留为空白,它将终止最顶层的过程。

通过系统监视器终止进程

我们还可以通过Linux的称为系统监视器的图形环境终止进程。要通过系统监视器终止进程,请执行以下步骤:

步骤1:搜索或浏览系统监视器,按Enter键将其打开。

步骤2:它将列出您的Linux系统的所有正在运行的进程。考虑下图:

步骤3:浏览该进程,然后右键单击要终止的进程。

步骤4:选择“杀死”选项。另外,我们可以使用CTRL + K键将其杀死。