1、cron介紹
1.1、什么是cron?
cron是linux系統(tǒng)中以后臺進程模式周期性地執(zhí)行命令或指定程序任務地服務軟件。默認安裝完linux系統(tǒng)之后,cron服務軟件便會啟動,服務對應的進程名字為crond。corn服務會定期(默認每分鐘檢查一次)檢查系統(tǒng)中是否有需要執(zhí)行的任務工作計劃。
cron工具對應的crontab命令依賴于crond服務。
1.2、為什么要使用corn定時任務
要不斷地對數(shù)據(jù)進行備份,但是很多時候變天系統(tǒng)業(yè)務繁忙,因此數(shù)據(jù)備份工作只能放到晚上執(zhí)行,例如:網(wǎng)站數(shù)據(jù)庫數(shù)據(jù)及用戶上傳地圖片、文件和程序文件等。一般需要每天晚上做一次備份
1.3、不同系統(tǒng)定時任務介紹
1.3.1、windows系統(tǒng)
1.3.2、Linux系統(tǒng)
at(依賴于atd服務)一次性的定時任務。# 不常用
cron定時任務軟件依賴于crond服務,通過crontab命令可以配置周期性執(zhí)行定時任務工作計劃。
anacron定時任務軟件為非7*24小時開機的服務器準備,不能指定具體執(zhí)行任務的時間。
2、linux系統(tǒng)定時任務cron(d)
cron是軟件名,crond是進程名,crontab命令來設(shè)置定時任務的規(guī)則。
crond服務除了執(zhí)行用戶定時任務(/var/spool/cron),還會周期性的自動執(zhí)行系統(tǒng)相關(guān)的定時任務,例如:輪詢系統(tǒng)日志、備份系統(tǒng)數(shù)據(jù)、清理系統(tǒng)緩存等。無序人為干預
2.1、用戶定時任務計劃
crond服務工作時會以每分鐘為單位查看在/var/spool/cron路徑下以系統(tǒng)用戶名命名的定時任務文件,確定是否有需要執(zhí)行的任務計劃。如果有就把任務調(diào)到內(nèi)存中執(zhí)行,使用crontab命令編輯的文件最終都會以當前用戶命名存在于/var/spool/cron路徑下。
2.1.1、使用定時任務權(quán)限及配置文件說明
/etc/cron.deny? ? ? ? # 該文件中所列用戶不允許使用crontab命令
/etc/cron.allow? ? ? ? # 該文件中所列用戶允許使用crontab命令,優(yōu)先于/etc/cron.deny
/var/spool/cron? ? ? ? # 所有用戶的cron配置文件都默認存放在此目錄
/var/log/cron? ? ? ? ? ? # 定時任務日志文件,獲取故障信息
2.1.2、crontab命令編輯定時任務格式
如root用戶建立完定時任務后,會以當前用戶名創(chuàng)建一個文件存放在/var/spool/cron目錄下,配置文件為/var/spool/cron/root
用crontab命令編寫定時任務格式分為6段,前5段位時間設(shè)定段,第6段為所要執(zhí)行的腳本或命令任務段
[root@2022-6-23-centos7-test ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# 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
2.1.3、crontab命令編寫語法中特殊字符的含義
2.1.4、編寫定時任務的要領(lǐng)
1、定時任務后面執(zhí)行的命令不能有百分號,如果有必須要轉(zhuǎn)義
2、定時任務盡量用腳本
3、執(zhí)行定時任務盡量用全路徑
4、結(jié)尾加上 &>/dev/null或者>/dec/null 2>&1
??2.1.5、實踐定時任務
往/test/1.txt 每分鐘追加一個 "double kill"
首先檢查命令是否正確,正確后開始編寫定時任務
crontab -e#添加注釋
* * * * * echo 'double kill' >> /test/1.txt
tips:
定時任務是非登錄shell,不會加載/etc/profile文件里的變量(系統(tǒng)變量和環(huán)境變量)
2.2、系統(tǒng)定時任務計劃
crond服務還會查看/etc/cron.d目錄以及/etc/anacrontab下的文件,通常是每天、每周或每月需要執(zhí)行的任務。文章來源:http://www.zghlxwxcb.cn/news/detail-848991.html
2.2.1、系統(tǒng)任務的配置文件
/etc/logrotate.conf? ? ? ? # 日志輪詢切割配置文件
/etc/cron.daily/logrotate? ? ? ? # 每天執(zhí)行日志輪詢定時任務配置文章來源地址http://www.zghlxwxcb.cn/news/detail-848991.html
到了這里,關(guān)于linux-系統(tǒng)定時任務cron的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!