Centos7之如何設置定時任務
最近出了一件大事,用ShowDoc的Docker方式部署在服務器上,白天有工人換機箱,把電斷了,導致ShowDoc數(shù)據(jù)丟了。。備份數(shù)據(jù)刻不容緩。
1、安裝 crontabs服務并設置開機自啟:
$ yum install crontabs$ systemctl enable crond$ systemctl start crond2、配置定時規(guī)則
$ vim /etc/crontab //或者 crontab -e 立即生效在配置文件中配置你的定時執(zhí)行規(guī)則
59 23 * * * root /home/backup/showdoc/backup.shbackup.sh是你將要定時執(zhí)行的腳本文件,如圖所示:
規(guī)則很簡單,看注釋就能看懂了,從左到右分別是 分鐘(0~59)、小時(0~23)、天(1~31)、月(1~12)、星期(0~6)、用戶名、要執(zhí)行的命令或者腳本。
腳本內(nèi)容如下:
#! /bin/basht=$(date +%Y%m%d%H%M%S)cd /home/backup/showdoc/mount/tar -zcvf ../data/data_$t.tar ./showdoc_datafind /home/backup/showdoc/data -mtime 7 -type f|xargs rm -ft是當前日期,格式是年月日時分秒;tar -zcvf是將要備份的文件打成壓縮包,后綴會帶上日期;find ... -mtime 7 ...|xargs rm -f是只保留近七日的備份文件,之前的都會刪掉。
3、保存生效
$ crontab /etc/crontab4、查看任務
$ crontab -l任務列表,如圖所示:
到此定時任務配置完成。
CentOS7設置定時任務 每隔30分鐘執(zhí)行一次命令安裝 crontabs服務并設置開機自啟yum install crontabssystemctl enable crondsystemctl start crond設置用戶自定義定時任務vi /etc/crontab可以看到:
# Example of job definition:# .---------------- minute (0 - 59)# | ?.------------- hour (0 - 23)# | ?| ?.---------- day of month (1 - 31)# | ?| ?| ?.------- month (1 - 12) OR jan,feb,mar,apr ...# | ?| ?| ?| ?.---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | ?| ?| ?| ?|# * ?* ?* ?* ?* user-name ?command to be executed即:
分鐘(0-59) 小時(0-23) 日(1-31) 月(11-12) 星期(0-6,0表示周日) 用戶名 要執(zhí)行的命令
每隔30分鐘root執(zhí)行一次updatedb命令:
*/30 * * * * root updatedb每天早上5點定時重啟系統(tǒng):
0 5 * * * root reboot每隔三秒執(zhí)行一次/home/somedir目錄下的scripts.sh腳本:
## For excuting scripts.sh every 3 seconds##on 2014-10-15*/1 * * * * ?/home/somedir/scripts.sh*/1 * * * * sleep 3 && ?/home/somedir/scripts.sh*/1 * * * * sleep 6 && ?/home/somedir/scripts.sh*/1 * * * * sleep 9 && ?/home/somedir/scripts.sh*/1 * * * * sleep 12 && ?/home/somedir/scripts.sh*/1 * * * * sleep 15 && ?/home/somedir/scripts.sh*/1 * * * * sleep 18 && ?/home/somedir/scripts.sh*/1 * * * * sleep 21 && ?/home/somedir/scripts.sh*/1 * * * * sleep 24 && ?/home/somedir/scripts.sh*/1 * * * * sleep 27 && ?/home/somedir/scripts.sh*/1 * * * * sleep 30 && ?/home/somedir/scripts.sh*/1 * * * * sleep 33 && ?/home/somedir/scripts.sh*/1 * * * * sleep 36 && ?/home/somedir/scripts.sh*/1 * * * * sleep 39 && ?/home/somedir/scripts.sh*/1 * * * * sleep 42 && ?/home/somedir/scripts.sh*/1 * * * * sleep 45 && ?/home/somedir/scripts.sh*/1 * * * * sleep 48 && ?/home/somedir/scripts.sh*/1 * * * * sleep 51 && ?/home/somedir/scripts.sh*/1 * * * * sleep 54 && ?/home/somedir/scripts.sh*/1 * * * * sleep 57 && ?/home/somedir/scripts.sh保存生效#加載任務,使之生效crontab /etc/crontab#查看任務crontab -l總結(jié)以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
下面是補充
安裝 crontabs服務并設置開機自啟
yum install crontabssystemctl enable crond (設為開機啟動)systemctl start crond(啟動crond服務)systemctl status crond (查看狀態(tài))設置用戶自定義定時任務
vi /etc/crontab
可以看到:Example of job definition:.---------------- minute (0 - 59)| .------------- hour (0 - 23)| | .---------- day of month (1 - 31)| | | .------- month (1 - 12) OR jan,feb,mar,apr ...| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat| | | | |* * * * * user-name command to be executed
即:分鐘(0-59) 小時(0-23) 日(1-31) 月(11-12) 星期(0-6,0表示周日) 用戶名 要執(zhí)行的命令
*/30 * * * root /usr/local/mycommand.sh (每天,每30分鐘執(zhí)行一次 mycommand命令)
* 3 * * * root /usr/local/mycommand.sh (每天凌晨三點,執(zhí)行命令腳本,PS:這里由于第一個的分鐘沒有設置,那么就會每天凌晨3點的每分鐘都執(zhí)行一次命令)
0 3 * * * root /usr/local/mycommand.sh (這樣就是每天凌晨三點整執(zhí)行一次命令腳本)
*/10 11-13 * * * root /usr/local/mycommand.sh (每天11點到13點之間,每10分鐘執(zhí)行一次命令腳本,這一種用法也很常用)
10-30 * * * * root /usr/local/mycommand.sh (每小時的10-30分鐘,每分鐘執(zhí)行一次命令腳本,共執(zhí)行20次)
10,30 * * * * * root /usr/local/mycommand.sh (每小時的10,30分鐘,分別執(zhí)行一次命令腳本,共執(zhí)行2次)
保存生效
加載任務,使之生效:crontab /etc/crontab
查看任務:crontab -l
$ crontab -u 用戶名 -l (列出用戶的定時任務列表)
PS:特別注意,crond的任務計劃, 有并不會調(diào)用用戶設置的環(huán)境變量,它有自己的環(huán)境變量,當你用到一些命令時,比如mysqldump等需要環(huán)境變量的命令,手工執(zhí)行腳本時是正常的,但用crond執(zhí)行的時候就會不行,這時你要么寫完整的絕對路徑,要么將環(huán)境變量添加到 /etc/crontab 中。
好了,計劃任務就是這么簡單了,但是計劃任務,執(zhí)行的語句如果是多條,則需要用藥shell腳本,自己先寫一個shell腳本,然后在計劃任務中,執(zhí)行這個腳本即可。至于shell腳本的寫法, 這里不贅述。
