如何写一个shell判断指定进程是否还存活

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
anelyz
帖子: 19
注册时间: 2008-04-26 13:29

如何写一个shell判断指定进程是否还存活

#1

帖子 anelyz » 2008-07-14 10:15

想写一个shell判断指定进程是否还在,如果不在了就自动补上。
我现在用的pidof命令shell如下:
while true
do
if pidof -s gs gs01
then
sleep 60
else
cd /root/pwserver/gamed/
./gs gs01 &
sleep 5
fi
done
但这里出现了一个问题,ps -aux里边有很多类似于 gs is01、gs is02这样的进程,如果gs gs01掉了,pidof会反回一个其它以gs开头的进程给我,这样就无法实现监控了,哪位老大帮帮忙。
头像
Nile
帖子: 990
注册时间: 2006-07-15 11:20
来自: 枫叶刀市

#2

帖子 Nile » 2008-07-14 10:32

用通配符
如:
ps aux | grep -E "gs is[0-9][0-9]$"
Thinkpad T400
anelyz
帖子: 19
注册时间: 2008-04-26 13:29

#3

帖子 anelyz » 2008-07-14 11:12

Nile 写了:用通配符
如:
ps aux | grep -E "gs is[0-9][0-9]$"
但是怎么用这个命令判断进程是否还在呢?
头像
Nile
帖子: 990
注册时间: 2006-07-15 11:20
来自: 枫叶刀市

#4

帖子 Nile » 2008-07-14 11:15

anelyz 写了:
Nile 写了:用通配符
如:
ps aux | grep -E "gs is[0-9][0-9]$"
但是怎么用这个命令判断进程是否还在呢?
直接if就行,grep的搜索到返回值0,搜索不到返回1
Thinkpad T400
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#5

帖子 eexpress » 2008-07-14 11:23

pgrep scim || nohup scim &
● 鸣学
anelyz
帖子: 19
注册时间: 2008-04-26 13:29

#6

帖子 anelyz » 2008-07-14 13:16

Nile 写了:
anelyz 写了:
Nile 写了:用通配符
如:
ps aux | grep -E "gs is[0-9][0-9]$"
但是怎么用这个命令判断进程是否还在呢?
直接if就行,grep的搜索到返回值0,搜索不到返回1
问题解决,谢了
回复