crontab小結

crontab是linux下的計劃任務,能夠用來定時或者按計劃運行命令。java

 

建立計劃任務:

1.使用crontab -e命令,直接建立計劃任務linux

2.使用編輯器編寫好計劃任務的文件後,再使用crontab [plan-file],註冊計劃任務文件。這方法很差的地方在於,每次編輯完計劃任務的文件後,都得記得註冊一次,不然仍是舊的計劃任務。bash

 

crontab的語法以下:編輯器

*     *     *     *     *  command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

例子:this

* * * * * <command> #Runs every minute
30 * * * * <command> #Runs at 30 minutes past the hour
45 6 * * * <command> #Runs at 6:45 am every day
45 18 * * * <command> #Runs at 6:45 pm every day
00 1 * * 0 <command> #Runs at 1:00 am every Sunday
00 1 * * 7 <command> #Runs at 1:00 am every Sunday
00 1 * * Sun <command> #Runs at 1:00 am every Sunday
30 8 1 * * <command> #Runs at 8:30 am on the first day of every month
00 0-23/2 02 07 * <command> #Runs every other hour on the 2nd of July
* */1 * * *<command> #每一小時
* 23-7/1 * * *<command> #晚上11點到早上7點之間,每隔一小時

 

查看計劃任務:

crontab -lspa

 

查看輸出:

crontab默認會將<command>的結果輸出到Linux用戶的郵箱(mailbox),在redhat enterprise版本中,mailbox在/var/spool/mail/<user>這裏。命令行

每次來這裏查看其實不太方便,因此能夠讓crontab直接輸出到某個指定的地方:code

*/10 * * * * /bin/execute/this/script.sh >> /var/log/script_output.log 2>&1

這裏的1和2,值得是將STDERR這個輸出(standard errors, 用2表示),一併存到STDOUT這個輸出裏(standard output, 用1表示)blog

 

以某用戶運行計劃任務:

crontab -u <user> -e

這樣的計劃任務,是爲某個特定的用戶而建立的。不然的話,就算調用Java,也得在命令行裏寫一堆東西:token

export JAVA_HOME=/usr/java/jdk1.6.0_45
export PROJECT_HOME=/home/derek/clientreporting
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/td.jar:.

 

 補充:

利用linux的命令,能夠根據不一樣的日子輸出crontab的運行結果,而不須要每次都查mailbox(/var/spool/mail/<user>):

30 12 * * * /some/script/to/run.sh > /some/log/name-$(date +"\%F").log

注意,date和+之間有一個空格!!!不然此命令沒法輸出日期。詳細的日期格式能夠看這裏

 

參考

相關文章
相關標籤/搜索