代码之家  ›  专栏  ›  技术社区  ›  miatech

Shell脚本未启动服务

  •  0
  • miatech  · 技术社区  · 6 年前

    然后,我会检查是否有一个运行该服务的脚本。如果服务未运行,它会尝试重新启动服务。但它不起作用。当我停止服务时。即使服务没有运行,它也不会进入“如果”部分。是退出状态“0”,我检查终端中的输出,不是“0”,但仍然不会进入“如果”部分。我错过了什么?感谢您的帮助

    #!/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 回复  |  直到 6 年前
        1
  •  0
  •   l0b0    6 年前

    Process management 这是一项复杂的业务,但也可以变得非常简单。在您的情况下,您只需要一个脚本来确保服务启动并保持运行,这可以通过确定哪个命令来完成 /etc/init.d/sshd 实际运行,然后将其插入此脚本:

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

    PS:作为 @CharlesDuffy points out ,首先要检查进程是否后台运行(在后台运行,立即返回)。如果是这样,你必须修改命令,这样就不会发生这种情况。