linux定時任務(wù)crontab 實(shí)現(xiàn)每秒執(zhí)行一次的方法
linux crontab 命令,最小的執(zhí)行時間是一分鐘。如需要在小于一分鐘內(nèi)重復(fù)執(zhí)行,可以有兩個方法實(shí)現(xiàn)。
Cron 各項(xiàng)的描述
以下是 crontab 文件的格式:
{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
o minute: 區(qū)間為 0 – 59
o hour: 區(qū)間為0 – 23
o day-of-month: 區(qū)間為0 – 31
o month: 區(qū)間為1 – 12. 1 是1月. 12是12月.
o Day-of-week: 區(qū)間為0 – 7. 周日可以是0或7.
1.使用延時來實(shí)現(xiàn)每N秒執(zhí)行
創(chuàng)建一個php做執(zhí)行動作,非常簡單,就是把當(dāng)前時間寫入log。
<?php file_put_contents('/home/fdipzone/php/crontab/run.log', date('Y-m-d H:i:s')."\r\n", FILE_APPEND); ?>
crontab -e 輸入以下語句,然后 :wq 保存退出。
* * * * * php /home/fdipzone/php/crontab/tolog.php * * * * * sleep 10; php /home/fdipzone/php/crontab/tolog.php * * * * * sleep 20; php /home/fdipzone/php/crontab/tolog.php * * * * * sleep 30; php /home/fdipzone/php/crontab/tolog.php * * * * * sleep 40; php /home/fdipzone/php/crontab/tolog.php * * * * * sleep 50; php /home/fdipzone/php/crontab/tolog.php
使用 tail -f 查看執(zhí)行情況,可以見到log每10秒被寫入一條記錄。
fdipzone@ubuntu:~$ tail -f /home/fdipzone/php/crontab/run.log 2014-03-31 21:47:01 2014-03-31 21:47:11 2014-03-31 21:47:21 2014-03-31 21:47:31 2014-03-31 21:47:41 2014-03-31 21:47:51 2014-03-31 21:48:01
原理:通過延時方法 sleep N 來實(shí)現(xiàn)每N秒執(zhí)行。
注意:
60必須能整除間隔的秒數(shù)(沒有余數(shù)),例如間隔的秒數(shù)是2,4,6,10,12等。
如果間隔的秒數(shù)太少,例如2秒執(zhí)行一次,這樣就需要在crontab 加入60/2=30條語句。不建議使用此方法,可以使用下面介紹的第二種方法。
2.編寫shell腳本實(shí)現(xiàn) 推薦
crontab.sh
#!/bin/bash step=2 #間隔的秒數(shù),不能大于60 for (( i = 0; i < 60; i=(i+step) )); do $(php '/home/fdipzone/php/crontab/tolog.php') sleep $step done exit 0
crontab -e 輸入以下語句,然后:wq 保存退出。
# m h dom mon dow command * * * * * /home/fdipzone/php/crontab/crontab.sh
使用 tail -f 查看執(zhí)行情況,可以見到log每2秒被寫入一條記錄。
fdipzone@ubuntu:~/php/crontab$ tail -f run.log 2014-03-31 22:23:01 2014-03-31 22:23:03 2014-03-31 22:23:06 2014-03-31 22:23:08 2014-03-31 22:23:10 2014-03-31 22:23:12 2014-03-31 22:23:14 2014-03-31 22:23:16 2014-03-31 22:23:18 2014-03-31 22:23:20 2014-03-31 22:23:22 2014-03-31 22:23:25 2014-03-31 22:23:27 2014-03-31 22:23:29 2014-03-31 22:23:31 2014-03-31 22:23:33 2014-03-31 22:23:35 2014-03-31 22:23:37 2014-03-31 22:23:39 2014-03-31 22:23:41 2014-03-31 22:23:44 2014-03-31 22:23:46 2014-03-31 22:23:48 2014-03-31 22:23:50 2014-03-31 22:23:52 2014-03-31 22:23:54 2014-03-31 22:23:56 2014-03-31 22:23:58 2014-03-31 22:24:00
原理:在sh使用for語句實(shí)現(xiàn)循環(huán)指定秒數(shù)執(zhí)行。
注意:如果60不能整除間隔的秒數(shù),則需要調(diào)整執(zhí)行的時間。例如需要每7秒執(zhí)行一次,就需要找到7與60的最小公倍數(shù),7與60的最小公倍數(shù)是420(即7分鐘)。
則 crontab.sh step的值為7,循環(huán)結(jié)束條件i<420, crontab -e可以輸入以下語句來實(shí)現(xiàn)
# m h dom mon dow command */7 * * * * /home/fdipzone/php/crontab/crontab.sh
總結(jié)
以上所述是小編給大家介紹的linux定時任務(wù)crontab 實(shí)現(xiàn)每秒執(zhí)行一次的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- linux如何利用crontab添加定時任務(wù)詳解
- Linux Crontab Shell腳本實(shí)現(xiàn)秒級定時任務(wù)的方法
- Linux定時任務(wù)Crontab命令使用詳解與總結(jié)
- Linux中crontab定時任務(wù)不執(zhí)行的原因
- Linux定時任務(wù)Crontab的使用方法
- Linux之定時任務(wù)Crond詳解
- linux中定時任務(wù)crond命令使用方法
- Linux定時任務(wù)Crontab詳解(推薦)
- Linux crontab定時任務(wù)配置方法(詳解)
- linux服務(wù)器ubuntu定時任務(wù)cron設(shè)置每秒執(zhí)行
相關(guān)文章
Ubuntu、Linux Mint一鍵安裝Chrome瀏覽器的Shell腳本分享
這篇文章主要介紹了Ubuntu、Linux Mint一鍵安裝Chrome瀏覽器的Shell腳本分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03Linux命令每天必學(xué)之 useradd/adduser 新增用戶
Linux下useradd或adduser命令用來建立用戶帳號和創(chuàng)建用戶的起始目錄,使用權(quán)限是超級用戶。接下來通過本文給大家介紹每天必學(xué)Linux命令之 useradd/adduser 新增用戶的相關(guān)知識,需要的朋友參考下吧2018-10-10解決linux下openoffice word文件轉(zhuǎn)PDF中文亂碼的問題
下面小編就為大家?guī)硪黄鉀Qlinux下openoffice word文件轉(zhuǎn)PDF中文亂碼的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11Linux shell腳本編程if語句的使用方法(條件判斷)
這篇文章主要介紹了Linux shell腳本編程if語句的使用方法,大家參考使用吧2013-12-12Linux中shell腳本獲取當(dāng)前工作目錄的方法
今天小編就為大家分享一篇Linux中shell腳本獲取當(dāng)前工作目錄的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06