kill一堆进程 linux_linux kill 杀死进程 进程申请的堆空间如何释放 - CSDN
  • 但是,如果有一堆进程需要终止怎么办?今天我就遇到了这样的问题,启动了好多rtp包接收进程,结果停不下来。  用 ps -ef 命令查看,如下:  想了一下,应该可以用pipe(管道)来完成这项任务,经过测试,真的...

      在使用Linux的过程中,有时候我们需要手动去终止进程,少的话还好,找出pid把它kill掉即可。但是,如果有一堆进程需要终止怎么办?今天我就遇到了这样的问题,启动了好多rtp包接收进程,结果停不下来。
      用 ps -ef 命令查看,如下:

    这里写图片描述

      想了一下,应该可以用pipe(管道)来完成这项任务,经过测试,真的成功了。命令如下:
      

    $ ps -ef | grep rtprecv | grep -v grep | awk '{print $2}' | xargs kill -9

    解释一下:
      ps -ef 用于获取当前系统所有进程,如上图所示。
      grep rtprecv 过滤出与“rtprecv”字符相关的数据(以行为单位)。
      grep -v grep 的作用是除去本次操作所造成的影响,-v 表示反向选择。
      awk '{print $2}' 表示筛选出我们所关注的进程号,$2 表示每行第二个变量,在这个例子中就是进程号。所以如果你使用ps工具不一样,或者ps带的参数不一样,那需要关注的就可能不是$2,可能是$1
      xargs kill -9 中的 xargs 命令表示用前面命令的输出结果(也就是一系列的进程号)作为 kill -9 命令的参数,-9 表示强制终止,不是必须的。

      上面是用 kill 配合过滤操作来完成,实际上还有更简单的方法——使用 killall 命令。killall 通过进程名字终止所有进程,用法如下:killall <process_name>
      在我们这个例子中,可以这么用:

    # killall -9 rtprecv

      当然,killall 也可以和 ps 或 pgrep 结合使用,以此来查看哪些程式正在运行。


    【扩展知识】
      与终止进程相关的命令有:

    • ps : 报告当前进程的快照
    • kill : 向一个进程发出信号
    • killall : 按名字消灭进程
    • pkill : 根据名字和其它属性查看或者发出进程信号
    • skill : 发送一个信号或者报告进程状态
    • xkill : 按照X资源消灭一个客户程序

    终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。
      另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如 mysql 服务器最好是按其正常的程序关闭,而不是用 pkill mysqldkillall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用 kill 来杀掉。
      xkill 是在桌面用的杀死图形界面的程序。比如当 firefox 出现崩溃不能退出时,点鼠标就能杀死 firefox 。当xkill运行时出来和个人脑骨的图标,哪个图形程序崩溃一点就 OK 了。如果您想终止 xkill ,就按右键取消。
      
      另外,说一下 grep 和 pgrep 的区别:
      pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用。用法:pgrep 参数选项 程序名
      grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix 的 grep 家族包括 grep、egrep 和 fgrep。
      简单来说,一个是查询程序的运行状态,一个是搜索内容。

    展开全文
  • ps -ef | grep LOCAL=NO | grep -v grep | cut -c 9-15 | xargs kill -9 管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的 几个命令: “ps - ef”是Red ...
    ps -ef | grep LOCAL=NO | grep -v grep | cut -c 9-15 | xargs kill -9 

      管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的

    几个命令:

    “ps - ef”是Red Hat 里查看所有进程的命令。这时检索出的进程将作为下一条命令“grep LOCAL=NO”的输入。

      “grep LOCAL=NO”的输出结果是,所有含有关键字“LOCAL=NO”的进程,这是Oracle数据库中远程连接进程的共同特点。

      “grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。

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

      “xargs kill -9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -9”命令的参数,并执行该令。

    “kill -9”会强行杀掉指定进程,这样就成功清除了oracle的所有远程连接进程。其它类似的任务,只需要修改“grep LOCAL=NO”中的关键字部分就可以了。

    ps -ef | grep /usr/local/apache-tomcat-document/ | grep -v grep|cut -c 9-15 | xargs kill -9

    抄袭地址 :http://www.jb51.net/LINUXjishu/43534.html

    ps -ef |grep tomcat | grep -v grep | awk '{print $2}' | xargs kill

    借鉴脚本之家代码跳过grep 端口 【grep -v grep】

    awk 制定第二个端口

    xargs kill 或者是 kill -9

    展开全文
  • ps aux|grep xxx | awk ‘{print $2}’| xargs kill -9

    ps aux|grep xxx | awk ‘{print $2}’| xargs kill -9

    展开全文
  • 种情况: [root@qht2 ~]# ps -ef | grep httpd root 3799 1 0 10:41 pts/0 00:00:00 /usr/sbin/nss_pcache off /etc/httpd/alias root 3803 1 3 10:41 ? 00:00:00 /usr/sbin/httpd apache 3807 3803 0 ...
    第一种情况:
    [root@qht2 ~]# ps -ef | grep httpd
    root 3799 1 0 10:41 pts/0 00:00:00 /usr/sbin/nss_pcache off /etc/httpd/alias
    root 3803 1 3 10:41 ? 00:00:00 /usr/sbin/httpd
    apache 3807 3803 0 10:41 ? 00:00:00 /usr/sbin/httpd
    apache 
    3808 3803 0 10:41 ? 00:00:00 /usr/sbin/httpd
    apache 3809 3803 0 10:41 ? 00:00:00 /usr/sbin/httpd
    apache 3810 3803 0 10:41 ? 00:00:00 /usr/sbin/httpd
    apache 3811 3803 0 10:41 ? 00:00:00 /usr/sbin/httpd
    apache 3812 3803 0 10:41 ? 00:00:00 /usr/sbin/httpd
    apache 3813 3803 0 10:41 ? 00:00:00 /usr/sbin/httpd
    apache 3814 3803 0 10:41 ? 00:00:00 /usr/sbin/httpd
    root 3816 3749 0 10:42 pts/0 00:00:00 grep httpd
    [root@qht2 ~]# kill 3803
    [root@qht2 ~]# ps -ef | grep httpd
    root 3820 3749 0 10:42 pts/0 00:00:00 grep httpd
    显然kill掉父进程,子进程也消亡了!
    第二种情况:
    我写了两个脚本a.sh 和b.sh, 在a.sh中调用b.sh,运行后显然有两个进程,而且a.sh为b.sh的父进程,然后我再另外一个terminal中kill 掉a.sh进程,但b.sh过寄给init进程,而不会终止!
    我的例子如下:
    [root@qht2 ~]# cat a.sh 
    #!/bin/sh
    echo "A Begin"
    ./b.sh
    echo "A End"
    [root@qht2 ~]# cat b.sh 
    #!/bin/sh 
    echo "B Begin"
    sleep 180
    mkdir abcdef
    echo "B End"
    [root@qht2 ~]# ./a.sh 
    A Begin
    B Begin
    在这里等待(因为b.sh中有sleep 180)
    打开另一个terminal,查看进程
    [root@qht2 ~]# ps -ef | grep sh
    。。。。。。
    root 3984 3749 0 11:05 pts/0 00:00:00 /bin/sh ./a.sh
    root 3985 3984 0 11:05 pts/0 00:00:00 /bin/sh ./b.sh ##显然b.sh是a.sh的子进程
    root 3990 3838 0 11:05 pts/1 00:00:00 grep sh 
    [root@qht2 ~]# kill 3984
    [root@qht2 ~]# ps -ef | grep sh
    。。。。。。
    root 3985 1 0 11:05 pts/0 00:00:00 /bin/sh ./b.sh
    root 3992 3838 2 11:06 pts/1 00:00:00 grep sh
    第一ternimal中的显示如下:
    [root@qht2 ~]# ./a.sh 
    A Begin
    B Begin
    Terminated
    但b.sh还是会运行(因为生成了abcdef目录)!
    这两种情况的区别是:
    父进程退出,子进程被init领养,继续运行,这才是正常的吧
    而前一个,从名字看明显是一个守护进程,id=3803的是会话首进程,也是进程组的组长,KILL掉它,会导致SIGHUP发送给该进程组的每一个进程(就是所有父进程为3803的那些),默认情况下,SIGHUP会终止进程,所以全没了.
    详细解释:
    所有进程都是属于一个进程组的,而进程组又属于一个会话.
    普通的进程所属的会话有控制终端,守护进程所属会话没有控制终端.
    普通会话的首进程,同时也是建立与控制终端联系的进程,在它被KILL掉时,会向前台进程组就(a.sh)发送SIGHUP信号.默认情况下,接收到SIGHUP的进程会被终止.此时后台进程组(b.sh)不受影响.
    守护进程的会话,因为没有控制终端,所以就没有前后台进程组之分,会话首进程同时也是进程组组长.它被KILL掉会向该组每个进程发送SIGHUP,导致组中进程被中止.
    第二个试验,一个脚本调用另一个脚本的行为,创建了一个新的进程组,脚本a.sh是进程组组长,但却不是所在会话的首进程或控制进程,所以它被KILL掉,不影响同组的进程(b.sh),此时init进程会自动领养脚本B所在进程,并在它运行到结束时回收它所占用的资源.
    可以用ps -eo pid,ppid,pgrp,session,comm跑一下.
    对于第一种情况,就是守护进程,应该会发现那一堆进程的session(会话ID)和pgrp(组ID)都一样且是相同的,而且正好等于子进程的ppid,同时也是你KILL掉那个进程的pid.这样可以证实你KILL掉的是会话首进程.
    对于第二种情况,你会发现,进程A和B,session和pgrp是一样的,但两者却并不相同,session的值虽无法确定,但pgrp却应该正好是进程A的pid,这说明了进程A是组长但却不是会话首进程,所以KILL掉它不会导致子进程被结束.
    [root@qht2 ~]# ps -eo pid,ppid,pgrp,session,comm
      PID  PPID  PGRP  SESS COMMAND
     1     0     1      1   init
      ***

     3621     1  3621  3621 httpd
     3626  3621  3621  3621 httpd
     3627  3621  3621  3621 httpd
     3628  3621  3621  3621 httpd
     3629  3621  3621  3621 httpd
     3630  3621  3621  3621 httpd
     3631  3621  3621  3621 httpd
     3632  3621  3621  3621 httpd
     3633  3621  3621  3621 httpd
     3643  3574  3643  3574 a.sh
     3644  3643  3643  3574 b.sh
     3645  3644  3643  3574 sleep
     3646  3571  3646  3646 bash
     3674  3646  3674  3646 ps
    [root@qht2 ~]#
    展开全文
  • 公司测试服务器被人抓去挖矿了,CPU直接飙升到600%,700%。这个挖矿病毒特别难搞,找了公司...就想着先简单处理一下,写个shell脚本,每过20分钟(通过观察,kill -9病毒进程之后 20分钟后它又出现了) kill -9cpu超过...
  • 相信很多程序员对于Linux系统都不陌生,即使自己的日常开发机器不是Linux,那么线上服务器也大部分都是的,所以,掌握常用的Linux命令也是程序员必备的技能。 但是,怕就怕很多人对于部分命令只是一知半解,使用不当...
  • 种情况: [root@qht2 ~]# ps -ef | grep httpd root 3799 1 0 10:41 pts/0 00:00:00 /usr/sbin/nss_pcache off /etc/httpd/alias root 3803 1 3 10:41 ? 00:00:00 /usr/sbin/httpd apache 3807 3803 0 10...
  • linux机器启动tomcat之后,内存迅速飙高,free -m 查看只剩下点点内存了,而使用top命令查看的时候,占用内存最高的java进程却只占用31.4%。不久tomcat进程就被kill掉了,查看 cat /var/log/messages 发现竟然有3...
  • 进程: 1.进程和程序的区别: 程序是放在磁盘上的可执行文件,而进程是程序的执行状态。进程除了有自己的存储空间外,还有包括程序计数器、...linux进程的七种状态:(1、2、3、4)可认为是阻塞态。 有关进
  • linux批量杀死进程

    2017-11-28 10:09:55
    一般服务器杀死进程直接用kill就可以了,但如果程序出问题,启了堆进程个个关掉那太恐怖了。 二、实战 sudo ps aux|grep xxx|awk '{print $2}'|xargs kill -9这里是批量杀死进程名包含xxx的进程,记录做个...
  • 检查服务信息的时候发现有个可疑的进程进行咨询 .zl 以及 .zlXXXXX 随机数字 其中 .zlXXXX 这个进程杀掉后还会自动启另外进程,数字就会变化了 crontab 没有发现定时任务 见截图 [img=...
  • 在本地调试agent相关功能,需要经常性的杀掉Java进程,验证一些极端情况。...经过一番查阅,后面的数字代表的是具体信号,kill命令可将指定的信号发送给相应的进程linux中常见的信号如下: 1 S...
  • 1、ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9说明:“grep firefox”的输出结果是,所有含有关键字“firefox”的进程。“grep -v grep”是在列出的进程中去除含有关键字“grep”的进程...
  • 关掉linux很多进程

    2019-06-27 11:28:34
    而你是否还在个的kill。 接下来我教你个小秘诀吧。 1、首先我们查看当前的进程列表。 我们以查看nginx进程为例,通过ps -ef显示当前机器运行的所有进程,再通过grep nginx过滤出包含nginx字符串的进程。....
  • OOM_killer是Linux自我保护的方式,当内存不足时不至于出现太严重问题,有点壮士断腕的意味 在kernel 2.6,内存不足将唤醒oom_killer,挑出/proc//oom_score最大者并将之kill掉   为了保护重要进程不被oom...
  • linux kill常见信号量 在 Java中的应用 你好! 这是你第次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对...
  • 进程管理 进程的重要性:  我们在使用操作系统时,各项作业都是通过某个... 如果Linux系统很忙碌,当整个系统资源快要用完的时候,怎么找到大量占用系统资源的进程,删除该进程,让系统恢复正常  如果由于进程
  • 运维经–目录 批量杀掉(kill)进程 想要干掉个进程,用单体...好吧,那如果要干掉堆进程需要使用什么技能? fire in the hole! 今天说个AOE技能,团灭ACE进程。 ps -ef|grep abc | grep -v grep | awk '{...
1 2 3 4 5 ... 20
收藏数 14,252
精华内容 5,700
关键字:

kill一堆进程 linux