linux系統計划任務


at crontab
一次性計划任務 周期性計划任務

摘要:linux系統中,可以通過crontab和at兩種命令實現計划任務;
計划任務的作用:是做一些周期性的任務,在生產中的主要用來定期備份數據.


at 一次性計划任務

yum install at -y 下載at
systemctl restart atd 運行at
systemctl enable atd 設置開機自啟

  • 使用格式:
    at +時間
  • 查看計划任務:
    at -l
    atq
  • 查看計划任務內容:
    at -c jobid
  • 刪除計划任務:
    atrm jobid
  • 創建計划任務:
    at 時間
  • ctrl d -->保存

演示:

╭─root@localhost.localdomain ~  
╰─➤  yum install at -y      #因為at不是本機自帶所以需要下載at
已加載插件:fastestmirror, langpacks
...  #省略加載內容
更新完畢:
  at.x86_64 0:3.1.13-24.el7                       

完畢!
╭─root@localhost.localdomain ~  
╰─➤             systemctl restart atd      #運行at
╭─root@localhost.localdomain ~  
╰─➤             systemctl enable atd     #設置開機自啟             
╭─root@localhost.localdomain ~  
╰─➤  at 10:00      #輸入“at  時間”;開始設置at   ,支持am、pm           
at> touch /home/cjk      #輸入任務內容
at> echo "hello" >> /home/cjk<EOT>    #輸入完畢,按Ctrl+D保存
job 2 at Wed May 15 10:00:00 2019     
╭─root@localhost.localdomain ~  
╰─➤  at -l      #查詢at任務
2	Wed May 15 10:00:00 2019 a root   #任務id+時間
╭─root@localhost.localdomain ~   
╰─➤  atq     #查詢at任務
2	Wed May 15 10:00:00 2019 a root
╭─root@localhost.localdomain ~  
╰─➤  at -c 2     #at -c 任務id   查詢at任務                                
...  #省略加載內容
touch /home/cjk
echo "hello" >> /home/cjk
marcinDELIMITER4dbc8ae5                               
╭─root@localhost.localdomain ~  
╰─➤  atrm 2        # atrm  +任務id --->刪除任務                           
╭─root@localhost.localdomain ~  
╰─➤  atq
╭─root@localhost.localdomain ~  
╰─➤ 

crontab 周期性任務

常用選項:

-e: 編輯計划任務 edit
-l: 查看計划任務 display
-u: 指定用戶 user
-r: 刪除計划任務 remove

crontab文件介紹

╭─root@localhost.localdomain ~
╰─➤ cat /etc/crontab
文件內容截屏:

演示:

╭─root@localhost.localdomain ~  
╰─➤  crontab -e -u du     #指定du用戶創建crontab
no crontab for du - using an empty one
crontab: installing new crontab
╭─root@localhost.localdomain ~  
╰─➤  crontab -lu du      #查看crontab    
                                                      
45 4 1,10,22 * * /usr/bin/systemctl restart network
*/30 18-23 * * * /usr/bin/systemctl restart network
30 2 * * 7 /usr/bin/cp /etc/fstab /tmp/fstab-`date “+\%F_\%T” `

╭─root@localhost.localdomain ~  
╰─➤  crontab -eu du    #打開du用戶的crontab任務文件,把任務注釋掉以刪除的某個任務
       #計划任務都會被保存在 /var/spool/cron/,文件命名就是用戶名:
crontab: installing new crontab
╭─root@localhost.localdomain ~  
╰─➤  crontab -lu du

#45 4 1,10,22 * * /usr/bin/systemctl restart network      #用“#”把任務注釋掉  
*/30 18-23 * * * /usr/bin/systemctl restart network
30 2 * * 7 /usr/bin/cp /etc/fstab /tmp/fstab-`date “+\%F_\%T” `  #計划任務不識別%需用 \ 轉譯

╭─root@localhost.localdomain ~  
╰─➤  crontab -ru du   #-r刪除crontab,會刪除整個文件,刪除所有任務;
╭─root@localhost.localdomain ~  
╰─➤  crontab -lu du
no crontab for du

##最后重啟crontab生效

編寫計划任務實例:

實例1、每月1、10、22日的4:45重啟network服務

45 4 1,10,22 * * /usr/bin/systemctl restart network

實例2、每周六、周日的1:10重啟network服務

10 1 * * 6,7 /usr/bin/systemctl restart network

實例3、每天18:00至23:00之間每隔30分鍾重啟network服務

*/30 18-23 * * * /usr/bin/systemctl restart network

實例4、每隔兩天的上午8點到11點的第3和第15分鍾執行一次重啟

3,15 8-11 */2 * * /usr/sbin/reboot

實例5、每周日凌晨2點30分,運行cp命令對/etc/fstab文件進行備份,存儲位置為/backup/fstab-YYYY-MM-DD-hh-mm-ss;

30 2 * * 7 /usr/bin/cp /etc/fstab /tmp/fstab-`date “+\%F_\%T”`

實例6、一月一號的4點重啟smb

0 4 1 1 * /usr/bin/systemctl restart smb   #4點鍾只執行一次命令,正確答案;
* 4 1 1 * /usr/bin/systemctl restart smb   #四點到五點執行了60次命令,錯誤答案:

實例7、晚上11點到早上7點之間,每隔一小時重啟smb

0 23-0/1,1-7/1 * * * /usr/bin/systemctl restart smb
0 23,0,1,2,3,4,5,6,7  * * * /usr/bin/systemctl restart smb

實例8、每一小時重啟smb

0 * * * * /usr/bin/systemctl restart smb


免責聲明!

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



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