如何kill掉linux的linux进程kill不掉

Linux命令,如何通过端口号找到PID 然后kill掉进程 - 查看主题 & Ubuntu中文论坛
&[ 5 篇帖子 ]&
&文章标题 : Linux命令,如何通过端口号找到PID 然后kill掉进程发表于 :
9:33帖子: 53
送出感谢: 0 次
接收感谢: 0 次
大家好。。祝各位新年快乐。。笑口常开。OK 正题..需求:使用java代码 通过指定端口 杀掉指定进程..并且获取进程名(最好能获取到使用这个进程的软件名)想法:使用Liunx命令 通过端口号 找到相对应的PID 然后通过 kill命令 杀死获得的PID进程.(好像有点流氓。希望能拿到使用进程的名字 这样就可以提示用户了)在网上通过google找到了方法 可以通过 netstat -ano|grep 80 找到ano信息里含有80端口的..这不是我想要的。。不知道各位有什么办法。。通过命令Liunx 找到一条 信息
那个信息里包含以下数据(少些也行 不过必须要能杀死进程)..&Port、Name、PID、等等等等&.然后我可以截取这段信息 kill掉进程补充--------------------------------------------------------------------------------刚使用了 netstat -anp|grep 80 命令
1911/gvfsd-burn
@/dbus-vfs-daemon/socket-Esd49EA7unix
1880/wnck-applet
1895/multiload-appl /tmp/orbit-swing/linc-767-0-58580a09af295unix
1895/multiload-appl /tmp/orbit-swing/linc-767-0-58580a09af295unix
1895/multiload-appl /tmp/orbit-swing/linc-767-0-58580a09af295unix
1846/gnome-panel
/tmp/orbit-swing/linc-736-0-a拿第一条信息来说 10680 是不是端口号? 那么 1911 是不是PID?? 那么 /gvfsd-burn 是不是进程名??补充:我只想搜出端口为80的 并不像把包含80两个字的全搜出来..
&文章标题 : Re: Linux命令,如何通过端口号找到PID 然后kill掉进程发表于 :
9:33帖子: 53
送出感谢: 0 次
接收感谢: 0 次
难道这个问题真的很难吗?
&文章标题 : Re: Linux命令,如何通过端口号找到PID 然后kill掉进程发表于 :
21:55帖子: 58428地址: 长沙
grep先学会正则,精确的找到目标先。lsof也可以找端口。更精确。
_________________● 鸣学
&文章标题 : Re: Linux命令,如何通过端口号找到PID 然后kill掉进程发表于 :
9:33帖子: 53
送出感谢: 0 次
接收感谢: 0 次
to eexpress不好意思..我可能需要 &命令& 而不是思想..
&文章标题 : Re: Linux命令,如何通过端口号找到PID 然后kill掉进程发表于 :
14:05帖子: 1743地址: 离开北京
lsof -i :80可以找绑定80的进程lsof -i @192.168.1.xxx可以找链接那个ip的进程.不确定是不是 -i用不了再去搜索一下
_________________错过好多好贴,没占到广告位后悔啊
显示帖子 : 全部帖子1天7天2周1个月3个月6个月1年&排序 作者发表时间文章标题 升序降序&
&[ 5 篇帖子 ]&
正在浏览此版面的用户:没有注册用户 和 1 位游客
您 不能 在这个版面发表主题您 不能 在这个版面回复主题您 不能 在这个版面编辑帖子您 不能 在这个版面删除帖子您 不能 在这个版面提交附件
选择一个版面
------------------
公告/注意事项
& &新闻和通知
& &校园社团支持
& && &华东校区
& && &华南校区
& && &华北校区
& && &华中校区
& && &东北校区
& && &西北校区
& && &港澳台校区
& && &国外校区
& &软件推荐
& &非常任务
系统安装区
& &教学和常见问答
& && &课堂教学和培训
& &初学者园地 - 17.04 - Zesty Zapus
& &系统安装和升级
& && &新立得和软件源
& && &Wubi安装讨论
& &启动和引导
& &网卡问题以及网络和拨号
& && &校园网拨号
& &笔记本、UMPC支持
& &手机和平板
& && &Ubuntu移动应用开发
& &常用硬件支持
& &系统架构支持
配置美化区
& &字体美化和中文支持
& && &个人配置文件存放点
& &桌面特效
& &窗口管理器
& &屏幕抓图
& &办公、图像、机械电子设计等
& && &Vim和Emacs
& &因特网相关软件
& &影音多媒体
& &Wine及其分支
& &游戏和游戏模拟器
& &虚拟机和虚拟化
& &其它类软件
& &开源模板库
服务器管理
& &服务器基础应用
& &数据库管理
& &服务器维护和硬件相关
& &Ubuntu VPS
参与Ubuntu开发
& &软件和文档翻译
& &编译或打包
& &Ubuntu错误报告
程序设计区
& &Shell脚本
& &GTK+和QT
& &软件/网站开发
& && &Python/Php/Perl
& && &C/C++/Java
& &内核及嵌入式开发
& &开源小工具
& &Ubuntu 17.10
& &Ubuntu 16.04 LTS
& &Ubuntu 14.04 LTS
& &Ubuntu 12.04 LTS
& &Ubuntu 10.04 LTS
& &老旧版本支持
& && &Ubuntu 15.10
& && &Ubuntu 15.04
& && &Ubuntu 14.10
衍生发行版
& &Ubuntu GNOME
& &Kubuntu
& &Xubuntu & Lubuntu
& &Ubuntu中文衍生版
& && &UbuntuKylin
& &Ubuntu国外衍生版
& && &Mint
& &Ubuntu衍生版制作
& &其它类Unix OS发行版
& && &Arch发行版
& && &Debian发行版
& && &OpenSUSE发行版
& && &Deepin
& &深度PK版
& &Ubuntu故事和感慨
& &Full Circle开源杂志
分享交流区
& &同城交流
& &线下活动专版
& &Ubuntu宣传推广
& &论坛管理
& && && &Ubuntu中文网上商店linux(17)
#杀掉8080端口的进程
netstat -nlp |grep :8080 |grep -v grep|awk '{print $7}' |awk -F '/' '{print $1}' |xargs kill -9
#查询包含tomcat的进程号
ps -ef|grep tomcat|grep -v grep|awk '{print $2}'
#杀掉所有包含‘tomcat’的进程
ps -ef|grep tomcat|grep -v grep|awk '{print $2}' |xargs kill -9 
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:97418次
积分:1607
积分:1607
排名:千里之外
原创:27篇
转载:214篇
(1)(3)(3)(2)(1)(5)(5)(1)(6)(8)(3)(23)(23)(14)(8)(8)(8)(2)(16)(8)(9)(17)(2)(10)(6)(3)(4)(1)(8)(10)(3)(6)(13)(9)Linux/OS X系统(3)
D状态(disk sleep)进程用kill -9命令是不管用的,最简单的方法就是reboot, 除此还可以修改内核,将其进程状态转化为别的状态,然后kill掉。
新建文件夹, cd进去,新建killd.c 文件,代码如下:
#include &linux/init.h&
#include &linux/kernel.h& /*Needed by all modules*/
#include &linux/module.h&
#include &linux/sched.h&
MODULE_LICENSE("BSD");
static int pid = -1;
module_param(pid, int, S_IRUGO);
static int killd_init(void)
struct task_struct *
printk(KERN_ALERT "killd: force D status process to death/n");
printk(KERN_ALERT "killd: pid=%d/n", pid);
for_each_process(p){
if(p-&pid == pid){
printk("killd: found/n");
set_task_state(p, TASK_STOPPED);
printk(KERN_ALERT "killd: aha, dead already/n");
printk("not found");
static void killd_exit(void)
printk(KERN_ALERT "killd: bye/n");
module_init(killd_init);
module_exit(killd_exit);
然后新建Makefile文件:
obj-m := killd.o
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
然后执行make命令进行编译;
再执行如下命令:
sudo insmod ./hello.ko
sudo rmmod hello
插入模块的时候提供D状态的进程号,就可以将其转换为t状态,使用普通kill就可以杀死。
sudo insmod ./killd.ko pid=1234
参考资料:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8018次
排名:千里之外
原创:11篇
(1)(5)(1)(1)(6)(1)(2)1.作用&kill命令用来中止一个进程。&2.格式&kill [ -s signal | -p ] [ -a ] pid ...&kill -l [ signal ]&3.参数&-s:指定发送的信号。&-p:模拟发送信号。&-l:指定信号的名称列表。&pid:要中止进程的ID号。&Signal:表示信号。&4.说明&进程是Linux系统中一个非常重要的概念。Linux是一个多任务的操作系统,系统上经常同时运行着多个进程。我们不关心这些进程究竟是如何分配的,或者是内核如何管理分配时间片的,所关心的是如何去控制这些进程,让它们能够很好地为用户服务。&Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。批处理进程和终端没有联系,是一个进程序列。监控进程(也称系统守护进程)时Linux系统启动时启动的进程,并在后台运行。例如,httpd是著名的Apache服务器的监控进程。&kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,曾提到系统多个虚拟控制台的作用是当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内部命令可以直接调用的。&5.应用实例&(1)强行中止(经常使用杀掉)一个进程标识号为324的进程:&#kill -9 324&(2)解除Linux系统的死锁&在Linux中有时会发生这样一种情况:一个程序崩溃,并且处于死锁的状态。此时一般不用重新启动计算机,只需要中止(或者说是关闭)这个有问题的程序即可。当kill处于X-Window界面时,主要的程序(除了崩溃的程序之外)一般都已经正常启动了。此时打开一个终端,在那里中止有问题的程序。比如,如果Mozilla浏览器程序出现了锁死的情况,可以使用kill命令来中止所有包含有Mozolla浏览器的程序。首先用top命令查处该程序的 PID,然后使用kill命令停止这个程序:&#kill -SIGKILL XXX&其中,XXX是包含有Mozolla浏览器的程序的进程标识号。&(3)使用命令回收内存&我们知道内存对于系统是非常重要的,回收内存可以提高系统资源。kill命令可以及时地中止一些&越轨&的程序或很长时间没有相应的程序。例如,使用top命令发现一个无用 (Zombie) 的进程,此时可以使用下面命令:&#kill -9 XXX&其中,XXX是无用的进程标识号。&然后使用下面命令:&#free&此时会发现可用内存容量增加了。&(4)killall命令&Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:&# killall -HUP inetd&*杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志。&首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令:&# kill -pid&注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的&僵尸进程&,应确保在杀死父进程之前,先杀死其所有的子进程。&--------------------------------------------------------------------------------&*确定要杀死进程的PID或PPID&# ps -ef | grep httpd&--------------------------------------------------------------------------------&*以优雅的方式结束进程&# kill -l PID&-l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功--或许仍然需要先手工杀死子进程,然后再杀死父进程。&--------------------------------------------------------------------------------&*TERM信号&给父进程发送一个TERM信号,试图杀死它和它的子进程。&# kill -TERM PPID&--------------------------------------------------------------------------------&*killall命令&killall命令杀死同一进程组内的所有进程。其允许指定要终止的进程的名称,而非PID。&# killall httpd&--------------------------------------------------------------------------------&*停止和重启进程&有时候只想简单的停止和重启进程。如下:&# kill -HUP PID&该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。&--------------------------------------------------------------------------------&*绝杀 kill -9 PID&同意的 kill -s SIGKILL&这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。&当使用此命令时,一定要通过ps -ef确认没有剩下任何僵尸进程。只能通过终止父进程来消除僵尸进程。如果僵尸进程被init收养,问题就比较严重了。杀死init进程意味着关闭系统。&如果系统中有僵尸进程,并且其父进程是init,而且僵尸进程占用了大量的系统资源,那么就需要在某个时候重启机器以清除进程表了。
阅读(...) 评论()【Linux学习笔记】kill及kill -9的用法及如何实现进程的优雅退出_Linux系统_ThinkSAAS
【Linux学习笔记】kill及kill -9的用法及如何实现进程的优雅退出
【Linux学习笔记】kill及kill -9的用法及如何实现进程的优雅退出
内容来源: 网络
【Linux学习笔记】kill及kill -9的用法及如何实现进程的优雅退出
1. kill与signals
我们这里所说的kill是指作为shell command的那个kill(相对地,linux系统中还有个叫做kill的system call, man 2 kill可查看其功能及用法),shell终端中输入man kill可以看到,kill的作用是向某个指定的进程或进程组发送指定信号,从而结束该进程/进程组。-s选项可以指定要发送的具体信号,如果没有指定,则默认发送SIGTERM信号至指定进程/进程组,若进程没有捕获该信号的逻辑,则SIGTERM的作用是终止进程。
kill支持发送的信号列表可以通过kill -l查看,而这些信号的具体含义可以通过man 7 signal查看。在我的机器上,man 7 signal输出的POSIX标准信号如下所示(kill支持的信号还有POSIX没有定义的非标准信号,这里没有摘出,感兴趣的同学可以通过man查看)。
-------------------------------------------------------------------------
Hangup detected on controlling terminal
or death of controlling process
Interrupt from keyboard
Quit from keyboard
Illegal Instruction
Abort signal from abort(3)
Floating point exception
Kill signal
Invalid memory reference
Broken pipe: write to pipe with no readers
Timer signal from alarm(2)
Termination signal
User-defined signal 1
User-defined signal 2
Child stopped or terminated
Continue if stopped
Stop process
Stop typed at tty
tty input for background process
tty output for background process
上面的输出结果中:
第1列为信号名;
第2列为对应的信号值,需要注意的是,有些信号名对应着3个信号值,这是因为这些信号值与平台相关,将man手册中对3个信号值的说明摘出如下,the first one is usually valid for alpha and sparc, the middle one for i386, ppc and sh, and the last one for mips.
第3列为操作系统收到信号后的动作,Term表明默认动作为终止进程,Ign表明默认动作为忽略该信号,Core表明默认动作为终止进程同时输出core dump,Stop表明默认动作为停止进程。
第4列为对信号作用的注释性说明,浅显易懂,这里不再赘述。
需要特别说明的是,SIGKILL和SIGSTOP这两个信号既不能被应用程序捕获,也不能被操作系统阻塞或忽略。
2. kill pid与kill -9 pid的区别
kill pid的作用是向进程号为pid的进程发送SIGTERM(这是kill默认发送的信号),该信号是一个结束进程的信号且可以被应用程序捕获。若应用程序没有捕获并响应该信号的逻辑代码,则该信号的默认动作是kill掉进程。这是终止指定进程的推荐做法。
kill -9 pid则是向进程号为pid的进程发送SIGKILL(该信号的编号为9),从本文上面的说明可知,SIGKILL既不能被应用程序捕获,也不能被阻塞或忽略,其动作是立即结束指定进程。通俗地说,应用程序根本无法“感知”SIGKILL信号,它在完全无准备的情况下,就被收到SIGKILL信号的操作系统给干掉了,显然,在这种“暴力”情况下,应用程序完全没有释放当前占用资源的机会。事实上,SIGKILL信号是直接发给init进程的,它收到该信号后,负责终止pid指定的进程。在某些情况下(如进程已经hang死,无法响应正常信号),就可以使用kill -9来结束进程。
若通过kill结束的进程是一个创建过子进程的父进程,则其子进程就会成为孤儿进程(Orphan Process),这种情况下,子进程的退出状态就不能再被应用进程捕获(因为作为父进程的应用程序已经不存在了),不过应该不会对整个linux系统产生什么不利影响。
3. 应用程序如何优雅退出
Linux Server端的应用程序经常会长时间运行,在运行过程中,可能申请了很多系统资源,也可能保存了很多状态,在这些场景下,我们希望进程在退出前,可以释放资源或将当前状态dump到磁盘上或打印一些重要的日志,也就是希望进程优雅退出(exit gracefully)。
从上面的介绍不难看出,优雅退出可以通过捕获SIGTERM来实现。具体来讲,通常只需要两步动作:
1)注册SIGTERM信号的处理函数并在处理函数中做一些进程退出的准备。信号处理函数的注册可以通过signal()或sigaction()来实现,其中,推荐使用后者来实现信号响应函数的设置。信号处理函数的逻辑越简单越好,通常的做法是在该函数中设置一个bool型的flag变量以表明进程收到了SIGTERM信号,准备退出。
2)在主进程的main()中,通过类似于while(!bQuit)的逻辑来检测那个flag变量,一旦bQuit在signal handler function中被置为true,则主进程退出while()循环,接下来就是一些释放资源或dump进程当前状态或记录日志的动作,完成这些后,主进程退出。
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信

我要回帖

更多关于 linux进程kill不掉 的文章

 

随机推荐