Linux 操作系统带有一个kill 命令来终止进程。该命令可以继续运行服务器,而无需在重大更改/更新后重新启动。
Kill命令向当前正在运行的进程发送一个信号,一个指定的信号。kill 命令可以通过多种方式直接执行或从 shell 脚本执行。
使用/usr/bin中的kill命令为你提供了一些额外的功能,可以使用pkill按进程名称杀死进程。本文惠主机www.idccoupon.com简单来介绍下。
Kill命令用法
kill 命令的常用语法是:
# kill [signal or option] PID(s
对于kill 命令,信号名称可以是:
Signal Name Signal Value BehaviourSIGHUP 1 Hangup
SIGKILL 9 Kill Signal
SIGTERM 15 Terminate
从上面的行为可以清楚地看出,SIGTERM是杀死进程的默认和最安全的方法。SIGHUP是一种比SIGTERM更不安全的终止进程的方法。SIGKILL是上述三种方法中最不安全的一种,即杀死一个进程而终止一个进程而不保存。
为了杀死一个进程,我们需要知道一个进程的进程 ID。进程是程序的一个实例。每次程序启动时,都会自动为该进程生成一个唯一的PID 。
Linux中的每个进程 都有一个pid。Linux 系统启动时启动的第一个进程是-init 进程,因此在大多数情况下,它被分配了一个值“ 1 ”。
init是主进程,不能这样被杀死,这样可以保证主进程不会被意外杀死。Init决定并允许自己被杀死,其中 kill 只是一个关闭请求。
列出所有正在运行的 Linux 进程
要了解所有进程及其分配的pid,请运行以下ps 命令。
#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 khelper
10 ? 00:00:00 netns
11 ? 00:00:00 async/mgr
12 ? 00:00:00 pm
13 ? 00:00:00 sync_supers
14 ? 00:00:00 bdi-default
15 ? 00:00:00 kintegrityd/0
16 ? 00:00:00 kblockd/0
17 ? 00:00:00 kacpid
18 ? 00:00:00 kacpi_notify
19 ? 00:00:00 kacpi_hotplug
20 ? 00:00:00 ata/0
21 ? 00:00:00 ata_aux
22 ? 00:00:00 ksuspend_usbd
如何使用语法自定义上述输出为 ' pidof process '。
# 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=mysql
mysql 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.sock
root 20844 0.0 0.0 4356 740 pts/0 S+ 21:39
0:00 grep mysqld
如何在Linux中杀死一个进程
接下来在继续执行kill 命令之前,需要注意一些要点:
用户可以杀死他的所有进程。
一个用户不能杀死另一个用户的进程。
用户不能杀死系统正在使用的进程。
root 用户可以杀死系统级进程和任何用户的进程。
执行相同功能的另一种方法是执行“ pgrep ”命令。
# pgrep mysql
样本输出如下:
3139
要杀死上述进程PID,请使用 kill 命令,如图所示。
kill -9 3139
上面的命令将杀死pid = 3139的进程,其中PID是进程的数值。
执行相同功能的另一种方法可以重写为。
# kill -SIGTERM 3139
同样,“ kill -9 PID ”类似于“ kill -SIGKILL PID ”,反之亦然。
如何在 Linux 中使用进程名称杀死一个进程
你必须知道进程名称,在杀死和输入错误的进程名称之前可能会搞砸。
# pkill mysqld
一次杀死多个进程。
# kill PID1 PID2 PID3
或者
# kill -9 PID1 PID2 PID3
或者
# kill -SIGKILL PID1 PID2 PID3
如果一个进程有太多实例和许多子进程,我们有一个命令 ' killall ' 或pkill。这两个是该系列中唯一的命令,它以进程名称作为参数代替进程号。
句法:
# killall [signal or option] Process Name
或者
# pkill Process Name
要杀死所有mysql 实例以及子进程,请使用以下命令。
# killall mysqld
或者
# pkill mysqld
当然,你始终可以使用以下任何命令验证进程的状态是否正在运行。
# service mysql status
或者
# systemctl status mysql
# pgrep mysql
# ps -aux | grep mysql