linux中kill,pkill和killall杀死进程

390 阅读3分钟

杀死命令用法

的通用语法kill command是:

# kill [signal or option] PID(s)

为一个kill command一种Signal Name可能:

Signal Name  Signal Value   BehaviourSIGHUP         1          HangupSIGKILL         9          Kill SignalSIGTERM         15          Terminate

从上面的行为显然,SIGTERM是杀死进程的默认和最安全的方法。SIGHUP是一种比杀死进程更不安全的方式SIGTERM.SIGKILL是上面三种中最不安全的方式,kill 掉一个进程,不保存就终止进程。

为了杀死进程,我们需要知道进程的进程ID使用PID查找Linux进程名称。一种Process是一个程序的实例。每次程序启动时,自动生成一个唯一的PID

列出所有正在运行的 Linux 进程

# ps -A
输出
PID TTY         TIME CMD 1 ?        00:00:01 init 2 ?        00:00:00 kthreadd 3 ?        00:00:00 migration/0 4 ?        00:00:00 ksoftirqd/0 5 ?        00:00:00 migration/0 6 ?        00:00:00 watchdog/0 7 ?        00:00:01 events/0 8 ?        00:00:00 cgroup 9 ?        00:00:00 khelper10 ?        00:00:00 netns11 ?        00:00:00 async/mgr12 ?        00:00:00 pm13 ?        00:00:00 sync_supers14 ?        00:00:00 bdi-default15 ?        00:00:00 kintegrityd/016 ?        00:00:00 kblockd/017 ?        00:00:00 kacpid18 ?        00:00:00 kacpi_notify19 ?        00:00:00 kacpi_hotplug20 ?        00:00:00 ata/021 ?        00:00:00 ata_aux22 ?        00:00:00 ksuspend_usbd

# pidof mysqld
输出
1684

另一种方法是

# ps aux | grep mysqld
输出
root      1582  0.0  0.0   5116  1408 ?        S    09:49   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysqlmysql     1684  0.1  0.5 136884 21844 ?        Sl   09:49   1:09 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sockroot     20844  0.0  0.0   4356   740 pts/0    S+   21:39   0:00 grep mysqld

如何在 Linux 中杀死进程

在我们提前执行之前kill command, 一些需要注意的要点:

  • 用户可以杀死他的所有进程。

  • 一个用户不能杀死另一个用户的进程。

  • 用户不能终止系统正在使用的进程。

  • root 用户可以杀死系统级进程和任何用户的进程。

执行相同功能的另一种方法是执行pgrep命令。

# pgrep mysql

输出
3139

杀掉上面的进程PID,使用如图所示的kill命令。

kill -9 3139

上面的命令将杀死具有pid=3139

另一种执行相同功能的方法可以重写为。

# kill -SIGTERM 3139

kill -9 PID类似于kill -SIGKILL PID反之亦然。

如何在 Linux 中使用进程名称杀死进程

# pkill mysqld

一次杀死多个进程。

# kill PID1 PID2 PID3or# kill -9 PID1 PID2 PID3or# kill -SIGKILL PID1 PID2 PID3

如果一个进程有太多实例和许多子进程,我们有一个命令killall或者pkill.这两个是该系列中唯一的命令,它将进程名称作为参数代替进程编号。

# killall [signal or option] Process NameOr# pkill Process Name

杀死所有mysql instances连同子进程,使用如下命令。

# killall mysqldOR# pkill mysqld

可以使用以下任何命令来验证进程的状态。

# service mysql statusOR# systemctl status mysql# pgrep mysql# ps -aux | grep mysql

以上就是本次分享的全部内容,现在想要学习编程的小伙伴欢迎关注PHP开源社区公众号,获取更多技能与教程。