我对脚本不熟悉..我想监视服务器上的服务 - 我们有两个脚本 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