2010-07-26 262 views
6

我想創建一個每5秒運行一次腳本的cron作業。看到cron作業只允許0-59分鐘的增量等等。Cron作業 - 每5秒運行一次

我想創建另一個腳本,調用我下面寫的原始腳本。

#!/bin/bash 

while true 
do 
# script in the same directory as this script. is this correct? 
bash makemehappy.sh 
sleep 1 
done 

我現在需要知道如何每次我啓動我的電腦上運行此腳本,併爲它如果因某些原因無法啓動運行本身。

我也知道每分鐘運行一次腳本不會是件好事。 :)

如果有更簡單的方法每5秒運行一次腳本,請告知。

請謝謝。

+8

試圖每5秒鐘做一件事情真的是你的問題的最佳解決方案? – user347594 2010-07-26 00:59:15

回答

7

我不會爲此使用cron。我會使用該bash腳本(使用絕對路徑,除非您希望它是可移植的,並且知道將保留目錄結構)。

取而代之,我只是sleep 5,就像你一樣(只有5秒而不是1)。

就您的系統啓動而言,這取決於系統。在(某些)Linux發行版中,有一個名爲/etc/rc.local的文件,您可以在其中添加腳本以在系統啓動時運行。那麼......我不應該這麼一般,我用過的發行版都有這個。如果你正在運行Ubuntu,不再有inittab,它們使用新手,順便說一句。

所以,如果你有一個無限循環,並在/etc/rc.local條目,那麼你應該是它無休止地運行(或直到它遇到問題並退出)的黃金。

+0

我的發行版是ubuntu嗎?我似乎無法在etc目錄中找到該rc.local文件。 意見建議? – myusuf3 2010-07-26 01:05:12

+0

什麼版本? (貓/ etc/issue) – Tim 2010-07-26 01:09:03

+0

10.04我設法弄明白了。 :)通過將其添加到init.d並更新update-rc.d – myusuf3 2010-07-26 02:13:49

2

嘗試使用anacron或更好的方法是在計算機啓動時啓動init腳本。

如果您希望腳本「自行重啓」,您需要每隔幾分鐘運行一次,以檢查原稿是否仍在運行。這可以在inittab(/etc/inittab)或Ubuntu的/etc/event.d中完成。嘗試man 5 inittab,看着'重生'選項。

1

某些cron有一個@reboot時間說明符(這涵蓋了所有的時間和日期字段)。如果你的確如此,你可以使用它。如果這是一個「系統」服務(而不是爲自己運行的服務),這裏的其他解決方案可能會更好。

1

初始化腳本在引導時很好,但不檢測進程是否失敗並且必須重新啓動。 supervisord在檢測失敗的進程並重新啓動它們方面做得非常出色。我會推薦一個帶有@Tim所描述的5秒循環的腳本,但是會圍繞它包裝supervisord以確保它能夠持續運行。