如何使用kill和killall在Linux中强制终止进程

时间:2020-01-09 14:16:47  来源:igfitidea点击:

如何在Linux中强制终止进程?
解决方法:您需要在Linux操作系统上使用kill命令来终止进程,而不必注销或重新启动服务器。
在本教程中我们学习了如何在Linux中强制终止进程。

如何在Linux中强制终止进程

  • 使用pidof命令查找正在运行的程序或应用程序pidoff appname的进程ID。
  • 使用PID杀死Linux中的进程:kill -9 pid
  • 要在Linux中使用应用程序名称终止进程:killall -9 appname

如何在Linux中终止进程

让我们尝试杀死一个称为firefox的进程。
要查找firefox pid,请运行以下任一命令:

pidof firefox
pgrep firefox
ps aux | grep firefox

找到要在Linux上杀死的进程(PID)

在Linux中,每个进程都会自动分配一个唯一的进程标识号(PID)。
在此示例中为27707。

在Linux命令行上强制终止进程

要在Linux上终止进程,请使用kill命令:

kill pid
kill -SIGKILL pid
kill 27707

默认情况下,发送名为SIGTERM的信号15以终止进程。
因此,以下所有操作都在做相同的事情:

kill -15 27707
kill -SIGTERM 27707
kill 27707

验证Firefox进程已消失:

pidof firefox
pgrep firefox
ps aux | grep firefox

有许多可以与kill一起使用的信号,但是,大多数用户只需要知道信号9和15。
要获取完整列表,请运行:

kill -l

输出示例:

1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX

如何使用SIGKILL在Linux中终止进程

有时-SIGTERM(-15)失败,应将更强的信号9(称为SIGKILL)用于强制杀死进程。
例如,以下命令将保证进程27707被杀死:

kill -9 27707
kill -SIGKILL 27707

Linux使用killall命令强制终止进程

除了使用PID之外,还可以使用killall或pkill命令按名称杀死任何进程。
语法为:

killall -9 app
pkill -9 app

killall命令向运行任何指定命令的所有进程发送信号。
例如,强制杀死所有nginx进程,运行:

killall -9 nginx

您可能需要以root用户身份运行killall命令,以杀死Linux上所有用户的进程:

sudo killall -9 nginx

通过确认也可以终止进程:

killall -9 vim

如何终止早于TIME的进程

是否想杀死一个已经运行了24小时以上的名为vim的进程?
尝试:

killall -o 24h appName
killall -o 24h vim

时间指定为浮点数,然后是单位。
单位是:

单位含义
s
m分钟
h小时
d
w
M
y

如何杀死比TIME还年轻的进程

让我们杀死一个运行了不到60分钟的进程:

killall -y 60 -9 appName
killall -y 60 -9 firefox

如何仅杀死以USER身份运行的进程

假设您想杀死以Hyman用户身份运行的vim进程,请运行:

killall -u {user} -9 vim
killall -u vim -9 vim