每天一个知识点-linux中获得进程号

140 阅读1分钟

获取linux服务进程号

 ps -ef | grep "服务名" | grep -v "grep" | awk '{print $2}'

举个例子

[root@bd1 ~]# ps -ef|grep kk
root      972997  692368  0 09:41 pts/4    00:00:00 grep --color=auto kk
[root@bd1 ~]# ps -ef|grep data
root      458995  458974  0 10月27 ?      00:04:26 java -jar /app/test-api.jar
root     1011108  692368  0 09:44 pts/4    00:00:00 grep --color=auto data

不管管道(grep)查询的是什么,都会查出来相关的的结果,其实默认结果就是该命令本身触发的pid.这个是需要过滤掉的。

# ps -ef|grep "被查询的服务名"  查询服务进程号命令 
# grep -v grep  在文档中过滤掉包含有grep字符的行   
# awk '{print $2}' 一行一行的读取指定的文件, 以空格作为分隔符,打印第二个字段。

 示例如下:

[root@zzjjj app]$ ps -ef | grep tomcat|grep /app/upay/apps/xcharge-simulator_01/bin | grep -v grep\
upay 16675 1 0 14:07 pts/1 00:00:46 /opt/app/xcharge/jdk/jdk1.7.0_67/bin/java -Djava.util.logging.config.file=/app/upay/apps/xcharge-simulator_01/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/app/upay/apps/xcharge-simulator_01/endorsed -classpath /app/upay/apps/xcharge-simulator_01/bin/bootstrap.jar:/app/upay/apps/xcharge-simulator_01/bin/tomcat-juli.jar -Dcatalina.base=/app/upay/apps/xcharge-simulator_01 -Dcatalina.home=/app/upay/apps/xcharge-simulator_01 -Djava.io.tmpdir=/app/upay/apps/xcharge-simulator_01/temp org.apache.catalina.startup.Bootstrap start\
[upay@jy-cash03 app]$\
[upay@jy-cash03 app]$\
[upay@jy-cash03 app]$ ps -ef | grep tomcat|grep /app/upay/apps/xcharge-simulator_01/bin | grep -v grep|awk '{print $2}'\
16675

今天,写脚本的时候,有这么一个需求,先查询进程号,然后再kill掉进程,不过该过程要通过脚本实现。

    一般来说,直接用Linux命令,可以这样

074f4c8b4bae4a2e85a46dc08aba8df9f47.jpg

先使用    ps -ef|grep tomcat   查询出进程号,然后,在用kill -9 进程号 , kill掉进程,但是,这是手工输得,程序不能手工输入呀,所以,我百度了下,发现还真的有一句命令可以实现的,分为两种, 一个是可以直接在Linux命令行中输入的,另一种是在shell脚本中实现的,都好使,根据情况使用

 

 

  1. Linux 命令行
#####查找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

 

2.shell 脚本

echo "开始查询DSP2.0运行的进程编号,查出将其kill"
dsp_admin_id=ps -ef | grep dsp-admin | grep -v "grep" | awk '{print $2}'
echo $dsp_admin_id

for id in dspadminid do   kill9dsp_admin_id\ do\     kill -9 id  
echo "killed $id"  
done