shell 脚本中执行重启完成后继续执行其它的命令

 我来答
绿衣人敲门
2014-10-21 · 知道合伙人软件行家
绿衣人敲门
知道合伙人软件行家
采纳数:18765 获赞数:63784
毕业于西北大学计算机网络技术专业,现在在西安电力学院进行网络推广维护工作!

向TA提问 私信TA
展开全部
要用循环查询直到重启完成.

#!/bin/bash
service httpd status &> /dev/null
if [ $? -ne 0 ]; then
echo "HTTP Server is down. At time: `date`" >> /var/log/htmon.log
service httpd restart
while true
do
service httpd status &> /dev/null
[ $? -eq 0 ] && break
sleep 1
done
chkconfig --level 2345 httpd on
shutdown -r now
fi
追问
谢谢你的回答,有解决问题的思路了,但违背了原程序的意图。原程序意图为:1、当服务状态失常时在“/var/log/htmon.log”文件中记入日志;2、自动将状态失常的httpd服务重新启动;3、若重启httpd服务失败,则尝试重新启动服务器主机
但您改的程序是httpd启动成功($?为0)就跳出循环,再修改启动级别、重启操作系统(httpd启动成功就不需要这样做了),再则由于httpd配置错误启动不成功,则永远循环下去。还得请教有何办法?
回答
之前没理解你要做什么。
要防止无限循环,可以对尝试次数做个限制(加个计数器),比如10次尝试后还不成功就尝试修改启动级别并重启操作系统。

count=0
flag=0 #标志是否成功, 0-失败,1-成功
while [ $count -lt 10 ] #只尝试10次
do
let count+=1
service httpd status &> /dev/null
if [ $? -eq 0 ]; then
flag=1
break
fi
sleep 1
done
if [ $flag -eq 0 ]; then # httpd启动不成功
chkconfig --level 2345 httpd on
shutdown -r now
fi
百度网友5311d79
2014-10-21 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3393万
展开全部
重启后还有继续执行,只有在启动脚本里写了。
追问
卸载启动脚本里岂不是每次启动都要执行啊
追答
是啊,每次启动都执行。
但你可以在脚本里做个判断,是否已重启过。
比如:
在重启前创建一个临时文件作为判断标记,重启后若判断文件存在,则知道已经做过了,不再重复做。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式