pkill kill和killall有什么区别

Linux系统中的killall命令用于杀死指定名字的进程(kill&processes&by&name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。命令格式:killall[参数][进程名]命令功能:命令参数:-Z&只杀死拥有scontext&的进程-e&要求匹配进程名称-I&忽略小写-g&杀死进程组而不是进程-i&交互模式,杀死进程前先询问用户-l&列出所有的已知信号名称-q&不输出警告信息-s&发送指定的信号-v&报告信号是否成功发送-w&等待进程死亡--help&显示帮助信息--version&显示版本显示使用实例:实例1:命令:输出:[root@localhost&~]#&ps&-ef|grep&viroot&&&&&&&0&17:51&pts/0&&&&00:00:00&vi&test.txtroot&&&&&&&0&17:51&pts/1&&&&00:00:00&grep&vi[root@localhost&~]#&ps&-ef|grep&viroot&&&&&&&0&17:51&pts/0&&&&00:00:00&vi&test.txtroot&&&&&&&0&17:51&pts/2&&&&00:00:00&vi&test.logroot&&&&&&&0&17:51&pts/1&&&&00:00:00&grep&vi[root@localhost&~]#&killall&vi[root@localhost&~]#&ps&-ef|grep&viroot&&&&&&&0&17:52&pts/1&&&&00:00:00&grep&vi说明:实例2:命令:::&&或者&&输出:[root@localhost&~]#&vi&&&[1]&17646[root@localhost&~]#&killall&-TERM&vi[1]+&&Stopped&&&&&&&&&&&&&&&&&vi[root@localhost&~]#&vi&&&[2]&17648[root@localhost&~]#&ps&-ef|grep&viroot&&&&&&&0&17:54&pts/1&&&&00:00:00&viroot&&&&&&&0&17:54&pts/1&&&&00:00:00&viroot&&&&&&&0&17:55&pts/1&&&&00:00:00&grep&vi[2]+&&Stopped&&&&&&&&&&&&&&&&&vi[root@localhost&~]#&killall&-TERM&vi[root@localhost&~]#&ps&-ef|grep&viroot&&&&&&&0&17:54&pts/1&&&&00:00:00&viroot&&&&&&&0&17:54&pts/1&&&&00:00:00&viroot&&&&&&&0&17:55&pts/1&&&&00:00:00&grep&vi[root@localhost&~]#&killall&-KILL&vi[1]-&&已杀死&&&&&&&&&&&&&&&vi[2]+&&已杀死&&&&&&&&&&&&&&&vi[root@localhost&~]#&ps&-ef|grep&viroot&&&&&&&0&17:56&pts/1&&&&00:00:00&grep&vi[root@localhost&~]#说明:实例3:把所有的登录后的shell给杀掉命令:输出:[root@localhost&~]#&w&18:01:03&up&41&days,&18:53,&&3&users,&&load&average:&0.00,&0.00,&0.00USER&&&&&TTY&&&&&&FROM&&&&&&&&&&&&&&LOGIN@&&&IDLE&&&JCPU&&&PCPU&WHATroot&&&&&pts/0&&&&10.2.0.68&&&&&&&&14:58&&&&9:52&&&0.10s&&0.10s&-bashroot&&&&&pts/1&&&&10.2.0.68&&&&&&&&17:51&&&&0.00s&&0.02s&&0.00s&wroot&&&&&pts/2&&&&10.2.0.68&&&&&&&&17:51&&&&9:24&&&0.01s&&0.01s&-bash[root@localhost&~]#&killall&-9&bash[root@localhost&~]#&w&18:01:48&up&41&days,&18:54,&&1&user,&&load&average:&0.07,&0.02,&0.00USER&&&&&TTY&&&&&&FROM&&&&&&&&&&&&&&LOGIN@&&&IDLE&&&JCPU&&&PCPU&WHATroot&&&&&pts/0&&&&10.2.0.68&&&&&&&&18:01&&&&0.00s&&0.01s&&0.00s&w[root@localhost&~]#说明:运行命令:&后,所有都会当前所有需要
阅读(...) 评论()如何 停止node进程? - CNode技术社区
这家伙很懒,什么个性签名都没有留下。
我用的screen 运行了node app.js 监听3000端口 然后把终端关了,但是此时app.js还在运行 127.0.0.1:3000还能访问
但是我想把app.js重新运行一下,如何操作? 直接再打开终端运行 node app.js 会报错。。。。。
如何查看和结束node后台运行进程?!
linux 下 lsof -i 3000 查找进程ID 难后 kill -9 进程ID
囧 杀不完了。。。 杀了这个进程 node又会自动以其他id继续运行 127.0.0.1:3000还能继续访问。。。
node 自身没有方法可以查看自己运行了哪些进程么?
shutekiMacBook-Pro:~ Mofei$ **lsof -i :3000**
DEVICE SIZE/OFF NODE NAME
IPv4 0xe455cb
TCP localhost:49951-&localhost:hbci (ESTABLISHED)
2386 Mofei
IPv4 0x67b73
TCP *:hbci (LISTEN)
2386 Mofei
IPv4 0xc0875b
TCP localhost:hbci-&localhost:49951 (ESTABLISHED)
shutekiMacBook-Pro:~ Mofei$ kill -9 2386
shutekiMacBook-Pro:~ Mofei$ lsof -i :3000
DEVICE SIZE/OFF NODE NAME
IPv4 0xe455cb
TCP localhost:49951-&localhost:hbci (CLOSE_WAIT)
2391 Mofei
IPv4 0xe479e3
TCP *:hbci (LISTEN)
你进程会自动判断是否被关闭,然后再重启?
嗯 看起来是这样的。。。 我kill之后 再lsof -i :3000 还是能看到node的进程。
无限杀。。。
而且之前运行的app.js貌似 一点影响都没有受到。。仍然可以继续访问 127.0.0.1:3000
shutekiMacBook-Pro:~ Mofei$ lsof -i :3000
DEVICE SIZE/OFF NODE NAME
2418 Mofei
IPv4 0x6b5cb
TCP *:hbci (LISTEN)
shutekiMacBook-Pro:~ Mofei$ kill -9 2418
shutekiMacBook-Pro:~ Mofei$ lsof -i :3000
DEVICE SIZE/OFF NODE NAME
2433 Mofei
IPv4 0xc08023
TCP *:hbci (LISTEN)
shutekiMacBook-Pro:~ Mofei$ kill -9 2433
shutekiMacBook-Pro:~ Mofei$ lsof -i :3000
DEVICE SIZE/OFF NODE NAME
2436 Mofei
IPv4 0xb33853
TCP *:hbci (LISTEN)
google 后搞定
可以kill node
pkill node
killall node
如果要杀单独的话就是上面仁兄给的方法
只不过后面不是 kill -9
而是 kill -2 进程id
我的办法:
ps -ef | grep node
其实 Google 真的是很好的老师, 关键字:“screen”
screen -ls 显示所有的 screen 会话
[root@tivf06 ~]# screen -ls
There is a screen on:
16582.pts-1.tivf06
(Detached)
1 Socket in /tmp/screens/S-root.
screen -r 16582
然后就是正常的 linux 命令了。
实际上不是screen的原因 而是因为我吧shell关了,然后node还在运行,再打开shell没法控制之前运行的node了。
不过还是谢了
嗯 同样有效
kill -9 为什么不行呢。-9是强制杀死的意思吗、
这个kill我还真的不熟悉 不过尝试过了 -2可以 -9虽然杀了
但是node会自己重新开另外一个进程…
kill processid后node自己又重启了。如何破?
lsof到底是什么鬼命令?!
竟然被翻尸了,好开森在这里看到大神的问答。
跑偏了… 关于node进程问题,分享下自己的见解,欢迎指正。
场景1:node写数据库操作,如果误操作一次性写入几十万(约数形容很大)条数据到mongodb, 突然发现这是条错误逻辑这时候就是kill掉node进程仍然会继续写入数据库
场景2:对于大批量http请求操作,该操作比较特殊比如处理一些整数或者浮点数,目的是为了造成cpu繁忙的现象,同样的这时kill也不会有用,即使reboot都管用。
分析:对于场景1可以理解为node的高效异步处理能力,在mongodb未写入完上一条数据的时候就又丢给其任务,造成node已经将所有写入任务完成的假象,其实是丢给了mongodb来处理;对于场景2同样的理解方式;
总结:从处理百万级数据的经验得知,nodejs虽然天赋异能能够异步处理任务,但是需要很精准的人为控制,否则就会出现一个进程内存飙到1.7G的悲惨命运。
sudo lsof -i:80
//列出80端口下的进程
sudo kill -9 xxxx
// xxxx指的是进程的PID
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的kill,killall,pkill 的区别_中华文本库
第1页/共27页
杀死进程命令 kill
xkill 一. 终止进程的工具 kill 、killall、pkill、xkill
终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。
注意:另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。
kill的利用是和ps 或pgrep 号结合在同时利用的;
kill [信号代码] 进程ID(kill
-s:指定发送的信号。
-p:模拟发送信号。
-l:指定信号的名称列表。
pid:要中止进程的ID号。
Signal:表示信号。
注:信号代码可以省略;我们常用的信号代码是-9 ,表示强制终止;对于僵尸进程,可以用kill -9 来强制终止退出; 2. killall
killall 通过程序的名字,直接杀死所有进程。
用法:killall 正在运行的程序名
killall 也和ps或pgrep 结合使用,比较方便;通过ps或pgrep 来查看哪些程序在运行
pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。
用法:pkill 正在运行的程序名
xkill 是在桌面用的杀死图形界面的程序。比如当firefox 出现崩溃不能退出时,点鼠标就能杀死firefox 。当xkill运行时出来和个人脑骨的图标,哪个图形程序崩溃一点就OK了。如果您想终止xkill ,就按右键取消;
第1页/共27页
寻找更多 ""辛星浅析kill、pkill的区别
首先说一下kill命令,它是通过pid来杀死进程,要得到某个进程的pid,我们可以使用ps命令,默认情况下,kill命令发送给进程的终止信号是15,但是有些进程不会理这个信号,这样的话,可以用9信号来强制杀死,信号9是不会被忽略的强制性执行信号。
而killall和pkill都是使用命令名来终止进程的有效手段,它们不同于kill通过pid来杀死进程的方式,它可以理解为成批成批的杀死进程,当然这么做的危险性也相对提高了不少。当然它们也可以给进程发送相应的终止信号。
比如我们要杀死apache的相关进程,我们可以使用killall
apache即可杀死所有apache相关的进程,比较方便,不过它有可能会误删程序。
下面是常用的信号的数字及其含义:
表示从终端上发出的结束信号
表示从键盘上发出的终端信号(即Ctrl+c)
表示从键盘上发出的退出信号(即Ctrl+\)
表示浮点异常,比如被0除
表示结束接受信号的进程,也就是强行杀死进程
kill命令默认的终止信号
子进程终止或结束的信号
从键盘来执行的信号

我要回帖

更多关于 pkill kill t 的文章

 

随机推荐