我想運行一個cron作業,它將執行我的shell腳本,我的shell腳本有配置文件&豬腳本。我將cron作業設置爲每2分鐘執行一次,但在我的shell腳本完成之前,我的cron作業再次啓動會影響我的結果,或者一旦腳本完成其執行,那麼只會啓動它。我在這裏有點困難。請幫忙。 感謝腳本沒有完成執行,但cron作業再次開始
1
A
回答
2
我認爲有兩種方式,以更好地解決這個問題,很長的路要走和一小段路:
朗方式(可能是最正確的):
使用類似Luigi管理工作的依賴性,然後用Cron運行它(它不會運行多個相同的工作)。
Luigi會爲您處理所有的工作依賴關係,您可以確保某個工作只執行一次。這需要更多的工作來完成設置,但這確實是值得的。
快捷途徑:
鎖文件已經提到過,但你可以做到這一點對HDFS也這樣,它不依賴於您運行從cron作業。
不是檢查鎖文件,把國旗HDFS當你開始和完成作業,並有本作中所有的cron作業的標準的事情:
#在啓動
Hadoop的FS -touchz /職位/ JOB1/2016年7月1日/ _STARTED
#在最終
Hadoop的FS -touchz /職位/ JOB1/2016年7月1日/ _COMPLETED
#然後檢查它們(僞代碼):
if(!started & &!completed:run_job; add_completed; remove_started
1
在腳本的開始,有一個檢查:
#!/bin/bash
if [ -e /tmp/file.lock ]; then
rm /tmp/file.lock # removes the lock and continue
else
exit # No lock file exists, which means prev execution has not completed.
fi
.... # Your script here
touch /tmp/file.lock
有殊途同歸的許多其他方面。我舉一個簡單的例子。
相關問題
- 1. node.io:作業完成後,再次執行
- 2. cron作業沒有運行腳本
- 3. cron作業沒有運行bash腳本
- 4. cron作業沒有完成過程?
- 5. 使用cron作業執行PHP腳本
- 6. Cron作業未執行Perl腳本
- 7. Cron作業,執行php腳本
- 8. shell腳本不從cron作業執行
- 9. Symfony2從cron作業執行腳本
- 10. 使用CRON作業執行PHP腳本
- 11. 使用Cron作業執行PHP腳本?
- 12. Shell腳本手動運行,但不通過cron作業執行
- 13. 腳本運行一次一個月,但不使用cron作業
- 14. 從一個cron作業執行/運行多個php cron腳本
- 15. 結構腳本執行沒有完成
- 16. WHMCS cron作業沒有運行(或已完成運行?)
- 17. Cron作業沒有運行
- 18. cron作業沒有運行
- 19. 使用PHP執行Cron作業一次
- 20. Kubernetes中的Cron作業 - 連接到現有Pod,執行腳本
- 21. 完成sge作業後運行腳本
- 22. 腳本沒有運行cron。手動執行時工作正常
- 23. cron作業執行r腳本不工作
- 24. cron作業沒有執行,也沒有電子郵件/日誌
- 25. 通過cron作業執行PHP腳本時的不同行爲
- 26. Python腳本vs Cron作業
- 27. cron作業腳本終止
- 28. Bash腳本Cron作業
- 29. Cron作業和php腳本
- 30. Cron作業PHP腳本不會運行
你希望你的cron作業只有在你先前執行完同一個腳本之後才能啓動? – Fazlin
爲執行創建一個鎖定文件。根據您的要求,您可以簡單地忽略執行,如果以前尚未完成(我個人喜歡這個)或只是等待鎖被釋放。 – satish
@Fazlin是的,我想流 – Ironman