linux kill java进程进程后怎么办

362074人阅读
Linux系统(尤其ubuntu)(38)
关键字: linux 查进程、杀进程、起进程
&&& ps命令查找与进程相关的PID号:
&&& ps a 显示现行终端机下的所有程序,包括其他用户的程序。
&&& ps -A 显示所有程序。
&&& ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
&&& ps -e 此参数的效果和指定&A&参数相同。
&&& ps e 列出程序时,显示每个程序所使用的环境变量。
&&& ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
&&& ps -H 显示树状结构,表示程序间的相互关系。
&&& ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
&&& ps s 采用程序信号的格式显示程序状况。
&&& ps S 列出程序时,包括已中断的子程序资料。
&&& ps -t&终端机编号& 指定终端机编号,并列出属于该终端机的程序的状况。
&&& ps u 以用户为主的格式来显示程序状况。
&&& ps x 显示所有程序,不以终端机来区分。
&&& 最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
&&& ps aux | grep program_filter_word,ps -ef |grep tomcat
ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。
&& 使用kill命令结束进程:kill xxx
&& 常用:kill -9 324
&& Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME
3.进入到进程的执行文件所在的路径下,执行文件 ./文件名
这是本人花了两天时间整理得来的,一些最常用的地球人都知道的命令就省去啦!最后提供pdf手册下载
1. 更改档案拥有者
命令 : chown [-cfhvR] [--help] [--version] user[:group] file...
功能 : 更改文件或者文件夹的拥有者
参数格式 :
   && user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)
  &&&&&& -c : 若该档案拥有者确实已经更改,才显示其更改动作
  &&&&&& -f : 若该档案拥有者无法被更改也不要显示错误讯息
  &&&&&& -h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
  &&&&&& -v : 显示拥有者变更的详细资料
 &&&&&&  -R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
