shell脚本检查`service httpd restart`命令状态?

时间:2015-12-28 11:03:52

标签: linux apache shell unix sh

我正在写一个shell脚本,这里是片段..

sudo service httpd restart   --- ( 1)  

if [ $? -eq 0 ]; then

     # Now configure php.ini using sed command 
     sudo sed -i 's_;date.timezone =_date.timezone = "Asia/Kolkata"_' /etc/php.ini 

  # Now restart the httpd server again 

  sudo service httpd restart  ---- This statement throws error 

当我在脚本上面运行时,我在第二个Address already in use: make_sock: could not bind to address语句中收到错误sudo service httpd restart

我怀疑是因为第一次sudo service httpd restart运行时,在完成之前完全第二次'sudo service httpd restart'运行。

那么我怎样才能测试如果第一个sudo service httpd restart完成则只执行其余的代码。

我希望我能理解......

由于

2 个答案:

答案 0 :(得分:3)

忘记[给予:

if sudo service http restart; then
    # stuff
    if sudo service http restart; then
        echo ok
    else
        # error handling for second service failure
    fi
else
    # error handling for first failure
fi

如果返回状态为零,则命令为true,否则为false。 Shell命令也必须在调用下一行之前终止。

原则上,service可以在后台完成任务并在完成之前退出。在实践中,它并不是因为那会让事情搞砸。

答案 1 :(得分:0)

不确定命令背景。如果是这样,您可以检查您的命令是否仍在进程列表中找到:

// ... your code ...
c=1
while [[ c -gt 0 ]] 
do
    c=`ps l | grep -c "service httpd restart"`
done
service httpd restart