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"
添加回答
舉報