linux中kill,pkill 和killall 杀死进程

杀死命令用法

的通用语法kill command是:

  1. # kill [signal or option] PID(s)

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

  1. Signal Name Signal Value Behaviour
  2. SIGHUP 1 Hangup
  3. SIGKILL 9 Kill Signal
  4. SIGTERM 15 Terminate

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

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

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

  1. # ps -A
输出
  1. PID TTY TIME CMD
  2. 1 ? 00:00:01 init
  3. 2 ? 00:00:00 kthreadd
  4. 3 ? 00:00:00 migration/0
  5. 4 ? 00:00:00 ksoftirqd/0
  6. 5 ? 00:00:00 migration/0
  7. 6 ? 00:00:00 watchdog/0
  8. 7 ? 00:00:01 events/0
  9. 8 ? 00:00:00 cgroup
  10. 9 ? 00:00:00 khelper
  11. 10 ? 00:00:00 netns
  12. 11 ? 00:00:00 async/mgr
  13. 12 ? 00:00:00 pm
  14. 13 ? 00:00:00 sync_supers
  15. 14 ? 00:00:00 bdi-default
  16. 15 ? 00:00:00 kintegrityd/0
  17. 16 ? 00:00:00 kblockd/0
  18. 17 ? 00:00:00 kacpid
  19. 18 ? 00:00:00 kacpi_notify
  20. 19 ? 00:00:00 kacpi_hotplug
  21. 20 ? 00:00:00 ata/0
  22. 21 ? 00:00:00 ata_aux
  23. 22 ? 00:00:00 ksuspend_usbd
  1. # pidof mysqld
输出
  1. 1684

另一种方法是

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

如何在 Linux 中杀死进程

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

  • 用户可以杀死他的所有进程。
  • 一个用户不能杀死另一个用户的进程。
  • 用户不能终止系统正在使用的进程。
  • root 用户可以杀死系统级进程和任何用户的进程。

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

  1. # pgrep mysql
输出
  1. 3139

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

  1. kill -9 3139

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

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

  1. # kill -SIGTERM 3139

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

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

  1. # pkill mysqld

一次杀死多个进程。

  1. # kill PID1 PID2 PID3
  2. or
  3. # kill -9 PID1 PID2 PID3
  4. or
  5. # kill -SIGKILL PID1 PID2 PID3

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

  1. # killall [signal or option] Process Name
  2. Or
  3. # pkill Process Name

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

  1. # killall mysqld
  2. OR
  3. # pkill mysqld

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

  1. # service mysql status
  2. OR
  3. # systemctl status mysql
  4. # pgrep mysql
  5. # ps -aux | grep mysql

返回笔记列表
入门小站