shell脚本:杀掉特定关键字进程


ps ax |grep master | awk '{print $1}' |xargs kill -9




#查询并显示 -v是不包括, sed是选第二个 awk是打印第几个
ps ax |grep unicorn_rails | grep -v grep | sed -n 2p| awk '{print $1}'


如何根据进程名查询进程PID值(多种方法)
2010-12-28 13:18
很多时候,我们都需要根据进程名查询进程PID值,笔者总结了多种方法解决:

1、pidof命令

用pidof指令很轻易的找到您所想要的程序内容
范例二:仅列出关于 root 的所有程序开启的 socket 档案
root@linux ~]# lsof -u root -a -U

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
kmodule 793 root 4u unix 0xd744b700 3549 socket
udevd 801 root 5u unix 0xd744bb40 3561 socket
syslogd 1539 root 0u unix 0xd75946e0 4870 /dev/log
# 注意到那个 -a 吧!如果你分别输入 lsof -u root 及 lsof -U ,会有啥信息?
# 使用 lsof -u root -U 及 lsof -u root -a -U ,呵呵!都不同啦!
# -a 的用途就是在解决同时需要两个项目都成立时啊! ^_^


范例三:请列出目前系统上面所有的被启动的周边设备
[code="java"]# lsof +d /dev[/code]
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root 10u FIFO 0,13 1834 /dev/initctl
kmodule 793 root 2u CHR 1,3 2135 /dev/null
kmodule 793 root 3u CHR 5,1 2134 /dev/console
udevd 801 root 2u CHR 1,3 2135 /dev/null
syslogd 1539 root 0u unix 0xd75946e0 4870 /dev/log xinetd 1589 root 1r CHR 1,3 2135 /dev/null
#看吧!因为设备都在 /dev 里面嘛!所以啰,使用搜寻目录即可啊!
范例四:秀出属于 root 的 bash 这支程序所开启的档案
[code="java"]# lsof -u root | grep bash[/code]
bash 26199 root cwd DIR 3,2 4096 159875 /root
bash 26199 root rtd DIR 3,1 4096 2 /
bash 26199 root txt REG 3,1 686520 294425 /bin/bash
bash 26199 root mem REG 3,1 83160 32932 /usr/lib/gconv/BIG5.so
bash 26199 root mem REG 3,1 46552 915764 /lib/libnss_files-2.3.5.so
.....底下的数据就省略不写了.....
这个指令可以找出您想要知道的某个程序是否有启用哪些信息? 例如上头提到的范例四的执行结果呢!

[code="java"]# pidof [-sx] program_name[/code]
参数:
-s :仅列出一个 PID 而不列出所有的 PID
-x :同时列出该 program name 可能的 PPID 那个程序的 PID
范例:
范例一:列出目前系统上面 init 以及 syslogd 这两个程序的 PID
# pidof init syslogd
1 2546
# 理论上,应该会有两个 PID 才对。上面的显示也是出现了两个 PID 喔。
# 分别是 init 及 syslogd 这两支程序的 PID 啦。


范例二:找出 bash 即以 bash 为 PPID 的几个主要的 PID
# pidof -x bash
2961 2959 338
# 因为我的系统被我登入之后,我就会主动取得一个 bash 的程序,所以啰,
# 很自然就会拥有一个 PID 啊。只要我再以底下的方式,就可以取得我所想要的 PID 内容。
[code="java"]# ps aux | egrep '(2961|2959|338)'[/code]
dmtsai 338 0.0 0.1 6024 1536 pts/0 Ss 16:43 0:00 -bash
kiki 2961 0.0 0.1 6025 1526 pts/0 Ss 17:43 0:00 -bash
.....以下省略......
很简单的用法吧,讲解的这个pidof 指令,并且配合 ps aux 与正规表示法, 就可以很轻易的找到您所想要的程序内容了呢。



2、pgrep命令

语 法
pgrep [必要参数] [选择参数] [程序] 功 能 pgrep 命令:可以依照进程ID来浏览程序
类似命令: ps kill grep killall less top


参数必要参数
-f 显示完整程序
-l 显示源代码
-n 显示新程序
-o 显示旧程序
-v 与条件不符合的程序
-x 与条件符合的程序


选择参数
-p<进程号> 列出父进程为用户指定进程的进程信息
-t<终端> 指定终端下的所有程序
-u<用户> 指定用户的程序


范例


范例1:显示指定终端相联系的程序

root@snail-hnlinux:~# pgrep -t tty2

862
8236
8672
root@snail-hnlinux:~#



范例2:显示与某字符串相关的命令
root@snail-hnlinux:~# pgrep at //列出at字符串相关的程序
3
5
19
20
42
root@snail-hnlinux:~#



范例3:列出父进程为init进程的所有进程

root@snail-hnlinux:~# pgrep -P 1 //列出父进程为1的所有进程
314
317
672

root@snail-hnlinux:~#



范例4: 反向选择


root@snail-hnlinux:~# pgrep -v -P 1 //列出父进程不为1的进程

1
2
3

root@snail-hnlinux:~#



范例5:显示指定用户进程


root@snail-hnlinux:~# pgrep -u root


1
2
3
显示结果省略



3、ps命令

查找进程httpd的PID:

ps -ef | grep "httpd" | grep -v "grep" | awk '{print $2}' 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值