crontab 在linux下做定時任務的命令,
1. 基本格式
* * * * * cmd
第一個表示:分鍾 1-59, 每分鍾用 */1
第二個表示:小時 023
第三個表示:日期1-31
第四個表示:月份1-12
第五個表示:星期幾0-6(0表示星期日)
幾個說明例子
*/1 * * * * /path/xx.sh 每分鍾執行一次腳本
0 3 * * 5-6 /path/xx.sh 每周五,周六早上3點執行一次腳本
可以使用在線的工具來模擬測試寫的crontab任務
2. crontab 命令
NAME crontab -- maintain crontab files for individual users (V3) SYNOPSIS crontab [-u user] file crontab [-u user] { -l | -r | -e }
基本用法:
crontab -h 查看幫助
crontab -l 查看當前定時任務列表
crontab -r 刪除當前用戶下的定時任務
crontab -e 進入編輯模式添加定時任務
crontab file 添加指定配置文件到定時任務(上面使用-e命令,會在/var/spool/cron/crontabs/user 下生成當前用戶名的文件)
可以此命令預先腳本生成配置文件然后添加到定時任務;
示例,測試使用的ubuntu server 14
echo "0 3 * * 1-5 /path/xx.sh" >/var/spool/cron/crontabs/user chmod 777 /var/spool/cron/crontabs/user crontab /var/spool/cron/crontabs/user service crontab restart
3. 關於定時任務在某一個時間段隨機執行一次
crontab 只能設定定時任務,不能直接設定隨機(有知道直接的留言告訴我)
於是想到了一個 shell腳本隨機,然后生成一個隨機數,把這個隨機數設定在定時任務的時間上,這樣每次執行一次,隨機一次時間,並重新設定定時任務;任務執行完成刪除當前任務,隨機一數,並重新配置任務
這樣就達到了在某一個時間段隨執行一次任務的想法。
如下腳本邏輯
#!/bin/bash #隨機數,表示隨機一個30以內的數 randNum=$(($RANDOM%30)) #user 表示當前登陸的用戶 #path /var/spool/cron/crontabs #生成crontab 任務配置文件 #表示在 每周一到周五早上3點到3點30之間,隨機一個時間執行一次數據備份 echo $[randNum]" 3 * * 1-5 /path/backdb.sh" > /path/user #設置可執行權限 sudo chmod 777 /path/user #使用crontab 命令添加到定時任務 sudo crontab /path/user #重啟服務 sudo service cron restart
參考:http://www.jb51.net/LINUXjishu/151805.html