Shell脚本未启动服务

时间:2018-07-18 23:12:49

标签: linux bash shell

我有一个非常基本的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

1 个答案:

答案 0 :(得分:0)

Process management是一项复杂的业务,但也可以使其非常简单。就您而言,您只需要一个脚本来确保服务已启动并保持运行,就可以通过找出实际运行的命令/etc/init.d/sshd并将其插入此脚本来完成此操作:

while true
do
    [command from /etc/init.d/sshd]
done

PS:与@CharlesDuffy points out一样,您首先要检查进程是否守护进程(在后台运行,立即返回)。如果是这样,则必须修改命令,以免发生这种情况。