linux命令行杀死进程,linux强制杀死进程命令

linux命令行杀死进程,linux强制杀死进程命令,Linux下强制杀死进程的方法详解

在本文中,我们将与您分享在Linux下杀死进程的相关方法和技巧。感兴趣的朋友可以参考一下。

常规篇:

首先,用ps检查流程,如下:

$ ps -ef

……

smx 1822 1 0 11:38?00:00:49 gnome终端

smx 1823 1822 0 11:38?00:00:00 gnome-pty-助手

smx 1824 1822 0 11:38 pts/0 00:00:02 bash

smx 1827 1 4 11:38?00:26:28/usr/lib/Firefox-3 . 6 . 18/Firefox-bin

smx 1857 1822 0 11:38 pts/1 00:00:00 bash

smx 1880 1619 0 11:38?00:00:00更新通知程序

……

smx 11946 1824 0 21:41 pts/0 00:00:00 PS-ef

或者:

$ ps -aux

……

smx 1822 0.1 0.8 58484 18152?Sl 11:38 0:49 gnome终端

smx 1823 0.0 0.0 1988 712?s 11:38 0:00 gnome-pty-助手

smx 1824 0.0 0.1 6820 3776 pts/0 Ss 11:38 0:02 bash

smx 1827 4.3 5.8 398196 119568?sl 11:38 26:13/usr/lib/Firefox-3 . 6 . 18/Firefox-bin

smx 1857 0.0 0.1 6688 3644 pts/1 Ss 11:38 0:00 bash

smx 1880 0.0 0.6 41536 12620?S 11:38 0:00更新通知程序

……

smx 11953 0.0 0.0 2716 1064 pts/0 R 21:42 0:00 PS-aux

此时,如果我想杀死Firefox的进程,只需在终端输入:

$ kill -s 9 1827

其中-s 9确定传输给进程的信号是9,即尽快强制终止进程。每个终端信号及其功能见附录。

827是上面ps找到的火狐的PID。

很简单,但是有个问题。流程少一点没关系,流程多了就觉得疼了。无论是ps -ef还是ps -aux,每次都要在一大串进程信息中找到要杀的进程,要花上你所有的眼睛才能看到。

高级文章:

改进:

ps的查询结果通过管道传递给grep,以查找包含特定字符串的进程。管道符号“|”用于分隔两个命令,管道符号左边的命令输出将用作管道符号右边的命令输入。

$ ps -ef | grep firefox

smx 1827 1 4 11:38?00:27:33/usr/lib/Firefox-3 . 6 . 18/Firefox-bin

smx 12029 1824 0 21:54 pts/0 00:00:00 grep-color=auto Firefox

这次很清爽。然后

$kill -s 9 1827

改进——使用pgrep:

看到pgrep你首先会想到什么?没错,grep!pgrep的p表示该命令是一个grep for process query。

$ pgrep firefox

1827

你看到了什么?没错,火狐的PID,然后我还要再打一遍:

$kill -s 9 1827

改进——使用pidof:

看到皮多夫你有什么想法?没错,xx的pid,直译过来就是xx的PID。

$ pidof firefox-bin

1827

与pgrep相比,pidof必须给出进程的全名。那就老生常谈了:

$kill -s 9 1827

要么用ps然后慢慢找进程PID,用grep找包含对应字符串的进程,要么用pgrep直接找包含对应字符串的进程PID,然后手动输入kill。

改进:

$ PS-ef | grep Firefox | grep-v grep | cut-c 9-15 | xargs kill-s 9

描述:

“grep firefox”的输出结果是所有包含关键字“firefox”的进程。

“grep -v grep”是从列出的进程中删除了关键字“grep”的进程。

“cut -c 9-15”截取输入行的第9个字符到第15个字符,而这恰好是进程号PID。

“xargs kill -s 9”中的xargs命令用于将前一个命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀死指定的进程。

改进:

如果知道pgrep和pidof,为什么还要打这么长的单子!

$ pgrep firefox | xargs kill -s 9

6.改进:

$ PS-ef | grep Firefox | awk“{ print $ 2 }”| xargs kill-9

kill:没有这样的过程

有一个相当压抑的地方。已正确找到进程并终止,但执行后指示找不到进程。

awk“{ print $ 2 }”用于打印第二列的内容。根据常规文章,我们可以知道ps输出的第二列正好是PID。通过xargs把要杀死的进程对应的PID作为参数传递,杀死对应的进程。

改进7:

是不是每次都要调用xargs才能通过PID杀?答案是否定的:

$ kill-s 9 ` PS-aux | grep Firefox | awk { print $ 2 }

改进8:

没错,命令还是有点长。改成pgrep。

$ kill-s 9 pgrep Firefox

改进9——技能:

看到pkill想到了什么?没错pgrep和杀!pkill=pgrep kill。

$pkill -9 firefox

说明:-9 即发送的信号是9、pkill与杀在这点的差别是:pkill无须“s”,终止信号等级直接跟在"-" 后面。之前我一直以为是-第9条,结果每次运行都无法终止进程。

改进10——killall:

基拉耳和pkill是相似的,不过如果给出的进程名不完整,killall会报错100 .pkill或者pgrep只要给出进程名的一部分就可以终止进程。

$killall -9火狐

附录:各种信号及其用途

信号

描述

Linux x86上的信号号[1]

西格伯特

流程中止

6

信号

警报发出的信号

14

信号总线

总线错误:"访问内存对象的未定义部分"

西格德

子进程终止、停止(或继续*)

17

西格孔特

停止后继续

18

SIGFPE

浮点异常:"错误的算术运算"

8

西格胡普

挂断

锡吉尔

非法指令

信号情报

中断

2

西格基尔

杀死(立即终止)

9

信号管

在无人阅读的情况下给烟斗写信

13

西格奎特

退出并转储核心

3

西格夫

分段冲突

11

信号停止

暂时停止执行

19

信号术语

终止(请求终止)

15

SIGTSTP

终端停止信号

20

西格丁

后台进程试图从电传打字机中读取(“在”)

21

西格图

后台进程试图写入tty("out ")

22

SIGUSR1

用户定义的一

10

SIGUSR2

用户定义的2

12

SIGPOLL

可轮询事件

29

SIGPROF

分析计时器已过期

27

SIGSYS

Badsyscall

31

信号陷阱

跟踪/断点陷阱

5

西格堡

套接字上可用的紧急数据

23

信号传输

对虚拟时间进行计数的计时器发出信号:"虚拟计时器已过期"

26

SIGXCPU

超过中央处理器时间限制

24

SIGXFSZ

超过文件大小限制

25

linux命令行杀死进程,linux强制杀死进程命令