我想每分鐘運行一次cron作業以啓動腳本。那裏很簡單。但是,我需要確保不超過實例運行的X號(在腳本中定義)。這些是排隊工人,所以如果在任何時間間隔內有6名工人仍然活躍,那麼我就不會啓動另一個實例。該腳本只是簡單地啓動一個PHP腳本,如果沒有可用的工作,它將退出。現在我有一個shell腳本,它在退出後每隔10秒就會自動啓動一次...但是在很長一段時間內沒有任何作業,並且延遲時間很短。最終,我希望有兩個cron工作峯值和非峯值,不同的時間間隔。實例有限的cron作業
1
A
回答
1
- 請確保您具有唯一的腳本名稱。
然後檢查6個實例已經運行
if [ $(pgrep '^UNIQUE_SCIPT_NAME$' -c) -lt 6 ] then # start my script else # do not start my script fi
1
我想說,如果你想像每一分鐘一樣頻繁迭代,那麼像你當前的shell腳本那樣重新啓動的過程就是你真正想做的事情。只需將延遲從10秒增加到一分鐘即可。
這樣,您也可以更容易地控制您的峯值和非峯值延遲,如您所願。如果腳本在最後一次啓動時發現了某些內容,或者如果它沒有找到任何內容,則延遲時間會更長一些,如果簡單地使用較短的延遲將會相當優雅。
+0
嗯...我喜歡這種基於成功的延遲的想法...將不得不嘗試 – mondo 2012-02-04 00:30:06
0
你可以使用腳本像OneAtATime謹防多個同時執行。
0
這是我用我的shell腳本是什麼:
echo -n "Checking if job is already running... "
me=`basename $0`
running=$(ps aux | grep ${me} | grep -v .log | grep -v grep | wc -l)
if [ $running -gt 1 ];
then
echo "already running, stopping job"
exit 1
else
echo "OK."
fi;
你要找的命令是在第3行只是你的PHP腳本名稱替換$(me)
。如果您想知道grep .log
部分:我將輸出管道輸出到一個日誌文件中,其名稱部分包含腳本名稱,所以這樣我就可以避免它被重複計數。
相關問題
- 1. Cron作業限制
- 2. 在沒有cron作業選項的cPanel上設置cron作業
- 3. 帶CakePHp ACL權限的Cron作業
- 4. 在magento的多個實例上設置Cron作業
- 5. 權限在cron作業否認COMAND
- 6. Cron作業沒有運行
- 7. cron作業沒有運行
- 8. cron作業windows
- 9. Ubuntu cron作業
- 10. random cron作業
- 11. cron作業
- 12. 在cron作業
- 13. CRON作業codeigniter
- 14. 在cron作業
- 15. 笨cron作業
- 16. cron作業PHP
- 17. cron作業
- 18. cron作業dow和mon例外
- 19. CakePHP的cron作業
- 20. Laravel的Cron作業
- 21. 的cPanel cron作業
- 22. 在AWS EC2實例中設置Cron作業
- 23. Google Apps中的Cron作業是否有時間限制?
- 24. DirectAdmin Cron作業未運行,因爲cron用戶權限
- 25. php腳本可以從cron運行的實例數量有限
- 26. Cron作業調用帶有不工作
- 27. cron作業不工作,沒有錯誤
- 28. 是否有可能在亞馬遜lightsail實例上運行cron作業?
- 29. cron作業報錯
- 30. Cron作業錯誤
請參見[流程管理](http://mywiki.wooledge.org/ProcessManagement#I_want_to_process_a_bunch_of_files_in_parallel.2C_and_when_one_finishes.2C_I_want_to_start_the_next._And_I_want_to_make_sure_there_are_exactly_5_jobs_running_at_a_time)。 – 2012-02-04 15:03:28