計(jì)劃任務(wù):讓計(jì)算機(jī)在指定的時(shí)間執(zhí)行指定的事情 1、分類:一次性計(jì)劃任務(wù):at(臨時(shí)的計(jì)劃任務(wù)) 周期性計(jì)劃任務(wù):cron 2、計(jì)劃任務(wù)管理:查atq、創(chuàng)建at、刪除atrm 注:服務(wù)器重啟一般都是晚上 凌晨2點(diǎn) at 時(shí)間 atq 或 at -l 查計(jì)劃列表 eg. at 20:00 at> poweroff 關(guān)機(jī) at> ctrl+d 3、時(shí)間的寫法 HH:MM //18:30 midnight //0點(diǎn) (午夜) noon //12點(diǎn) (中午) teatime //16點(diǎn)(下午4點(diǎn)) AM 或 PM后綴指定一天的上午或下午。 //at 2:00 pm MMDDYY 、 MM/DD/YY 或 DD.MM.YY now + 計(jì)數(shù) 時(shí)間單位(minutes 、hours 、 days 或 weeks) eg. at now + 3 hours(從現(xiàn)在開始起三個(gè)小時(shí)后) eg. at 4pm + 3 days //三天以后的下午4點(diǎn)執(zhí)行一個(gè)任務(wù) at 2am + tomorrom //明天上午2點(diǎn) at 10am Jul 31 //7月31日上午10點(diǎn) 案例一:凌晨2點(diǎn)備份/etc目錄 到 /tmp格式為 etc.tar.xz at 02:00 at> tar cvJf /tmp/etc.tar.xz /etc at> ctrl+d 4、查看所有用戶的計(jì)劃任務(wù) atq at -l 5、查看某個(gè)計(jì)劃任務(wù)的詳細(xì)內(nèi)容 at -c 工作號(hào) 6、刪除計(jì)劃任務(wù) atrm 工作號(hào) ... at -d 工作號(hào) ... 案例二:腳本方式創(chuàng)建at計(jì)劃任務(wù). echo 'ls;date;pwd' | at 3:00 #用管道符將任務(wù)傳給at命令 案例三:用at將指定文件(-f 文件名)中的命令設(shè)為計(jì)劃任務(wù). #首先,創(chuàng)建命令文件 vim /opt/aplan #添加如下內(nèi)容 ls date pwd tar -czvf /tmp/etc.tar.gz /etc 7、at權(quán)限管理、安全 /etc/at.allow 白名單:只允許在此名單內(nèi)的用戶使用at(此文件本身不存在) /etc/at.deny 黑名單:在此名單內(nèi)的用戶不可以使用at 注:當(dāng)兩個(gè)文件都不存在,只有root用戶可以使用at 當(dāng)兩個(gè)文件都存在,allow優(yōu)先執(zhí)行 ----------------------------------------------------------- at服務(wù)管理: 查at軟件是否已安裝:pm -q at 查at的文件列表:rpm -ql at 查at的配置文件列表:rpm -qc at 查at服務(wù)狀態(tài):systemctl status atd 或 service atd status 重啟at服務(wù):systemctl restart atd 或 service atd restart 關(guān)閉at服務(wù):systemctl stop atd 或 service atd stop 開機(jī)不啟動(dòng)at服務(wù):systemctl disable atd 或 chkconfig atd off 開機(jī)啟動(dòng)at服務(wù):systemctl enable atd 或 chkconfig atd on at的其他文件: 計(jì)劃文件清單:ls /var/spool/at/* 用cat可以看這些文件 ----------------------------------------------------------- cron:周期性計(jì)劃任務(wù)、循環(huán)性計(jì)劃任務(wù),主要用于備份數(shù)據(jù)。 crontab usage:crontab [-u user] [ -e | -l | -r ] -u <user> define user #指定用戶 -e edit user's crontab #編輯計(jì)劃任務(wù) -l list user's crontab #查看計(jì)劃任務(wù) -r delete user's crontab #刪除計(jì)劃任務(wù) 1、crontab -e 編輯周期性計(jì)劃任務(wù)的內(nèi)容 2、查看配置:cat /etc/crontab 時(shí)間 min hour day month week command 分鐘 小時(shí) 日 月 周 動(dòng)作(任務(wù)命令) 0-59 0-23 1-31 1-12 0-7 命令或腳本(寫絕對(duì)路徑) 30 2 1 * * rm -rf /tmp/* //每月1號(hào)的2:30分刪除/tmp目錄下的所有文件 5 * * 6 3 rm -rf /tmp/* //每年6月的每周三每小時(shí)的5分鐘刪除/tmp目錄下的所有文件 6 6 * 6 6 rm -rf /tmp/* //每年6月的周六的6點(diǎn)6分鐘刪除/tmp目錄下的所有文件 * 任何時(shí)刻 - 一段時(shí)間 // 8-11 * * * * rm -rf /tmp/* //每小時(shí)的8分鐘 9分鐘 10分鐘 11分鐘 刪除/tmp目錄下所有文件 , 分隔(不連續(xù)的時(shí)間) // 1,2,5,9 * * * * rm -rf /tmp/* //每小時(shí)的1分鐘 2分鐘 5分鐘 9分鐘 刪除/tmp目錄下所有文件 0-4,8-12 // 0-23/2 時(shí)間間隔 //1 0-23/2 * * * rm -rf /tmp/* // "0,2,4,6,8,10,12,14,16,18,20,22"). */2 每隔2小時(shí) //1 */2 * * * rm -rf /tmp/* 每隔2小時(shí)執(zhí)行rm命令 * 0-23 * * * rm -rf /tmp/* * */1 * * * rm -rf /tmp/* 3、時(shí)間的寫法 The time and date fields are: field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names) 案例一:每個(gè)星期三的下午10:00備份/etc/目錄到/tmp目錄叫2017-04-12_etc.tar.gz備份文件包含當(dāng)天日期 crontab -e * 22 * * 3 /usr/bin/tar cvzf /tmp/`/usr/bin/date +%F`_etc.tar.gz /etc 注:`命令`中的``為命令替換功能,系統(tǒng)會(huì)先執(zhí)行``(反撇,反引號(hào))中的命令.也可以將``寫成$() 案例二:只保留最近1個(gè)月的日志文件 crontab -e 1 * * * * find /var/log -mtime +30 |xarge -i rm -rf {} 案例三:每月1號(hào)的凌晨2點(diǎn)半清空臨時(shí)盤 crontab -e 30 2 1 * * /usr/bin/rm -rf /tmp/* 案例四:每周每天的晚上8:10關(guān)閉電腦,除了星期六,星期五,星期日的17:10關(guān)閉電腦 crontab -e 10 20 * * 1-4 /usr/sbin/poweroff 10 17 * * 5,7 /usr/sbin/poweroff 案例五:jim用戶每天在家目錄創(chuàng)建一個(gè)以日期命名的目錄20170412 crontab -u jim -e 1 0 * * * /bin/mkdir /home/jim/`date +%Y%m%d` 4、查詢周期性計(jì)劃任務(wù)的內(nèi)容 crontab -l #查看當(dāng)前用戶 crontab -u jim - #查看指定用戶 5、刪除某用戶的所有周期性計(jì)劃任務(wù)(刪除某個(gè)計(jì)劃任務(wù)crontab -e 進(jìn)入文本刪除) crontab -r #當(dāng)前用戶 crontab -u jim -r #指定用戶 系統(tǒng)定義的計(jì)劃任務(wù)(默認(rèn)) 更新whatis數(shù)據(jù)庫(kù) 更新updatedb數(shù)據(jù)庫(kù) 日志定期輪滾(日志切割) 清理/tmp /var/tmp 收集系統(tǒng)的狀態(tài)信息 vim /etc/crontab 配置文件 # 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 */5 * * * * root 命令 //每隔5分鐘以root身份去執(zhí)行命令 以下目錄內(nèi)可以存在腳本 該腳本就會(huì)按照時(shí)間去執(zhí)行 cd /etc cron.hourly/ #每小時(shí) cron.weekly/ #每周 cron.daily/ #每天 cron.monthly/ #每月 6、刪除超過一個(gè)月不使用的文件 cat /etc/cron.daily/tmpwatch 7、crontab服務(wù)管理: 查軟件是否已安裝:rpm -q crontabs 查軟件的文件列表:rpm -ql crontabs 查軟件的配置文件列表:rpm -qc crontabs 服務(wù)狀態(tài):systemctl status crond 注:d是daemon守護(hù)進(jìn)程 重啟at服務(wù): systemctl restart crond 或 service crond restart 關(guān)閉at服務(wù): systemctl stop crond 或 service crond stop 開機(jī)不啟動(dòng)at服務(wù): systemctl disable crond 或 chkconfig crond off 開機(jī)啟動(dòng)at服務(wù): systemctl enable crond 或 chkconfig crond on 8、cron權(quán)限管理 /etc/cron.allow 白名單:只允許在此名單內(nèi)的用戶使用crontab(此文件本身不存在) /etc/cron.deny 黑名單:在此名單內(nèi)的用戶不可以使用crontab 注:兩個(gè)文件都不存在,只有root用戶可以使用crontab 兩個(gè)文件都存在,allow優(yōu)先執(zhí)行 |
|