如何讓Linux定時任務crond以秒爲單位執行(如每隔3秒)

如何讓Linux定時任務crond以秒爲單位執行(如每隔3秒)php


須要用到Shell腳本每隔3秒鐘去監控一個軟件進程的運行狀態,發現crond彷佛只支持到分,不知道秒,怎麼辦呢?nginx

第一種方法:bash

固然首先想到的是寫一個觸發的腳本,在觸發腳本中使用死循環來解決此問題,以下:服務器

cat kick.sh代理

1進程

#!/bin/bashcrontab

2ip

while : ;do後臺

3監控

    /home/somedir/scripts.sh 2>/dev/null &

4

    sleep 3

5

done

注意第一次運行時請不要使用 bash kick.sh & 這種後臺運行的方式,它會僵死的。

能夠把它放到計劃任務使其運行,而後將計劃任務中的此條目刪除便可。最後把這個腳本放到 /etc/rc.local 讓它每次開機均可以被運行。

 

第二種方法:

和第一種方法相似,只不過感受比第一種更便捷一些。

cat cron-seconds.sh

1

#!/bin/bash

2

#For excuting the scripts every 3 seconds in crond.

3

#20100124.WXG

4

 

5

for((i=1;i<=20;i++));do

6

 

7

    /home/somedir/scripts.sh 2>/dev/null &

8

    sleep 3

9

done

而後寫入的crontab裏每分鐘執行一次,以下

crontab -e

1

* * * * * /bin/bash /home/somedir/cron-seconds.sh

 

第三種方法:

那麼如何使用計劃任務來直接實現呢?

最後解決方案以下,經驗證,腳本運行很是穩定。

crontab -e

01

## For excuting scripts.sh every 3 seconds##on 2014-10-15

02

*/1 * * * *  /home/somedir/scripts.sh

03

*/1 * * * * sleep 3 &&  /home/somedir/scripts.sh

04

*/1 * * * * sleep 6 &&  /home/somedir/scripts.sh

05

*/1 * * * * sleep 9 &&  /home/somedir/scripts.sh

06

*/1 * * * * sleep 12 &&  /home/somedir/scripts.sh

07

*/1 * * * * sleep 15 &&  /home/somedir/scripts.sh

08

*/1 * * * * sleep 18 &&  /home/somedir/scripts.sh

09

*/1 * * * * sleep 21 &&  /home/somedir/scripts.sh

10

*/1 * * * * sleep 24 &&  /home/somedir/scripts.sh

11

*/1 * * * * sleep 27 &&  /home/somedir/scripts.sh

12

*/1 * * * * sleep 30 &&  /home/somedir/scripts.sh

13

*/1 * * * * sleep 33 &&  /home/somedir/scripts.sh

14

*/1 * * * * sleep 36 &&  /home/somedir/scripts.sh

15

*/1 * * * * sleep 39 &&  /home/somedir/scripts.sh

16

*/1 * * * * sleep 42 &&  /home/somedir/scripts.sh

17

*/1 * * * * sleep 45 &&  /home/somedir/scripts.sh

18

*/1 * * * * sleep 48 &&  /home/somedir/scripts.sh

19

*/1 * * * * sleep 51 &&  /home/somedir/scripts.sh

20

*/1 * * * * sleep 54 &&  /home/somedir/scripts.sh

21

*/1 * * * * sleep 57 &&  /home/somedir/scripts.sh

22

#-----------------------------------------------------------------

他的思路是:先每隔1秒鐘觸發定時任務,而後又休眠 3秒、6秒、9秒等間隔 來執行具體的Shell腳本。

我仍是比較傾向於使用第三種方法的。由於第一種方法和第二種方法並非嚴格的間隔3秒執行的,會大於3秒,由於執行scripts.sh也是須要必定時間的,即便已經加了&符號放到了後臺執行也會存在必定的偏差。若是對於精確度要求不高,推薦使用第二種方法。

 

 

 

 

工做中的一次用 PHP腳本每隔3秒鐘去監控一個Memcached代理服務器Magent的運行狀態

crontab -e

#-----------------------------------------------------------------

*/1 * * * *  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 3 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 6 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 9 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 12 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 15 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 18 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 21 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 24 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 27 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 30 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 33 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 36 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 39 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 42 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 45 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 48 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 51 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 54 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

*/1 * * * * sleep 57 &&  /usr/local/php/bin/php  /usr/local/nginx/www/MemcachedMagent/index.php  172.16.8.81 >/dev/null 2>&1

#-----------------------------------------------------------------

相關文章
相關標籤/搜索