如何在Linux上基于主脚本中的fisr脚本控制第二个脚本

如何在Linux上基于主脚本中的fisr脚本控制第二个脚本

我对脚本不熟悉..我想监视服务器上的服务 - 我们有两个脚本 1 - 用于检查服务是否正在运行(checking.sh) 2 - 启动服务(start.sh)

我想将两个脚本合并为一个(monitor.sh)并安排/ cron 它。如何根据第一个脚本结果运行第二个脚本如果第一个脚本结果为 0 需要启动服务(第二个脚本需要运行),如果第一个脚本结果为 1 第二个脚本不需要运行并退出主脚本。

答案1

这是什么退出代码是给。因此,对于您的监控脚本,我们可以执行以下操作:

#!/bin/bash
# monitor.sh  -- checks if a Thing is doing its Thing
if [[ -r /var/run/myjob.pid ]]; then
    if kill -0 $( cat /var/run/myjob.pid ); then
        exit 0   # The process is alive, job is presumably running
    else
        exit 1   # Well, we had a PID file, but it was orphaned.
    fi
else
    exit 2 # no PID file, job presumably not running
fi

对于我们希望处理的每个状态,我们使用不同的退出代码。然后,对于我们的服务检查器:

#!/bin/bash
# check.sh -- Checks to see if Thing is Thinging and, if not, start it
if ! /path/to/monitor.sh; then
    /path/to/start.sh
fi

现在,运行该作业的脚本:

#!/bin/bash
# start.sh - do a Thing
if [[ -r /var/run/myjob.pid ]]; then
    echo "A Thing is already being done!" 1>&2
    exit 1 
else
    echo $$ > /var/run/myjob.pid
    trap 'rm /var/run/myjob.pid' EXIT
    do_Thing_related_things
fi

相关内容