添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
smx       1822     1  0 11:38 ?        00:00:49 gnome-terminal
smx       1823  1822  0 11:38 ?        00:00:00 gnome-pty-helper
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 update-notifier
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-terminal
smx       1823  0.0  0.0   1988   712 ?        S    11:38   0:00 gnome-pty-helper
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 update-notifier
smx      11953  0.0  0.0   2716  1064 pts/0    R+   21:42   0:00 ps -aux

此时如果我想杀了火狐的进程就在终端输入:

$ kill -s 9 1827

其中-s 9 制定了传递给进程的信号是9,即强制、尽快终止进程。各个终止信号及其作用见附录。

1827则是上面ps查到的火狐的PID。

简单吧,但有个问题,进程少了则无所谓,进程多了,就会觉得痛苦了,无论是ps -ef 还是ps -aux,每次都要在一大串进程信息里面查找到要杀的进程,看的眼都花了。

改进1

把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

还是嫌打字多?

改进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作参数,杀掉对应的进程。

改进7

难道每次都要调用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

附录:各种信号及其用途

kill-9发送SIGKILL信号将其终止,但是以下两种情况不起作用:a、该进程处于"Zombie"状态(使用ps命令返回defunct的进程)。此时进程已经释放所有资源,但还未得... 来自: 一只叫做Unix的猫 kill命令格式:kill-Signalpidpid是进程号,可以用ps命令查出signal是发送给进程的信号,默认参数下,kill发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行... 来自: u010486679的专栏 想必很多时候我们会遇到,进程使用后,服务器没有释放改进程而开启新进程的情况。比如,java中,进程启动多个:当然,下面的worker和logwriter并没有错误,这里是演示:hadoop@hadoo... 来自: 傲娇的博客 今天在写脚本的时候遇到一个问题,需求是通过本机远程连接到其他服务器,杀掉之前提起的nmon进程,然后再返回本机 于是命令如下(以本机localhost为例): ssh localhost "ps -e ps -auxw | grep resin | grep -v grep| awk '{print $2}'|-exec kill -9 {} \;为什么不能执行,说-exec没有这个命令,这我写错了 HOSTNAME=$1 FILEPATH=$2 FILENAME=$3 NAME=hadoop ssh $HOSTNAME -l $NAME cd $FILEPATH; nohup ./$FILEN ps-ef|grepmonitor_psr.sh|grepiboss2|grepismp|grep-vgrep|awk{print$2}|xargskill-9 注*A. $2表示第2列,即进程号PI... 来自: foxliucong的专栏 阅读目录为什么要用xargs,问题的来源 xargs是什么,和管道有什么不同 xargs的一些选项为什么要用xargs,问题的来源在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇... 来自: vanturman的博客 背景:偶尔会遇到一些相同进程卡死的情况,监控不当的时候会影响应用,写个判断语句,定时监控,进程多的时候会自动清除#!/bin/bash#假设进程中同一包含akel关键字str=`ps-ef|grepa... 来自: wen‘s blog 我在Windows系统上使用xshell,怎样才能把写完的脚本弄进去,下次更新时,敲一下命令就能执行上边的操作(我查看资料还需要给脚本添加权限)?下边常用的命令能否补充并优化下? 操作流程:用xshe 1)查看进程的方法: ps-ef  或者 psauxroot  15087 0.0 0.0   0  0?    S  23:31 0:00[kworker/1:1]root  15219 0.0 0... ps-aux|grepping6|cut-c9-15|xargskill-9这条命令用了管道的方式,|左边的输出作为右边的输入。ps-aux列出进程grepping6是找出上一步输出的进程中包含pi... 来自: 勤劳的小蜜蜂 kill所有java进程ps-ef|grepjava|grep-vgrep|awk'{print$2}'|xargs-pkill-9如果不需要询问,把xargs后面-p参数去掉Aix通过shell脚本... 来自: cainiao的专栏 Xargs用法详解1. 简介  之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如:find /sbin -perm +700 |... 来自: zhangfn2011的专栏 1.功能:xargs可以将stdin中以空格或换行符进行分隔的数据,形成以空格分隔的参数(arguments),传递给其他命令。因为以空格作为分隔符,所以有一些文件名或者其他意义的名词内含有空格的时候... 来自: Dablelv的博客专栏 ps-ef|grepmcfcm_st|grep-vgrep|cut-c9-15|xargskill-9 管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联... 来自: 叶子一哥 xargs-buildandexecutecommandlinesfromstandardinputxargs通常和xargs一起使用,能够解决许多问题~在使用find命令的-exec选项处理匹配到的... 来自: 小菜鸟的天地 操作系统(OperatingSystem,简称OS):    管理各种软硬件资源,是最复杂的软件。它处于硬件设备和应用程序的中间层,对下管理各种硬件设备,对上为所有应用程序的执行提供一个平台。主流操作... 来自: W77_20的博客 经常需要Kill多个进程,这些进程包含共同的关键字,可以用一条命令Kill掉它们。psaux|grep"common"|cut–c9-15|xargskill–9管道符“|”用来隔... 来自: forfuture1978的专栏 1、ps指令与kill配合:      ps-ef|grepLOCAL=NO|grep-vgrep|cut-c9-15|xargskill-9   管道符“|”用来隔开两个命令,管道符左边命令的输出会... 来自: lgh1117的专栏 日常工作中常用killpid或者kill-9pid来杀进程。批量杀进程$ps-fuoraprod|awk'{print$2}'|xargskill-9$ps-ef|grep$ORACLE_SID|gr... 来自: peiyongbin的专栏 测试环境部署的时候经常需要重启,每次杀进程太麻烦,shell也不是很熟,同名的多个进程手动杀太麻烦了,google一个命令,分享下。os环境centos6.2 bashshell目的:一次杀死uwsg... 来自: orangleliu 笔记本 今天编译mysql,启动发现提示:StartingMySQL/etc/init.d/mysqld:line159:kill:(21755)-Nosuchprocess去Google了一下,原来是用户权... 来自: php程序员日志 在重启nginx容器后,报错:nginx:[alert]kill(11,1)failed(3:Nosuchprocess)原因:启动nginx服务未启动成功,可以重新启动启动nginx服务,或者:重新... 来自: xiejunna的博客 今天编译mysql,启动发现 提示: StartingMySQL/etc/init.d/mysqld:line159:kill:(21755)-Nosuchprocess 去Google了一下,原来是... 来自: looksky's blog 【问题描述】更改完nginx.conf文件后,执行/application/nginx/sbin/nginx-sreload命令重新加载配置文件,报以下错误信息:nginx:[alert]kill(1... 来自: 王玉Student的博客 nginx:[alert]kill(2094,1)failed(3:Nosuchprocess)重启nginx报错:意思是没有这样的进程,怀疑可能是没有启动nginx,whereisnginx#定位n... 来自: 一个有梦想的咸鸭蛋 [root@3f2e8e42d52f/]#nginx-sreloadnginx:[alert]kill(189,1)failed(3:Nosuchprocess) 杀死189进程,可是并没有[root... 来自: design321的专栏 这个问题遇到不止一次,记下解决方法备忘。 运行稳定性脚本时框架崩溃,打印的堆栈信息如下: libcore.io.ErrnoException:killfailed:ESRCH(Nosuchproces... 来自: 风一样自由 如果你添加/修改默认网关时遇到这个问题。原因:你要添加的网关不在你主机所在的网段。解决方法:比如你要添加的网关是10.9.39.250但是本机没有10.9.39段的网卡sudorouteadd10.9... 来自: 吴普的部落格 问题:  StartingMySQL/etc/init.d/mysql:line159:kill:(21755)-Nosuchprocess解决办法编辑mysqld:[root@linux115~]#... 来自: zglin689的专栏 常规篇: 首先,用ps查看进程,方法如下:$ps-ef……smx      1822    1 011:38?       00:00:49gnome-terminalsmx      1823 18... 来自: 明明 环境信息:centos6.5问题描述:大数据集群HDFS的DataNode的一个节点down掉,去服务器查看,发现datanode节点还在,打算重新启动该节点的datanode,使用hadoop-da... 来自: microGP的专栏 1.用ps查看进程pid  ps-ef|grepphp-fpm2.杀掉进程 kill9333.查看进程并杀掉kill-s9 `ps-ef|grep-vgrep|grep'resignsign'|awk... 来自: mengzuchao的专栏 kill-9发送SIGKILL信号将其终止,但是以下两种情况不起作用:(1)该进程处于”Zombie”状态(使用ps命令返回defunct的进程,僵尸进程)。此时进程已经释放所有资源,但还未得到其父进... 来自: 云深杂记 关闭进程的3个命令:kill、killall、pkillkill关闭进程:kill进程号#关闭单个进程killall和pkill命令用于杀死指定名字的进程通过信号的方式来控制进程:kill-l#列出所... 来自: 小白的进化之路 kill-9发送SIGKILL信号将其终止,但是以下两种情况不起作用:a、该进程处于”Zombie”状态(使用ps命令返回defunct的进程)。此时进程已经释放所有资源,但还未得到其父进程的确认。”... memcached启动命令[quote]memcached-d-m10-uroot-l192.168.0.122-p11200-c256-P/tmp/memcached.pid[/quote]-d选项... 来自: xly_971223的专栏 本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇... 来自: Lynn_Blog 这里的数据使用的是标准的can设备产生的can信号(扩展帧发送数据ID=0x11121181  Data=0x06 0x08) 信号的波形如图1所示,这里示波器的探头接的是CAN_H,探头的夹子... 来自: minyuanxiani的专栏 在开发软件时,碰到了有一大批的dll需要加载,且这些dll中有隐式链接到其它dll情况.由于某些原因,不能将dll放入系统目录中也不能将他们放置在应用程序同一目录中. 为集中管理,将其放置到应用程序... 来自: nscboy的专栏 基本功能1. 自定义标题栏。(标题栏不做任何功能)2. 有左右发送按钮。(这个只能自己和自己聊天哦,所以有左右发送按钮)   (1)点击左边按钮发送按钮,在ListView的左侧显示。 来自: To_be_Designer 前言在决定用这个标题之前甚是忐忑,主要是担心自己对AIDL的理解不够深入,到时候大家看了之后说——你这是什么玩意儿,就这么点东西就敢说够了?简直是坐井观天不知所谓——那样就很尴尬了。不过又转念一想,我... 来自: lypeer的专栏 此处仅以VS2010为例,详细说明一下如何在VS环境下生成和使用C++的静态库与动态库。Qt下生成和使用静态和动态库后续再讲。 本文仅供初学者参考,如果有问题欢迎大家指正。        首先简单地理... 来自: luyan的博客 问题场景描述整个项目通过Maven构建,大致结构如下: 核心Spring框架一个module spring-boot-base service和dao一个module server-core 提供系统... 来自: 开发随笔 请在跟贴中注明站点名称,链接地址以及简要描述信息****************************************************名称:微软.NET快速入门官方网站地址:http... 来自: 似水年华 Tinker的配置   目前公司项目中使用Tinker作为热更新方案,由于Bugly的热更新是基于Tinker,并且提供了补丁的自动下载、合成、应用的功能以及补丁管理后台,所以集成了Bugly的... 来自: Chay_Chan的博客
Signal Description Signal number on Linux x86 [ 1 ]
SIGABRT Process aborted
SIGALRM Signal raised by alarm
SIGBUS Bus error: "access to undefined portion of memory object"
SIGCHLD Child process terminated, stopped (or continued*)
SIGCONT Continue if stopped
SIGFPE Floating point exception: "erroneous arithmetic operation"
SIGHUP Hangup
SIGILL Illegal instruction
SIGINT Interrupt
SIGKILL Kill (terminate immediately)
SIGPIPE Write to pipe with no one reading
SIGQUIT Quit and dump core
SIGSEGV Segmentation violation
SIGSTOP Stop executing temporarily
SIGTERM Termination (request to terminate)
SIGTSTP Terminal stop signal
SIGTTIN Background process attempting to read from tty ("in")
SIGTTOU Background process attempting to write to tty ("out")
SIGUSR1 User-defined 1
SIGUSR2 User-defined 2
SIGPOLL Pollable event
SIGPROF Profiling timer expired
SIGSYS Bad syscall
SIGTRAP Trace/breakpoint trap
SIGURG Urgent data available on socket
SIGVTALRM Signal raised by timer counting virtual time: "virtual timer expired"
SIGXCPU CPU time limit exceeded
SIGXFSZ File size limit exceeded