centos7—計划任務(at、cron)


centos7—計划任務(at、cron)

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接: https://blog.csdn.net/qq_34889607/article/details/78635141

計划任務:讓計算機在指定的時間執行指定的事情
1、分類:一次性計划任務:at(臨時的計划任務)
               周期性計划任務:cron
2、計划任務管理:查atq、創建at、刪除atrm
      注:服務器重啟一般都是晚上   凌晨2點
      at 時間
      atq   或  at  -l    查計划列表
          eg.  at 20:00
                at> poweroff      關機
                at> ctrl+d
3、時間的寫法
      HH:MM   //18:30
      midnight   //0點 (午夜)
      noon   //12點 (中午)  
      teatime //16點(下午4點)
      AM  或   PM后綴指定一天的上午或下午。  //at  2:00 pm
      MMDDYY  、  MM/DD/YY 或 DD.MM.YY
      now + 計數  時間單位(minutes  、hours  、  days 或 weeks)
          eg. at now + 3 hours(從現在開始起三個小時后)
          eg. at 4pm  + 3 days   //三天以后的下午4點執行一個任務
               at 2am + tomorrom  //明天上午2點
               at 10am Jul 31   //7月31日上午10點


 案例一:凌晨2點備份/etc目錄 到 /tmp格式為 etc.tar.xz 
      at 02:00
      at> tar cvJf /tmp/etc.tar.xz /etc
      at> ctrl+d


4、查看所有用戶的計划任務
      atq
      at -l
5、查看某個計划任務的詳細內容
      at -c 工作號
6、刪除計划任務
      atrm 工作號 ...
      at -d 工作號 ...


 案例二:腳本方式創建at計划任務.
      echo  'ls;date;pwd'  | at  3:00      #用管道符將任務傳給at命令
 案例三:用at將指定文件(-f  文件名)中的命令設為計划任務.
      #首先,創建命令文件
      vim /opt/aplan      #添加如下內容
          ls
          date
          pwd
          tar -czvf /tmp/etc.tar.gz /etc


7、at權限管理、安全
      /etc/at.allow      白名單:只允許在此名單內的用戶使用at(此文件本身不存在)
      /etc/at.deny      黑名單:在此名單內的用戶不可以使用at
      注:當兩個文件都不存在,只有root用戶可以使用at
            當兩個文件都存在,allow優先執行


-----------------------------------------------------------
at服務管理:
查at軟件是否已安裝:pm -q at  
查at的文件列表:rpm -ql at
查at的配置文件列表:rpm -qc at
查at服務狀態:systemctl status atd   或   service atd status
重啟at服務:systemctl restart atd   或   service atd restart
關閉at服務:systemctl stop atd   或   service atd stop
開機不啟動at服務:systemctl disable atd   或   chkconfig atd off
開機啟動at服務:systemctl enable atd   或   chkconfig atd on


at的其他文件:
計划文件清單:ls   /var/spool/at/*    用cat可以看這些文件
-----------------------------------------------------------


cron:周期性計划任務、循環性計划任務,主要用於備份數據。
      crontab  
      usage:crontab [-u user] [ -e | -l | -r ]
      -u <user>  define user      #指定用戶
      -e      edit user's crontab      #編輯計划任務
      -l      list user's crontab      #查看計划任務
      -r      delete user's crontab      #刪除計划任務
1、crontab -e      編輯周期性計划任務的內容
2、查看配置:cat   /etc/crontab
時間
min     hour   day  month  week    command
分鍾     小時      日      月         周      動作(任務命令)    
0-59     0-23    1-31   1-12   0-7    命令或腳本(寫絕對路徑)
30         2         1      *       *      rm -rf /tmp/*   //每月1號的2:30分刪除/tmp目錄下的所有文件
5           *          *       6      3    rm -rf /tmp/*   //每年6月的每周三每小時的5分鍾刪除/tmp目錄下的所有文件
6           6         *       6     6    rm -rf /tmp/*    //每年6月的周六的6點6分鍾刪除/tmp目錄下的所有文件


*  任何時刻
-   一段時間  //  8-11 *  *  *  *   rm -rf /tmp/*    //每小時的8分鍾 9分鍾 10分鍾 11分鍾 刪除/tmp目錄下所有文件     
,  分隔(不連續的時間)       //  1,2,5,9   *  *  *  *   rm -rf /tmp/*  //每小時的1分鍾 2分鍾 5分鍾 9分鍾 刪除/tmp目錄下所有文件     
0-4,8-12    //
0-23/2  時間間隔  //1  0-23/2   *  *   *  rm -rf /tmp/*    // "0,2,4,6,8,10,12,14,16,18,20,22").
*/2    每隔2小時     //1    */2   *  *   *  rm -rf /tmp/*     每隔2小時執行rm命令


