原文:http://blog.csdn.net/andy572633/article/details/7217106
crond 是linux用來定期執行程序的命令。當安裝完成操作系統之後,默認便會啓動此任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。而linux任務調度的工作主要分爲以下兩類:
1、系統執行的工作:系統週期性所要執行的工作,如備份系統數據、清理緩存
2、個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件服務器是否有新信,這些工作可由每個用戶自行設置
Crontab是UNIX系統下的定時任務觸發器,其使用者的權限記載在下列兩個文件中:
文件 |
含義 |
/etc/cron.deny |
該文件中所列的用戶不允許使用Crontab命令 |
/etc/cron.allow |
該文件中所列的用戶允許使用Crontab命令 |
/var/spool/cron/ |
是所有用戶的crontab文件 |
/var/spool/cron/crontabs |
/var/spool/cron/crontabs |
Crontab命令的格式爲:crontab–l|-r|-e|-i [username],其參數含義如表一:
參數名稱 |
含義 |
示例 |
-l |
顯示用戶的Crontab文件的內容 |
crontabl –l |
-i |
刪除用戶的Crontab文件前給提示 |
crontabl -ri |
-r |
從Crontab目錄中刪除用戶的Crontab文件 |
crontabl -r |
-e |
編輯用戶的Crontab文件 |
crontabl -e |
用戶所建立的Crontab文件存於/var/spool/cron中,其文件名與用戶名一致。
它的格式共分爲六段,前五段爲時間設定段,第六段爲所要執行的命令段,
格式如下:* * * * * <command>(command可是命令也可以是sh腳本,建立的腳本要付給可執行的權限,chomd 777 test.sh)
其時間段的含義如表二:
段 |
含義 |
取值範圍 |
第一段 |
代表分鐘 |
0—59 |
第二段 |
代表小時 |
0—23 |
第三段 |
代表日期 |
1—31 |
第四段 |
代表月份 |
1—12 |
第五段 |
代表星期幾,0代表星期日 |
0—6 |
例:如果用戶的Crontab文件的內容是:29 19 * * *echo its dinner time,則系統每天的19:29顯示‘its dinner time’
示例(創建一個cron全過程,每分鐘都會在test.txt裏輸入當前時間):
1. 以普通用戶登錄linux系統(我用的是CentOS4.1)
2. $crontab –e
說明:系統默認的編輯器是VIM,如果不是請加上以下shell:
$EDITOR=vi
$export EDITOR
3. 輸入”*/1 * * * *date >> $HOME/test.txt”,save and exit VIM
4. $su root
5. $cd /etc/init.d
6. ./crond restart
下面看看看幾個具體的例子:
● 0 */2 * * * /sbin/service httpd restart 意思是每兩個小時重啓一次apache
● 50 7 * * * /sbin/service sshd start 意思是每天7:50開啓ssh服務
● 50 22 * * * /sbin/service sshd stop 意思是每天22:50關閉ssh服務
● 0 0 1,15 * * fsck /home 每月1號和15號檢查/home 磁盤
● 1 * * * * /home/bruce/backup 每小時的第一分執行/home/bruce/backup這個文件
● 00 03 * * 1-5 find /home"*.xxx" -mtime +4 -exec rm {} \; 每週一至週五3點鐘,在目錄/home中,查找文件名爲*.xxx的文件,並刪除4天前的文件。
● 30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30執行一次ls命令
來源:http://blog.csdn.net/wtxidian/archive/2007/05/25/1625782.aspx
基本格式 :
* * * * * command
分 時 日 月 周 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重啓apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重啓apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每週六、週日的1 : 10重啓apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重啓apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重啓apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啓apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重啓apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4號與每週一到週三的11點重啓apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一號的4點重啓apache
執行ssh不能運行的問題。
所有的crontab問題只有兩種可能,
1,環境
2,路徑
而第二種問題往往又是第一種問題引起的,所以加上環境後,.bash_profile裏的環境後99%的問題都一招通殺。
.bash_profile會讀取.bashrc
.bashrc 會讀取 /etc/bashrc
/etc/bashrc 會讀取 /etc/profile
一個linux所有的系統用戶,所有的環境變量,都逃不出以上幾個文件。(前提是你用bash)
都使用絕對路徑:
source~/.bash_profile
cd/usr/local/yidaba/useraction/
nohup/usr/local/java/bin/java -Xms80m-Xmx256m-XX:ThreadStackSize=128 -jar/usr/local/yidaba/useraction/useractionv1.jar>/usr/local/yidaba/useraction/test.log
* */2 * * * wget--delete-after http://myzone.yidaba.com/tftp.php