需要用到Shell腳本每隔3秒鐘去監(jiān)控一個軟件進程的運行狀態(tài),發(fā)現(xiàn)crond似乎只支持到分,不知道秒,怎么辦呢?
第一種方法:
當然首先想到的是寫一個觸發(fā)的腳本,在觸發(fā)腳本中使用死循環(huán)來解決此問題,如下:
cat kick.sh
復制代碼 代碼如下:
#!/bin/bash
while : ;do
/home/somedir/scripts.sh 2>/dev/null
sleep 3
done
注意第一次運行時請不要使用 bash kick.sh 這種后臺運行的方式,它會僵死的。
可以把它放到計劃任務使其運行,然后將計劃任務中的此條目刪除即可。最后把這個腳本放到 /etc/rc.local 讓它每次開機都可以被運行。
第二種方法:
和第一種方法類似,只不過感覺比第一種更便捷一些。
復制代碼 代碼如下:
#!/bin/bash
#For excuting the scripts every 3 seconds in crond.
#20100124.WXG
for((i=1;i=20;i++));do
/home/somedir/scripts.sh 2>/dev/null
sleep 3
done
然后寫入的crontab里每分鐘執(zhí)行一次,如下:
復制代碼 代碼如下:
crontab -e
* * * * * /bin/bash /home/somedir/cron-seconds.sh
第三種方法:
那么如何使用計劃任務來直接實現(xiàn)呢?
最后解決方案如下,經(jīng)驗證,腳本運行非常穩(wěn)定。
復制代碼 代碼如下:
crontab -e
## For excuting scripts.sh every 3 seconds##on 2014-10-15
*/1 * * * * /home/somedir/scripts.sh
*/1 * * * * sleep 3 /home/somedir/scripts.sh
*/1 * * * * sleep 6 /home/somedir/scripts.sh
*/1 * * * * sleep 9 /home/somedir/scripts.sh
*/1 * * * * sleep 12 /home/somedir/scripts.sh
*/1 * * * * sleep 15 /home/somedir/scripts.sh
*/1 * * * * sleep 18 /home/somedir/scripts.sh
*/1 * * * * sleep 21 /home/somedir/scripts.sh
*/1 * * * * sleep 24 /home/somedir/scripts.sh
*/1 * * * * sleep 27 /home/somedir/scripts.sh
*/1 * * * * sleep 30 /home/somedir/scripts.sh
*/1 * * * * sleep 33 /home/somedir/scripts.sh
*/1 * * * * sleep 36 /home/somedir/scripts.sh
*/1 * * * * sleep 39 /home/somedir/scripts.sh
*/1 * * * * sleep 42 /home/somedir/scripts.sh
*/1 * * * * sleep 45 /home/somedir/scripts.sh
*/1 * * * * sleep 48 /home/somedir/scripts.sh
*/1 * * * * sleep 51 /home/somedir/scripts.sh
*/1 * * * * sleep 54 /home/somedir/scripts.sh
*/1 * * * * sleep 57 /home/somedir/scripts.sh
#-----------------------------------------------------------------
他的思路是:先每隔1秒鐘觸發(fā)定時任務,然后又休眠 3秒、6秒、9秒等間隔 來執(zhí)行具體的Shell腳本。
我還是比較傾向于使用第三種方法的。因為第一種方法和第二種方法并不是嚴格的間隔3秒執(zhí)行的,會大于3秒,因為執(zhí)行scripts.sh也是需要一定時間的,即使已經(jīng)加了符號放到了后臺執(zhí)行也會存在一定的誤差。如果對于精確度要求不高,推薦使用第二種方法。
工作中的一次用 PHP腳本每隔3秒鐘去監(jiān)控一個Memcached代理服務器Magent的運行狀態(tài)。
復制代碼 代碼如下:
crontab -e
#-----------------------------------------------------------------
*/1 * * * * /usr/local/php/bin/php /usr/local/nginx/www/MemcachedMagent/index.php 172.16.8.81 >/dev/null 2>1
*/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
#-----------------------------------------------------------------
您可能感興趣的文章:- Linux命令行和shell腳本編程寶典 Richard Blum
- linux c程序中獲取shell腳本輸出的實現(xiàn)方法
- Linux shell腳本編程if語句的使用方法(條件判斷)
- linux shell腳本學習xargs命令使用詳解
- Linux Shell腳本編程的注意事項
- linux下統(tǒng)計appche站點IP訪問量的shell腳本
- Linux中執(zhí)行shell腳本的4種方法總結
- 阿里云云服務器Linux系統(tǒng)更新yum源Shell腳本
- 一個監(jiān)控LINUX目錄和文件變化的Shell腳本分享
- Linux下實現(xiàn)SSH免密碼登錄和實現(xiàn)秘鑰的管理、分發(fā)、部署SHELL腳本分享
- Linux Shell腳本編程初體驗
- Linux Shell 腳本編程入門教程