2008年11月25日 星期二

crontab

Linux/Unix中有個Cron的排程概念,透過設定,可以定期執行特定程式
如果用root進入系統,即執行crontab -e (edit)可以直接用vi的指令編輯crontab

其中格式會像是 * * * * * root /sbin/.....
各個*表示不同的時間,分別表示 分, 時, 日, 月, 星期,之後可以顯示執行帳號(root,也可不用寫),接著則是要執行的命令或是shell script

以"分"來看,範圍訂於0-59
以"時"來看,範圍訂於0-23
以"日"來看,範圍訂於1-31
以"月"來看,範圍訂於1-12
以"星期"來看,範圍訂於0-7

設定好可用crontab -l (list)來檢查
[root@www bin]# crontab -l

可能畫面如下
20 23 * * * root /root/bin/backup_www.sh (這表示要在每天23:20執行back_www.sh的命令)
30 23 * * * root /root/bin/backup_phpbb2.sh (這表示要在每天23:30執行back_phpbb2.sh的命令)
39 3 * * * root /etc/webmin/cron/tempdelete.pl (這表示要在每天3:39執行tempdelete.pl的命令)
0 * * * * root /etc/webmin/bandwidth/rotate.pl (這表示要在每天每小時整點要執行rotate.pl的命令)
* 15 * * 1-5 /usr/local/bin/net_install.sh (這表示要在每星期一至五的15:00執行net_install.sh的命令)
*/5 * * * * root /bin/mrtg /etc/mrtg/mrtg.cfg (這表示要在每5分鐘執行一次mrtg.cfg的命令)
1,31 * * * * /root/bin/mail_ip.sh (這表示在每個小時的1分與31分各執行一次mail_ip.sh的命令)


另外,後面的指令不一定要是完整的shell script,也可以直接把指令寫上去
比如 mail enpan@msn.com < /etc/....
比如 mail enpan@msn.com < `find ./ -name`
或加入一些時間的tag,如在檔名後面加上date +%m%d%h%m 等等

Ron 這只是給自己做筆記而已!

沒有留言: