共計 2564 個字符,預計需要花費 7 分鐘才能閱讀完成。
這篇文章主要介紹“Linux 系統定時任務怎么配置”,在日常操作中,相信很多人在 Linux 系統定時任務怎么配置問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linux 系統定時任務怎么配置”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
一:定義
crond 是 Linux 系統中用來定期執行命令或指定程序任務的一種服務或軟件
1、linux 系統自身定期執行的任務(輪詢系統日志、備份數據等)
2、用戶執行的任務(定時更新同步時間、網站數據備份等)
二:命令語法
定時任務的命令是 crontab, 其守護進程是 crond(服務運行的程序)
crontab [-u users] 文件
crontab [-u users] [-e | -l | -r]
-e 編輯定時任務
-l 查看定時任務
-r 清除定時任務
/etc/cron.deny(allow) 控制使用 crontab 的權限用戶
/etc/spool/cron/ 所有用戶 crontab 配置文件的存放地
三:系統定時任務格式
[root@Centos ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# 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
/etc/crontab 分七段,空格分隔,用戶 6 段
時間格式:分時日月周—— * * * * * user-name command
特殊符號的意義
* 任意(每‘時間’)
-(減號)分隔符,表示一個時間段“到”如 17-19 表時 17 到 19 的意思
,(逗號)分隔時段,不連續的兩個時間
/n(n 代表數字)每隔 N 單位的時間,/5 每 5XX
四:服務狀態查看
chkconfig –list crond 查看服務是否開機啟動
[root@Centos ~]# chkconfig –list crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@Centos ~]#ps -ef|grep crond 查看服務是否啟動
[root@Centos ~]# ps -ef|grep crond
root 1746 1 0 09:17 ? 00:00:01 crond
root 2274 2052 0 10:14 pts/0 00:00:00 grep crond
/etc/init.d/crond start(restart) 啟動與重啟服務
五:定時任務的書寫規范(生產環境)
1、定時任務書寫必必須加上一定的注釋信息
2、如果是執行 shell 腳本任務前要加上 /bin/sh
3、在指定用戶下執行相關任務,批量腳本(echo 腳本規則 /var/spool/cron/root)
4、定時任務(腳本任務)的結尾加上 dev/null 2 1 將一些不必要的輸出信息 (錯誤或標準輸出) 丟到空設備中,也就是默認不輸出不必要的信息
重定向
或 1 輸出重定向(正確的結果)或 1
2 或 2 錯誤重定向(錯誤的結果)
或 0 1,或 0 輸入重定向
5、生產任務程序不要隨意輸出
tar zcf etc.tar.gz /etc tar.etc.log 2 1
6、命令或程序最好寫進腳本
命令程序要使用絕對路徑,然且把腳本寫到定時任務中,用到系統環境變量時要重新定義
7、定時任務執行的腳本要規范路徑(/server/scripts 一般默認路徑)
六:配置定時任務操作規范
1、事先在命令行中操作,命令執行成功后復制命令進腳本中,減少書寫錯誤
2、然后測試腳本執行,腳本測試成功后,復制腳本的規范路徑到定時任務中
3、實際生產環境中,事先要在測試環境中測試,然后應用到實際生產環境中去
七:實戰例子
1、每分鐘將 name 追加到 /server/log/name.log 這個文件中
#####print name to log everyday 2016-08-08
* * * * * echo name /server/log/name.log
[root@Centos log]# date
Wed Aug 24 10:57:17 CST 2016
[root@Centos log]# cat /server/log/name.log
name
name
[root@Centos log]# date
Wed Aug 24 10:58:18 CST 2016
[root@Centos log]# cat /server/log/name.log
name
name
name
測試此定時任務已成功執行
2、每周六、周日,9:00,14:00 執行 /server/scrpts/name.sh 這個腳本,腳本的內容是打印當天的日期隨意追加到一個文件里
按照書寫規范一步步來寫這個定時任務
腳本內容
date %F name.txt
編輯腳本
vi name.sh
date %F name.txt
腳本全路徑執行測試
/bin/sh /server/scrpts/name.sh
書寫定時任務
0 09,14 * * 6,7 /bin/sh /server/scrpts/name.sh
編輯定時任務文件
crontab -e
###one shell by yuw001 2016-08-10
0 09,14 * * 6,7 /bin/sh /server/scrpts/name.sh dev/null 2 1
到此,關于“Linux 系統定時任務怎么配置”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!