*  0-23  *  *  *  rm -rf /tmp/*   
*   */1   *  *  *  rm -rf /tmp/*   


3、時間的寫法
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)


案例一:每個星期三的下午10:00備份/etc/目錄到/tmp目錄叫2017-04-12_etc.tar.gz備份文件包含當天日期
crontab -e
* 22 * * 3 /usr/bin/tar cvzf /tmp/`/usr/bin/date +%F`_etc.tar.gz /etc 
注:`命令`中的``為命令替換功能,系統會先執行``(反撇,反引號)中的命令.也可以將``寫成$()
案例二:只保留最近1個月的日志文件
crontab -e
1 * * * *  find /var/log -mtime +30 |xarge -i rm -rf {}
案例三:每月1號的凌晨2點半清空臨時盤
crontab -e
30  2  1  *  *  /usr/bin/rm -rf /tmp/* 
案例四:每周每天的晚上8:10關閉電腦,除了星期六,星期五,星期日的17:10關閉電腦
crontab -e
10 20 * * 1-4  /usr/sbin/poweroff
10 17 * * 5,7  /usr/sbin/poweroff
案例五:jim用戶每天在家目錄創建一個以日期命名的目錄20170412
crontab -u jim -e
1  0  *  *  *  /bin/mkdir  /home/jim/`date +%Y%m%d`


4、查詢周期性計划任務的內容
      crontab -l      #查看當前用戶
      crontab -u jim -      #查看指定用戶
5、刪除某用戶的所有周期性計划任務(刪除某個計划任務crontab -e 進入文本刪除)
      crontab -r      #當前用戶
      crontab -u jim -r      #指定用戶


系統定義的計划任務(默認)
      更新whatis數據庫
      更新updatedb數據庫
      日志定期輪滾(日志切割)
      清理/tmp /var/tmp
      收集系統的狀態信息
 
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身份去執行命令


以下目錄內可以存在腳本  該腳本就會按照時間去執行
      cd /etc
      cron.hourly/      #每小時
      cron.weekly/      #每周
      cron.daily/      #每天
      cron.monthly/      #每月


6、刪除超過一個月不使用的文件
      cat /etc/cron.daily/tmpwatch
7、crontab服務管理:
      查軟件是否已安裝:rpm  -q  crontabs
      查軟件的文件列表:rpm  -ql  crontabs
      查軟件的配置文件列表:rpm -qc crontabs
      服務狀態:systemctl   status   crond       注:d是daemon守護進程
      重啟at服務: systemctl   restart   crond   或  service   crond  restart
      關閉at服務: systemctl   stop   crond   或  service   crond  stop
      開機不啟動at服務: systemctl   disable  crond 或 chkconfig   crond  off
      開機啟動at服務:  systemctl   enable   crond  或 chkconfig   crond  on
8、cron權限管理
/etc/cron.allow      白名單:只允許在此名單內的用戶使用crontab(此文件本身不存在)
/etc/cron.deny      黑名單:在此名單內的用戶不可以使用crontab
      注:兩個文件都不存在,只有root用戶可以使用crontab
             兩個文件都存在,allow優先執行









免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM