我有一个非常基本的shell脚本,该脚本检查给定的服务,然后查询该服务以找出该服务是否正在运行。如果服务未运行,它将尝试重新启动服务。但这是行不通的。当我停止服务时。即使服务未运行,它也永远不会输入“ if”部分。退出状态为“ 0”时,我检查终端中的输出,但不是“ 0”,但仍不会进入“ if”部分。我想念什么?任何帮助表示赞赏
#!/bin/bash
#checking for apache
service="sshd"
whie [ 1 ]
do
ps -e | grep $service
if [ $? -ne 0 ]; then
service ssh start
fi
sleep 3
done
答案 0 :(得分:0)
Process management是一项复杂的业务,但也可以使其非常简单。就您而言,您只需要一个脚本来确保服务已启动并保持运行,就可以通过找出实际运行的命令/etc/init.d/sshd
并将其插入此脚本来完成此操作:
while true
do
[command from /etc/init.d/sshd]
done
PS:与@CharlesDuffy points out一样,您首先要检查进程是否守护进程(在后台运行,立即返回)。如果是这样,则必须修改命令,以免发生这种情况。