今天在網上看到這篇不錯的教程,是介紹CronTab的,寫的很清楚。所以轉載過來,做個分享。
限制用戶使用crontab的文件有:/etc/cron.allow /etc/cron.deny 。
當使用crontab建立工作排程後,將被記錄到/var/spool/cron裡。
cron執行的每一項工作都被記錄到/varlog/cron裡去。
crontab參數:
-u:只有root才可能,幫其他用戶建立或移除工作排程。
-l:查閱crontab的工作內容
-r:移除所有的crontab的工作內容,移除一項,用-e編輯。
例1:每天12:00給root發信。
[root@lyy etc]# crontab -e #用vi編輯
0 12 * * * mail root -s "at 12:00" < /root/.bashrc
每項工作有六個字段分別是:
分鐘 小時 日期 月份 周 指令
0-59 0-23 1-31 1-12 0-7 指令 #0和7都代表星期天
輔助特殊字符:
* (星號)代表任何時刻
,(逗號)代表分隔時候。如3點與6點 就是3,6
-(減號)代表一段時間范圍內。如:3點到6點 就是3-6
/n(斜線)n代表數字,即每隔n單位。如每隔五分鐘,/5
例2:每隔3分鐘,在屏幕輸出字符
[root@lyy etc]# crontab -e
[root@lyy etc]# crontab -l
*/3 * * * * echo "hello world !!!!!" > /dev/pts/0 #pts/0是用telnet的終端接口
查看一下記錄
[root@lyy etc]# cat /var/log/cron
Dec 12 20:27:01 lyy crond[9865]: (root) CMD (echo "hello world !!!!!" > /dev/pts/0)
Dec 12 20:30:01 lyy crond[9908]: (root) CMD (echo "hello world !!!!!" > /dev/pts/0)
例3:每個星期三下午14:30分發送一個郵件給pc
[root@lyy etc]# crontab -e
30 14 * * 3 mail pc -s "test" < /home/text.txt
crontab -e 是針對用戶的cron設計的,如果是系統例行性任務,只要編
輯/etc/crontab文件就可以了。
查看/etc/crontab內容
[root@lyy etc]# cat /etc/crontab
SHELL=/bin/bash #接口
PATH=/sbin:/bin:/usr/sbin:/usr/bin #執行路徑搜尋
MAILTO=root #以mail發送者
HOME=/ #家目錄
# run-parts
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 #每個月1號
取消不要的輸出項目:把輸出的結果以命令重導向到/dev/null
安全檢驗:由於一些木馬以例行命令方式值入,所以可以通過
檢查/var/log/cron來發現。
周與日月不可同時並存
如:
30 12 11 9 5 root echo "just test " #這是錯誤的寫法。
本來以為九月十一號是星期五執行這個任務,但是系統可能會判定每個星期
五執行一次或每年九月十一號分別執行。
喚醒停機期間的工作任務 anacron
anacron不能取代crontab,它存在目的是處理非24小時在線的linux系統的
crontab的執行。它是以天為單位或在開機後執行,它會檢查停機期間的
crontab並執行,然後就自動停止了。
linux命令:
建立任務crontab -e
*/1 * * * * echo 'ddd'/var/test.txt 一分鐘寫一次ddd到test.txt文件中
* * * */1 * sh /var/jboss-4.0.5.GA/server/default/log/temp/delete_log1.sh 一個月運行一次delete_log1.sh腳本
sh腳本(delete_log1.sh)
dd=`date -d"1 month ago" +%y-%m`
rm -vf /var/temp/log.20$dd-* 刪除當前時間的起一個月的匹配文件