1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
盡管您在 crontab 中同時(shí)運(yùn)行相同的腳本和兩個(gè)不同的條目,但它們被視為兩個(gè)不同的 cron 任務(wù)。不確定您使用的是什么操作系統(tǒng)。但 Ubuntu 的典型順序是自上而下(并行),即假設(shè)您在 crontab 中定義了三個(gè)任務(wù),如下所示:
* * * * * T1
* * * * * T2
* * * * * T3
T1 首先啟動(dòng),然后是 T2(不等待 T1 完成),然后是 T3(不等待 T2 或 T1 完成)。Ubuntu 從 Debian 繼承了這個(gè)順序。但一般來說,這種行為可能會(huì)因 Linux 發(fā)行版或版本以及 cron 實(shí)現(xiàn)而異。依賴它是相同的確實(shí)沒有意義。例如,在 FreeBSD 中,順序是自下而上的。如果這些腳本相互依賴,最好按順序調(diào)用它們,一個(gè)從另一個(gè)調(diào)用,或者從一個(gè)通用包裝腳本調(diào)用,這是唯一一個(gè) cron 實(shí)際執(zhí)行的腳本。您看到的重疊日志可能是由于在兩個(gè)任務(wù)中實(shí)際調(diào)用腳本之前第一個(gè)更改目錄命令造成的。您可能想嘗試指定腳本的絕對(duì)路徑。
*/5 * * * * /usr/bin/python3 /path/to/script/comand.py -pgw y
*/5 * * * * /usr/bin/python3 /path/to/script/comand.py -px y
另一種選擇是創(chuàng)建一個(gè)類似這樣的示例包裝腳本并將其安排在 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"
添加回答
舉報(bào)