例如:chown -R oracle:oinstall /oracle/u01/app/oracle&
&&&&& 更改目录拥有者为oracle
2. 修改权限
&&& 命令:chmod (change mode)
&&& 功能:改变文件的读写和执行权限。有符号法和八进制数字法。
&&& 选项:(1)符号法:
& 命令格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename
&&&&&&&&& u (user)&& 表示用户本人。
&&&&&&&&& g (group)& 表示同组用户。
&&&&&&&&& o (oher)&& 表示其他用户。
&&&&&&&&& a (all)&&& 表示所有用户。
&&&&&&&&& +&&&&&&&&& 用于给予指定用户的许可权限。
&&&&&&&&& -&&&&&&&&& 用于取消指定用户的许可权限。
&&&&&&&&& =&&&&&&&&& 将所许可的权限赋给文件。
&&&&&&&&& r (read)&& 读许可,表示可以拷贝该文件或目录的内容。
&&&&&&&&& w (write)& 写许可,表示可以修改该文件或目录的内容。
&&&&&&&&& x (execute)执行许可,表示可以执行该文件或进入目录。
&&&&&&&&& (2)八进制数字法: &
& 命令格式:chmod abc file
& 其中a,b,c各为一个八进制数字,分别表示User、Group、及Other的权限。
&&&&&&&&& 4 (100)&&& 表示可读。
&&&&&&&&& 2 (010)&&& 表示可写。
&&&&&&&&& 1 (001)&&& 表示可执行。
& 若要rwx属性则4+2+1=7;
& 若要rw-属性则4+2=6;
& 若要r-x属性则4+1=5。
&&& 例如:# chmod a+rx filename
&&&&&&&&&&& 让所有用户可以读和执行文件filename。
&&&&&&&&& # chmod go-rx filename
&&&&&&&&&&& 取消同组和其他用户的读和执行文件filename的权限。
&&&&&&&&& # chmod 741 filename
&&&&&&&&&&& 让本人可读写执行、同组用户可读、其他用户可执行文件filename。
& # chmod -R 755 /home/oracle
&&& 递归更改目录权限,本人可读写执行、同组用户可读可执行、其他用户可读可执行
3. 修改文件日期
&&& 命令:touch
&&& 格式:touch filenae
&&& 功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。
&&& 例如:% touch file
4. 链接文件
&&& 命令:ln (link)
&&& 格式:ln [option] filename linkname
&&&&&&&&& ln [option] directory pathname
&&& 功能:为文件或目录建立一个链。其中,filename和directory是源文件名和
&&&&&&&&& 源目录名;linkname和pathname分别表示与源文件或源目录名相链接的
&&&&&&&&& 文件或目录。
&&& 选项:-s& 为文件或目录建立符号链接。不加-s表示为文件或目录建立硬链接
&&& 注释:链接的目地在于,对一个文件或目录赋予两个以上的名字,使其可以出
&&&&&&&&& 现在不同的目录中,既可以使文件或目录共享,又可以节省磁盘空间。
&&& 例如:% ln -s filename linkname
5. 显示日期
&&& 命令:date
&&& 例如:% date
6. 显示日历
&&& 命令:cal (calendar)
&&& 格式:cal [month] year
&&& 功能:显示某年内指定的日历
&&& 例如:% cal 1998&
7. 显示文件头部
&&& 命令:head
&&& 格式:head [option] filename
&&& 功能:显示文件的头部
&&& 选项:缺省& 显示文件的头10行。
&&&&&&&&& -i&&& 显示文件的开始 i行。
&&& 例如:% head filename
8. 显示文件尾部
&&& 命令:tail
&&& 格式:tail [option] filename
&&& 功能:显示文件的尾部
&&& 选项:缺省& 显示文件的末10行。
&&&&&&&&& -i&&& 显示文件最后 i行。
&&&&&&&&& +i&&& 从文件的第i行开始显示。
&&& 例如:% tail filename
9. 显示用户标识
&&& 命令:id
&&& 格式:id [option] [user]
&&& 功能:显示用户标识及用户所属的所有组。
&&& 选项:-a 显示用户名、用户标识及用户所属的所有组
&&& 注释:
&&& 例如:% id username
10. 查看当前登录的用户
&&& 命令:users
11. 显示都谁登录到机器上
&&& 命令:who
&&& 格式:who
&&& 功能:显示当前正在系统中的所有用户名字,使用终端设备号,注册时间。
&&& 例如:% who
12. 显示当前终端上的用户名
&&& 命令:whoami
&&& 格式:whoami
&&& 功能:显示出当前终端上使用的用户。
&&& 例如:% whoami
13. 寻找文件
&&& 命令:find
&&& 格式:find pathname [option] expression
&&& 功能:在所给的路经名下寻找符合表达式相匹配的文件。
&&& 选项:-name&&&& 表示文件名
&&&&&&&&& -user&&&& 用户名,选取该用户所属的文件
&&&&&&&&& -size&&&& 按大小查找,以block为单位,一个block是512B
&&&&&&&&& -mtime n& 按最后一次修改时间查找,选取n天内被修改的文件
& -perm&&&& 按权限查找
&&&&&&&&& -type&&&& 按文件类型查找
& -atime&&& 按最后一次访问时间查找
&&& 例如:% find ./ -name '*abc*' -print
14. 搜索文件中匹配符
&&& 命令:grep
&&& 格式:grep [option] pattern filenames
&&& 功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。
&&& 选项:-i&&& 匹配时忽略大小写
& -v 找出模式失配的行
&&& 例如:% grep -i 'java*' ./test/run.sh
15. 统计文件字数
&&& 命令:wc [option] filename
&&& 功能:统计文件中的文件行数、字数和字符数。
&&& 选项:-l 统计文件的行数
-w 统计文件的单词数
-c 统计文件的字符数
&&& 注释:若缺省文件名则指标准输入
&&& 例如:% wc -c ./test/run.sh
16. 显示磁盘空间
&&& 命令:df (disk free)
&&& 格式:df [option]
&&& 功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总
&&&&&&&&& 字节数、已用字节数、剩余字节数占用百分比。
&&& 选项:
-a:显示全部的档案系统和各分割区的磁盘使用情形
-i:显示i -nodes的使用量
-k:大小用k来表示 (默认值)
-t:显示某一个档案系统的所有分割区磁盘使用量
-x:显示不是某一个档案系统的所有分割区磁盘使用量
-T:显示每个分割区所属的档案系统名称
-h: 表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式。
&&& 注释:
&&& 例如:% df -hi
17. 查询档案或目录的磁盘使用空间
&&& 命令:du (disk usage)
&&& 格式:du [option] [filename]
&&& 功能:以指定的目录下的子目录为单位,显示每个目录内所有档案所占用的磁盘空间大小
&&& 选项:
-a:显示全部目录和其次目录下的每个档案所占的磁盘空间
-b:大小用bytes来表示 (默认值为k bytes)
-c:最后再加上总计 (默认值)
-s:只显示各档案大小的总合
-x:只计算同属同一个档案系统的档案
-L:计算所有的档案大小
-h: 表示档案系统大小使用 GB、MB 等易读的格式。
&&& 例如:% du -a
% du -sh /etc 只显示该目录的总合
% du /etc | sort -nr | more 统计结果用sort 指令进行排序,
sort 的参数 -nr 表示要以数字排序法进行反向排序。
18. 显示进程
&&& 命令:ps
&&& 格式:ps [option]
&&& 功能:显示系统中进程的信息。包括进程ID、控制进程终端、执行时间和命令。
&&& 选项:
& -a 显示所有进程信息
& -U uidlist 列出这个用户的所有进程
&&&&&&&&& -e 显示当前运行的每一个进程信息
&&&&&&&&& -f 显示一个完整的列表
& -x 显示包括没有终端控制的进程状况 。
&&& 注释:
&&& 例如:% ps -ef
& % ps -aux 然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
19. 终止进程
&&& 命令:kill
&&& 格式:kill [option] pid
&&& 功能:向指定的进程送信号或终止进程。kill指令的用途是送一个signal给某一个process,
&&& 因为大部份送的都是用来杀掉 process 的 SIGKILL 或 SIGHUP ,因此称为 kill&
&&& 选项:-9& 强行终止进程
&&& 注释:pid标示进程号,可由ps命令得到。
&&& 例如:% kill -9 pid
&&& 你也可以用 kill -l 来察看可代替 signal 号码的数目字。kill 的详细情形请参阅 man kill。
20. 查看自己的IP地址
&&& 命令:ifconfig
&&& 格式:ifconfig -a
21. 查看路由表
&&& 命令:netstat
&&& 格式:netstat -rn
22. 远程登录
&&& 命令:telnet
&&& 格式:telnet hostname
23. 文件传输
&&& 命令:ftp (file transfer program)
&&& 格式:ftp hostname
&&& 功能:网络文件传输及远程操作。
&&& 选项:ftp命令:
&&&&&&&&&& cd [dirname]& 进入远程机的目录
&&&&&&&&&& lcd [dirname] 设置本地机的目录
&&&&&&&&&& dir/ls&&&&&&& 显示远程的目录文件
&&&&&&&&&& bin&&&&&&&&&& 以二进制方式进行传输
&& asc&&&&&&&&&& 以文本文件方式进行传输
&&&&&&&&&& get/mget&&&&& 从远程机取一个或多个文件
&&&&&&&&&& put/mput&&&&& 向远程机送一个或多个文件
&&&&&&&&&& prompt&&&&&&& 打开或关闭多个文件传送时的交互提示
&&&&&&&&&& close&&&&&&&& 关闭与远程机的连接
&&&&&&&&&& quit&&&&&&&&& 退出ftp
&& !/exit ftp登陆状态下,!表示暂时退出ftp状态回到本地目录,exit表示返回ftp状态
&&& 注释:
&&& 例如:% ftp hostname
24. 查看自己的电子邮件
&&& 命令:mailx
&&& 格式:mailx
&&& 选项:
delete& 删除
next&&& 下一个
quit&&& 退出
&&&&&&&& reply&& 回复&&&
25. 回忆命令
&&& 命令:history
&&& 格式:history
&&& 功能:帮助用户回忆执行过的命令。
&&& 选项:
&&& 注释:
&&& 例如:% history
26. 网上对话
&&& 命令:talk
&&& 格式:talk username
&&& 功能:在网上与另一用户进行对话。
&&& 选项:
&&& 注释:对话时系统把终端分为上下两部分,上半部显示自己键入信息,下半部
&&&&&&&&& 显示对方用户键入的信息。键入delete或Ctrl+C则结束对话。
&&& 例如:% talk username
27. 允许或拒绝接受信息
&&& 命令:mesg (message)
&&& 格式:mesg [n/y]
&&& 功能:允许或拒绝其它用户向自己所用的终端发送信息。
&&& 选项:n 拒绝其它用户向自己所用的终端写信息
&&&&&&&&& y 允许其它用户向自己所用的终端写信息(缺省值)
&&& 注释:
&&& 例如:% mesg n
28. 给其他用户写信息
&&& 命令:write
&&& 格式:write username [ttyname]
&&& 功能:给其他用户的终端写信息。
&&& 选项:
&&& 注释:若对方没有拒绝,两用户可进行交谈,键入EOF或Ctrl+C则结束对话。
&&& 例如:write username
29. 创建、修改、删除用户和群组
&&& a. 创建群组:
例如: groupadd oinstall&&& 创建群组名为oinstall的组
groupadd -g 344 dba&
创建组号是344的组,此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。
&&& b. 修改群组:
groupmod:该命令用于改变用户组帐号的属性
groupmod –g 新的GID 用户组帐号名
groupmod –n 新组名 原组名:此命令由于改变用户组的名称
&&& c. 删除群组:
groupdel 组名:该命令用于删除指定的组帐号
&&& d. 新建用户:
命令: useradd [-d home] [-s shell] [-c comment] [-m [-k template]]
[-f inactive] [-e expire ] [-p passwd] [-r] name
-c:加上备注文字,备注文字保存在passwd的备注栏中。 
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。
举例: # useradd -g oinstall -G dba oracle& 创建Oracle用户
&&& e. 删除用户
命令: userdel 用户名
删除指定的用户帐号
userdel –r 用户名(userdel 用户名;rm 用户名):删除指定的用户帐号及宿主目录
例:#useradd -g root kkk //把kkk用户加入root组里
&&& f. 修改用户
命令: usermod
修改已有用户的信息
usermod –l 旧用户名 新用户名: 修改用户名
usermod –L 用户名: 用于锁定指定用户账号,使其不能登陆系统
usermod –U 用户名: 对锁定的用户帐号进行解锁
passwd –d 用户名: 使帐号无口令,即用户不需要口令就能登录系统
例:#usermod -l user2 user1 //把用户user2改名为user1
30. 启动、关闭防火墙
永久打开或则关闭
chkconfig iptables on
chkconfig iptables off
即时生效:重启后还原
service iptables start
service iptables stop
&&&& 或者:
/etc/init.d/iptables start
/etc/init.d/iptables stop
31. 启动VSFTP服务
即时启动: /etc/init.d/vsftpd start
即时停止: /etc/init.d/vsftpd stop
开机默认VSFTP服务自动启动:
方法一:(常用\方便)
[root@localhost etc]# chkconfig --list|grep vsftpd ( 查看情况)
vsftpd&&&&&&&&& 0:off&& 1:off&& 2:off&& 3:off&& 4:off&& 5:off&& 6:off
[root@localhost etc]# chkconfig vsftpd on& (执行ON设置)
或者:方法二:
修改文件 /etc/rc.local , 把行/usr/local/sbin/vsftpd & 插入文件中,以实现开机自动启动。
32. vi技巧
a. 进入输入模式
新增 (append)
a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。
A:从光标所在列最後面的地方开始新增资料。
插入 (insert)
i:从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。
I :从光标所在列的第一个非空白字元前面开始插入资料。
开始 (open)
o :在光标所在列下新增一列并进入输入模式。
O: 在光标所在列上方新增一列并进入输入模式。
在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直接退出,如果文件已有新的变化,vi会提示你保存文件而:q命令也会失效,这时你可以用:w命令保存文件后再用:q 退出,或用:wq或:x命令退出,如果你不想保存改变后的文件,你就需要用:q!命令,这个命令将不保存文件而直接退出vi。
c. 删除与修改文件的命令:
x:删除光标所在字符。
dd :删除光标所在的列。
r :修改光标所在字元,r 後接著要修正的字符。
R:进入取替换状态,新增文字会覆盖原先文字,直到按 [ESC] 回到指令模式下为止。
s:删除光标所在字元,并进入输入模式。
S:删除光标所在的列,并进入输入模式。
d. 屏幕翻滚类命令
Ctrl+u: 向文件首翻半屏
Ctrl+d: 向文件尾翻半屏
Ctrl+f: 向文件尾翻一屏
Ctrl+b: 向文件首翻一屏
nz: 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
e. 删除命令
ndw或ndW: 删除光标处开始及其后的n-1个字
do: 删至行首
d$: 删至行尾
ndd: 删除当前行及其后n-1行
x或X: 删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u: 删除输入方式下所输入的文本
f. 搜索及替换命令
/pattern: 从光标开始处向文件尾搜索pattern
?pattern: 从光标开始处向文件首搜索pattern
n: 在同一方向重复上一次搜索命令
N: 在反方向上重复上一次搜索命令
:s/p1/p2/g: 将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g: 将文件中所有p1均用p2替换
g. 复制,黏贴
(1) 选定文本块,使用v进入可视模式;移动光标键选定内容
(2) 复制选定块到缓冲区,用y;复制整行,用yy
(3) 剪切选定块到缓冲区,用d;剪切整行用dd
(4) 粘贴缓冲区中的内容,用p
在同一编辑窗打开第二个文件,用:sp [filename]
在多个编辑文件之间切换,用Ctrl+w
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:538122次
积分:2814
积分:2814
排名:第12632名
原创:84篇
转载:40篇
评论:22条
(1)(1)(1)(1)(5)(1)(3)(1)(1)(2)(1)(1)(7)(6)(1)(2)(1)(1)(8)(5)(17)(10)(7)(14)(17)(9)Linux四种结束某用户所有进程的方法
在linux系统管理中,我们有时候需要结束掉某个用户的所有进程。初学者一般会先查询出用户的所有pid,然后一条条kill结束掉,或者写一个脚本。实际上结束的方法有很多,博主这边总结了下面4种方法,以kill用户zhangnq为例。
1. pkill方式
# pkill -u zhangnq
2. killall方式
# killall -u zhangnq
3. ps方式 ps列出zhangnq的pid,然后依次kill掉,比较繁琐。
# ps -ef | grep zhangnq | awk '{ print $2 }' | xargs kill -9
4. pgrep方式 pgrep -u参数查出用户的所有pid,然后依次kill
# pgrep -u zhangnq | xargs kill -9
Trackbacks (0)
还没有Trackbacks
: 不错不错。谢谢博主分享。
: 看不懂。。。。。。。。
: 谢谢博主分享
: 谢谢博主分享。看见代码就头疼,
: 感觉好难的说。
: access 数据库还是。。
: 得慢慢磨了。。
: 哇哦,好专业的博客。linux下杀死进程的N种方法
首先,用ps查看进程,方法如下:
00:00:49 gnome-terminal
00:00:00 gnome-pty-helper
0 11:38 pts/0
00:00:02 bash
00:26:28 /usr/lib/firefox-3.6.18/firefox-bin
0 11:38 pts/1
00:00:00 bash
00:00:00 update-notifier
0 21:41 pts/0
00:00:00 ps -ef
0:49 gnome-terminal
0:00 gnome-pty-helper
26:13 /usr/lib/firefox-3.6.18/firefox-bin
0:00 update-notifier
0:00 ps -aux
此时如果我想杀了火狐的进程就在终端输入:
kill -s 9 1827
其中-s 9 制定了传递给进程的信号是9,即强制、尽快终止进程。各个终止信号及其作用见附录。
1827则是上面ps查到的火狐的PID。
简单吧,但有个问题,进程少了则无所谓,进程多了,就会觉得痛苦了,
无论是ps -ef 还是ps -aux,每次都要在一大串进程信息里面查找到要杀的进程,看的眼都花了。
把ps的查询结果通过管道给grep查找包含特定字符串的进程。管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。
ps -ef | grep firefox
00:27:33 /usr/lib/firefox-3.6.18/firefox-bin
0 21:54 pts/0
00:00:00 grep --color=auto firefox
这次就清爽了。然后就是
kill -s 9 1827
还是嫌打字多?
改进2 ———使用pgrep:
一看到pgrep首先会想到什么?没错,grep!pgrep的p表明了这个命令是专门用于进程查询的grep。
pgrep firefox
看到了什么?没错火狐的PID,接下来又要打字了:
kill -s 9 1827
改进3 ——使用pidof:
看到pidof想到啥?没错pid of xx,字面翻译过来就是 xx的PID。
pidof firefox-bin
和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
ps -ef | grep firefox | awk '{print $2}' | xargs kill -9
kill: No such process
有一个比较郁闷的地方,进程已经正确找到并且终止了,但是执行完却提示找不到进程。
其中awk ‘{print $2}’ 的作用就是打印(print)出第二列的内容。根据常规篇,可以知道ps输出的第二列正好是PID。就把进程相应的PID通过xargs传递给kill作参数,杀掉对应的进程。
难道每次都要调用xargs把PID传递给kill?答案是否定的:
kill -s 9 `ps -aux | grep firefox | awk '{print $2}'`
没错,命令依然有点长,换成pgrep。
kill -s 9 `pgrep firefox`
改进9——pkill:
看到pkill想到了什么?没错pgrep和kill!pkill=pgrep+kill。
pkill -9 firefox
说明:+ 即发送的信号是9,pkill与kill在这点的差别是:pkill无须 “s”,终止信号等级直接跟在 “-“ 后面。之前我一直以为是 “-s 9″,结果每次运行都无法终止进程。
改进10——killall:
killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。
killall -9 firefox
附录:各种信号及其用途
Description
Signal number on Linux x86[1]
Process aborted
Signal raised by alarm
Bus error: “access to undefined portion of memory object”
Child process terminated, stopped (or continued*)
Continue if stopped
Floating point exception: “erroneous arithmetic operation”
Illegal instruction
Kill (terminate immediately)
Write to pipe with no one reading
Quit and dump core
Segmentation violation
Stop executing temporarily
Termination (request to terminate)
Terminal stop signal
Background process attempting to read from tty (“in”)
Background process attempting to write to tty (“out”)
User-defined 1
User-defined 2
Pollable event
Profiling timer expired
Bad syscall
Trace/breakpoint trap
Urgent data available on socket
Signal raised by timer counting virtual time: “virtual timer expired”
CPU time limit exceeded
File size limit exceeded
文章来自:
linux下杀死进程的N种方法Linux中Kill进程的N种方法
首先,用ps查看进程,方法如下:
1822 & & 1 &0
11:38 ? & & &
&00:00:49 gnome-terminal
1823 &1822 &0 11:38 ?
&00:00:00 gnome-pty-helper
1824 &1822 &0 11:38 pts/0
& &00:00:02 bash
1827 & & 1 &4
11:38 ? & & &
/usr/lib/firefox-3.6.18/firefox-bin
1857 &1822 &0 11:38 pts/1
& &00:00:00 bash
1880 &1619 &0 11:38 ?
&00:00:00 update-notifier
&11946 &1824 &0
21:41 pts/0 & &00:00:00 ps
1822 &0.1 &0.8
& 11:38 & 0:49
gnome-terminal
1823 &0.0 &0.0 &
1988 & 712 ? & &
&11:38 & 0:00
gnome-pty-helper
1824 &0.0 &0.1 &
6820 &3776 pts/0 &
&Ss & 11:38 &
1827 &4.3 &5.8 568 ?
& 11:38 &26:13
/usr/lib/firefox-3.6.18/firefox-bin
1857 &0.0 &0.1 &
6688 &3644 pts/1 &
&Ss & 11:38 &
1880 &0.0 &0.6
& &11:38 & 0:00
update-notifier
&11953 &0.0 &0.0
& 2716 &1064 pts/0
& &R+ & 21:42
& 0:00 ps -aux
此时如果我想杀了火狐的进程就在终端输入:
$ kill -s 9 1827
其中-s 9 制定了传递给进程的信号是9,即强制、尽快终止进程。各个终止信号及其作用见附录。
把ps的查询结果通过管道给grep查找包含特定字符串的进程。管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。
$ ps -ef | grep firefox
1827 & & 1 &4
11:38 ? & & &
/usr/lib/firefox-3.6.18/firefox-bin
&12029 &1824 &0
21:54 pts/0 & &00:00:00 grep
--color=auto firefox
这次就清爽了。然后就是
$kill -s 9 1827
改进2——使用pgrep:
一看到pgrep首先会想到什么?没错,grep!pgrep的p表明了这个命令是专门用于进程查询的grep。
$ pgrep firefox
看到了什么?没错火狐的PID,接下来又要打字了:
$kill -s 9 1827
改进3——使用pidof:
看到pidof想到啥?没错pid of xx,字面翻译过来就是 xx的PID。
$ pidof firefox-bin
和pgrep相比稍显不足的是,pidof必须给出进程的全名。然后就是老生常谈:
$kill -s 9 1827
无论使用ps 然后慢慢查找进程PID
还是用grep查找包含相应字符串的进程,亦或者用pgrep直接查找包含相应字符串的进程PID,然后手动输入给kill杀掉,都稍显麻烦。有没有更方便的方法?有!
$ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs
“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
$ ps -ef | grep firefox | awk '{print $2}' | xargs kill
kill: No such process
有一个比较郁闷的地方,进程已经正确找到并且终止了,但是执行完却提示找不到进程。
其中awk '{print $2}'
的作用就是打印(print)出第二列的内容。根据常规篇,可以知道ps输出的第二列正好是PID。就把进程相应的PID通过xargs传递给kill作参数,杀掉对应的进程。
难道每次都要调用xargs把PID传递给kill?答案是否定的:
$kill -s 9 `ps -aux | grep firefox | awk '{print $2}'`
没错,命令依然有点长,换成pgrep。
$kill -s 9 `pgrep firefox`
改进9——pkill:
看到pkill想到了什么?没错pgrep和kill!pkill=pgrep+kill。
$pkill -9 firefox
说明:"-9" 即发送的信号是9,pkill与kill在这点的差别是:pkill无须 “s”,终止信号等级直接跟在 “-“
后面。之前我一直以为是 "-s 9",结果每次运行都无法终止进程。
改进10——killall:
killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。
$killall -9 firefox
附录:各种信号及其用途
Signal Description Signal number on Linux
SIGABRT Process aborted 6&
SIGALRM Signal raised by alarm 14&
SIGBUS Bus error: "access to undefined portion of memory
object" 7&
SIGCHLD Child process terminated, stopped (or continued*)
SIGCONT Continue if stopped 18&
SIGFPE Floating point exception: "erroneous arithmetic
operation" 8&
SIGHUP Hangup 1&
SIGILL Illegal instruction 4&
SIGINT Interrupt 2&
SIGKILL Kill (terminate immediately) 9&
SIGPIPE Write to pipe with no one reading
SIGQUIT Quit and dump core 3&
SIGSEGV Segmentation violation 11&
SIGSTOP Stop executing temporarily 19&
SIGTERM Termination (request to terminate)
SIGTSTP Terminal stop signal 20&
SIGTTIN Background process attempting to read from tty ("in")
SIGTTOU Background process attempting to write to tty ("out")
SIGUSR1 User-defined 1 10&
SIGUSR2 User-defined 2 12&
SIGPOLL Pollable event 29&
SIGPROF Profiling timer expired 27&
SIGSYS Bad syscall 31&
SIGTRAP Trace/breakpoint trap 5&
SIGURG Urgent data available on socket
SIGVTALRM Signal raised by timer counting virtual time:
"virtual timer expired" 26&
SIGXCPU CPU time limit exceeded 24&
SIGXFSZ File size limit exceeded 25&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 linux kill 进程 的文章

 

随机推荐