流程是操作系统的核心部分,作业或任务由流程完成。进程为单个或多个任务运行以完成或服务很长时间。终止进程是一种结束进程并停止进程的操作。这个过程可以用不同的方法以不同的方式终止。在本教程中,我们将研究如何列出和终止Linux发行版中的进程,如Ubuntu、Debian、Mint、Kali CentOS、Fedora、RHEL等。
列出正在运行的进程
进程通常用它们的进程名或进程ID标识。为了终止进程,通常使用它们的标识符名称和PID。因此,首先我们将使用不同的命令列出正在运行的进程及其相关信息。
首先也是最流行的命令是 ps
命令列出正在运行的进程。我们还将提供 aux
参数,以便列出所有进程及其相关信息。
$ ps aux
![图片[1]-Linux kill命令教程-cppku-C++库](https://www.cppku.com/wp-content/uploads/2020/09/linuxtect_image-22.png)
top命令是一个流行的命令,可以用来监视正在运行的进程和资源使用情况。top命令也可用于列出进程。top还根据进程的名称为进程提供过滤机制。
$ top
![图片[2]-Linux kill命令教程-cppku-C++库](https://www.cppku.com/wp-content/uploads/2020/09/linuxtect_image-23.png)
根据进程名称筛选并列出进程
为了杀死进程,我们应该提供它的进程ID或名称,但是使用进程ID是最可靠的方法。因为按名称终止进程会产生冲突,在这些冲突中,相似的名称或相同的名称可以终止不同的进程。我们已经描述了ps和top命令来获取进程名或进程ID,但是正如您所看到的,将会有很多输出。我们可以使用grep命令来相应地过滤进程ID。在下面的示例中,我们将使用grep命令对apache2进程进行grep或过滤。
$ ps aux | grep apache
![图片[3]-Linux kill命令教程-cppku-C++库](https://www.cppku.com/wp-content/uploads/2020/09/linuxtect_image-24.png)
用pidof命令列出进程ID
Linux还提供 pid
的命令,它将搜索给定的进程并打印其进程ID。我们只提供进程名称并打印所有实际的进程ID。
$ pidof firefox
带PID的Kill进程
我们可以使用kill命令来终止进程。kill命令有以下语法,我们应该在其中提供进程ID或PID。或者,我们可以为不同的信号提供一些选项。
kill [OPTION] PID
在下面的示例中,我们将终止进程ID为32060的进程。
$ kill 32060
当提供的进程成功终止时,控制台中将不会有任何输出。如果有问题,一些警告或错误将被打印到控制台。例如,如果进程由其他用户拥有,而我们没有所需的权限 Operation not permitted
将打印错误。
相关文章: 如何在Vim/Vi中保存文件并退出?
终止多个进程
kill命令可用于在一次执行中杀死多个进程。我们将通过用空格分隔多个进程ID来提供它们。
$ kill 123 2345 1234
用top命令终止进程
top命令也可以用来终止进程。首先,我们将运行top命令,它将列出当前正在运行的进程。那我们就按按钮 k
键,它是kill的缩写形式。我们将被要求提供PID或进程ID。只需键入要终止的进程ID,然后按 Enter
钥匙。
![图片[4]-Linux kill命令教程-cppku-C++库](https://www.cppku.com/wp-content/uploads/2020/09/linuxtect_image-25.png)
用kill命令向进程发送信号
进程使用信号来彼此和操作系统进行通信。实际上,终止进程将向进程发送SIGHUP信号。也有不同的信号可以用来以优雅的方式终止进程。使用 -l
选项将列出信号及其值。
$ kill -l
![图片[5]-Linux kill命令教程-cppku-C++库](https://www.cppku.com/wp-content/uploads/2020/09/linuxtect_image-26.png)
强制杀死进程
进程可以在没有任何预防措施和限制的情况下被强制终止。一种进程,如果由于内部问题或限制而不能响应正常的终止信号,则通常被强制终止。强制终止进程可能会导致某些数据丢失或故障。你可以用 -9
或 -SIGKILL
或 -TERM
发出信号以强制终止进程。
杀戮 -9
强行发出信号。
$ kill -9 1907
使用 -SIGKILL
强行发出信号。
$ kill -SIGKILL 1907
使用 -SIGINT
与CTRL+C键盘快捷键相等的信号。
$ kill -SIGINT 1907
使用 -SIGTERM
强行发出信号。这将优雅地停止该过程。
$ kill -SIGTERM 1907