1 回答
TA贡献1829条经验 获得超13个赞
尽管您在 crontab 中同时运行相同的脚本和两个不同的条目,但它们被视为两个不同的 cron 任务。不确定您使用的是什么操作系统。但 Ubuntu 的典型顺序是自上而下(并行),即假设您在 crontab 中定义了三个任务,如下所示:
* * * * * T1
* * * * * T2
* * * * * T3
T1 首先启动,然后是 T2(不等待 T1 完成),然后是 T3(不等待 T2 或 T1 完成)。Ubuntu 从 Debian 继承了这个顺序。但一般来说,这种行为可能会因 Linux 发行版或版本以及 cron 实现而异。依赖它是相同的确实没有意义。例如,在 FreeBSD 中,顺序是自下而上的。如果这些脚本相互依赖,最好按顺序调用它们,一个从另一个调用,或者从一个通用包装脚本调用,这是唯一一个 cron 实际执行的脚本。您看到的重叠日志可能是由于在两个任务中实际调用脚本之前第一个更改目录命令造成的。您可能想尝试指定脚本的绝对路径。
*/5 * * * * /usr/bin/python3 /path/to/script/comand.py -pgw y
*/5 * * * * /usr/bin/python3 /path/to/script/comand.py -px y
另一种选择是创建一个类似这样的示例包装脚本并将其安排在 crontab 中。你可以自由修改。
#!/bin/bash
/usr/bin/python3 /path/to/script/comand.py -pgw y > /path/to/task1.log 2>&1 &
TASK1_PID=$!
echo "Task1 PID: $TASK1_PID Started"
while ps -p $TASK1_PID; do sleep 1; done; echo "Task1 PID: $TASK1_PID Completed"
/usr/bin/python3 /path/to/script/comand.py -pgw y > /path/to/task2.log 2>&1 &
TASK2_PID=$!
echo "Task2 PID: $TASK2_PID Started"
while ps -p $TASK2_PID; do sleep 1; done; echo "Task2 PID: $TASK2_PID: Completed"
添加回答
举报