亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何排序 Cronjobs 以避免重疊或沖突

如何排序 Cronjobs 以避免重疊或沖突

繁花如伊 2023-10-26 16:46:23
我在 ubuntu 系統上每 5 分鐘為 python 腳本運行兩個 cronjobs,兩者都運行成功,但順序不同。當我檢查日志時,我發現有時第二個作業首先運行,有時在完成第一個作業之前觸發第二個作業。有什么方法可以安排第二個作業在完成第一個作業后開始,并且兩者都應該每 5 運行一次分鐘。*/5 * * * * cd path/to/script && /usr/bin/python3 comand.py -pgw y */5 * * * * cd path/to/script && /usr/bin/python3 comand.py -px y
查看完整描述

1 回答

?
烙印99

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" 


查看完整回答
反對 回復 2023-10-26
  • 1 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號