两个 cron 不同时运行?

两个 cron 不同时运行?
MAILTO=""
*/10 * * * *  /bin/bash /var/www/sym_monitor/sym_start.sh > /var/www/migrate/root_start.txt 2>&1
*/10 * * * *  /bin/bash /var/www/sym_monitor/stop.sh > /var/www/migrate/root_stop.txt 2>&1

这两个都是在 cron 中以 10 分钟为间隔运行的作业,第二个作业于 17:30 启动,第一个作业于 1735 启动,以避免在第一个作业实际启动之前被第二个作业终止。

第一个脚本由以下代码组成

#!/bin/bash
value=$(</var/www/sym_monitor/man.txt)


if [ "$value" == "true" ]; then

     ps -ef|grep sym |grep -v grep |awk '{ print $2 }'|sudo  xargs kill -9;

fi

第二个脚本由以下代码组成。

#!/bin/bash
value=$(</var/www/sym_monitor/man.txt)

if [ "$value" == "true" ]; then

sleep 30;
cd /var/www/symmetric-ds-3.1.6/bin;
(sudo ./sym --port 8082 --server);

fi

问题是当我运行这两个脚本时,不幸的是 sym_start.sh 没有执行。但是当我删除 stop.sh 并手动运行停止脚本时,cron 中唯一的脚本正在正确执行。为什么会发生这种情况?有什么想法吗?

答案1

您的 crontab 描述显示将同时运行这两项任务。您的启动脚本中有 30 秒的休眠时间,我想这是为了尝试帮助排序。如果您想按顺序运行这两项任务,您应该将其重写为单个脚本,并按照您想要的顺序执行。可能是这样的:

#!/bin/bash

value=$(</var/www/sym_monitor/man.txt)

if [ "$value" == "true" ]; then
    ps -ef|grep sym |grep -v grep |awk '{ print $2 }'|sudo  xargs kill -9;
fi
sleep 30;
if [ "$value" == "true" ]; then
    cd /var/www/symmetric-ds-3.1.6/bin;
    (sudo ./sym --port 8082 --server);
fi

相关内容