| 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

