加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Linux Shell中获取进程号的技巧

发布时间:2021-11-25 21:53:48 所属栏目:教程 来源:互联网
导读:问题描述:公司有一款产品openfire部署在客户的服务器上,里面的人员是由别的公司通过webservice推送过来的,但是由于openfire的缓存机制,每次往数据库里添加新人或者更改某些人的属性时,如果不重新启动一次openfire,则效果和没有更改数据库一样。所以就要
问题描述:公司有一款产品openfire部署在客户的服务器上,里面的人员是由别的公司通过webservice推送过来的,但是由于openfire的缓存机制,每次往数据库里添加新人或者更改某些人的属性时,如果不重新启动一次openfire,则效果和没有更改数据库一样。所以就要求必须重新启动openfire。在此还有一个问题,openfire是通过双机热备机制部署在服务器上,所以如果只是简单的kill掉openfire进程,那么双机热备软件由于检测到不足数量的Java进程就会进行切换。所以在kill掉openfire之前应该,启动一个java进程,当openfire启动后在stop这个java进程。而客户的意见是:运行一个shell脚本就能把这些事情都搞定。
 
解决方法:通过ps -Af|grep openfire 能够得到openfire进程的进程号(openfire没有stop的shell,真是蹩脚)
 
而在shell 脚本里很难通过 ps -Af|grep openfire 得到正在运行的openfire进程号,在网上找了好久也没有发现有一个好的办法,仔细想想在每次启动openfire时可以得进程号,然后把进程号写入一个文件中,当想要kill掉openfire进程时 先读取文件得到进程号 然后再kill 掉
 
所以代码分两步:第一步 修改openfire.sh(openfire的启动文件) 在开始地方 加入:echo $$>shuanglengfeng.pid 就会把进程号 写入shuanglengfeng.pid文件中。
 
第二步  获取shuanglengfeng.pid中进程号
 
#!/bin/bash
 
cat shuanglengfeng.pid | while read line
 
do
 
echo $line
 
done
 
shell大致结构如此,这样就可以满足要求了。

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读