1.Cron的啟動與關閉
由于Cron是Linux的內置服務,可以用以下的方法啟動.關閉這個服務:
/sbin/service crond start //啟動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啟服務
/sbin/service crond reload //重新載入配置
2.Cron配置文件
2.1全局配置文件
crontab在/etc目錄下面存在cron.hourly,cron.daily,cron.weekly,cron.monthly,cron.d5個目錄和crontab,cron.deny2個文件.
cron.daily是每天履行1次的job,cron.weekly是每一個星期履行1次的job.cron.monthly是每個月履行1次的job,cron.hourly是每一個小時履行1次的job.cron.d是系統自動定期需要做的任務,但是又不是按小時,按天,按星期,按月來履行的,那末就放在這個目錄下面.
/etc/crontab文件1般以下:
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
我們可在此文件中添加自己需要的cron job.
/etc/cron.deny文件就是用于控制不讓哪些用戶使用Crontab的功能.
2.2用戶配置文件
每一個用戶都有自己的cron配置文件,通過crontab -e 就能夠編輯,1般情況下我們編輯好用戶的cron配置文件保存退出后,系統會自動就寄存于/var/spool/cron/目錄中,文件以用戶名命名.
linux的cron服務是每隔1分鐘去讀取1次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的內容.
3.Cron命令格式
crontab [ -u user ] 文件
crontab [ -u user ] { -l | -r | -e }
-u:指定某1用戶
-e:履行文字編輯器來設定用戶(當前用戶或指定用戶)時程表,內定的文字編輯器是vi.
-r:刪除用戶時程表.
-l:列出用戶時程表.
4.Cron文件格式
* * * * * command
分 時 日 月 周 命令
第1列表示分鐘1~59, 每分鐘用*或 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
5.Cron文件使用說明
5.1 1般情況
當f1 為 * 時表示每分鐘都要履行 program,f2 為 * 時表示每小時都要履行程序,其余類推.
* * * * * /bin/usershell 每天每分鐘履行1次/bin/usershell
當f1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要履行,f2 為 a-b 時表示從第 a 到第 b 小時都要履行,其余類推.
0⑴2 * * * * /bin/usershell 每天每小時從0到12分鐘每分鐘履行1次/bin/usershell
當f1 為 */n 時表示每 n 分鐘個時間間隔履行1次,f2 為 */n 表示每 n 小時個時間間隔履行1次,其余類推.
* */2 * * * /bin/usershell 每天每2小時履行1次/bin/usershell
當f1 為 a, b, c,... 時表示第 a, b, c,... 分鐘要履行,f2 為 a, b, c,... 時表示第 a, b, c...個小時要履行,其余類推.
* 1,3,5,7 * * * /bin/usershell 每天每逢1,3,4,7點履行1次/bin/usershell
5.2. 沖突邏輯
日期可以用月限定,也能夠用“星期”指定,如果兩個段有沖突,那末,第6段的命令將在匹配任何1個的情況下都運行,比如
"30 4 1,15 * 5",將在每個月的1號和15號加每一個周5,上午4:30運行.
5.3. 符號"%"
"%"在Cron文件中,有"結束命令行","換行","重定向"的作用,假設不需要"%"的特殊作用,需要使用轉義符轉義.
5.4. @reboot
這個不需要理解,為了到達在開機后運行,且只運行1次的目的.除這個,也沒法通過前5段的設置來實現.
@annually也是這個功能.
至于@yearly,@monthly等等其實都可以用上面的5段來設置.
然后我自己寫了1個小例子做了下測試:
使用crontab -e進行編輯,內容為:
*/2 * * * * echo "i am crontab" >> /home/zhang/hello
這樣隔兩分鐘就會往hello這個文件里寫i am crontab
我自己寫了1個腳本task.sh,直接運行task.sh時可以運行,可是加到crontab里就有運行了,后來我查看了網上的解決方法,終究解決了,先來看1下我原來寫的task.sh腳本吧:
#!/bin/sh
java -jar offergateway.biz.offer⑴.0-SNAPSHOT.jar
crontab定時任務的寫法為:
* * * * * /task.sh
后來我查了網上說要運行crontab,必須使用絕對路徑,然后我把路徑都改成絕對路徑了。
在crontab的履行環境變量中,沒有相利用戶設置的環境變量,你需要手動設置1下環境變量,才能讓它生效。因而我把上面的腳本改成:
#!/bin/sh
. /etc/profile
java -jar /home/zhang/offergateway.biz.offer⑴.0-SNAPSHOT.jar
crontab也改成絕對路徑:
* * * * * sh /home/zhang/task.sh
哈哈,成功了~~happy~~
原文出自:http://li200429.iteye.com/blog/1608758
上一篇 Android開發中驗證碼的生成