第13章 計劃任務

 

一、簡介

(1)作用:

計劃任務主要是做一些週期性的任務,目前最主要的用途是定期備份數據

(2)一次性調度執行 at

(3)循環調度執行 cron

所有計劃任務執行中的輸出都會以郵件的方式發送給指定用戶, 除非重定向

 

二、一次性調度執行at

1.程序安裝(默認已經安裝)

在系統光盤中。
#rpm -ivh at.x86_64        //安裝
#systemctl start atd        //啓動
#systemctl status atd        //查看
Active: active (running)    //運行中    inactive是不活躍就是沒有運行。
 

2.語法格式

#at   now +5min   //五分鐘後

#at  noon +4 days   //四天後中午

#at  5pm august 3 2018   //2018年8月3日下午5點   

#at   16:00 2018-11-27    //2018年11月27日16點

#at   4pm + 3days     //3天后下午4點

 

3.一次性任務計劃例題

例1:

[root@localhost ~]# at  now   +1min
at> useradd uuuu
at> <EOT>   //CTRL+D提交任務

job 1 at Sat Mar 21 22:34:00 2015
[root@localhost ~]# atq   ----查詢未執行的at任務
3 Thu Mar 30 09:55:00 2017 a root
稍等片刻。1分鐘後。
[root@localhost ~]# id uuuu  ------查詢uuuu用戶ID來判斷用戶是否通過at建立成功


例2:通過重定向,一次性導入多個任務

[root@localhost ~]# vim at.jobs
useradd u99
useradd u00
touch /`date +%F`.txt   ---`  `中的命令先執行
[root@localhost ~]# at now +1min < at.jobs


三 、循環調度執行cron

1.簡介

crond的概念和crontab是不可分割的。crontab是一個命令,用於設置週期性被執行的指令,crond是它的守護進程。

查看進程的狀態:

#systemctl  status  crond.server

#ps   aux |  grep  crond

root 550 0.0 0.0 126300 1648 ? Ss 10:05 0:00 /usr/sbin/crond -n

 

2.用戶級的計劃任務

(1)計劃任務的存放位置

#ls   /var/spool/cron/

(2)管理方式;(針對當前登陸的用戶)

2.1  創建計劃(Edit)

#crontab  -e   

2.2 查詢計劃(List)

#crontab  -l

#crontab  -l  -u  username   //管理員用來管理其他用戶的計劃任務

2.3刪除計劃(Remove)

#crontab  -r

2.4高級管理-------拒絕用戶執行計劃任務。

在拒絕文件中添加用戶名

/etc/cron.deny

alice

jack

測試:登錄該用戶,通過該用戶創建計劃任務

[alice@localhost ~]$ crontab -e        //提示拒絕用戶執行。
You (alice) are not allowed to use this program (crontab)
See crontab(1) for more information

(3)語法格式job  format   -----在/etc/crontab中

分    時    日  月   周
# .---------------- 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
# | | | | |
# * * * * * command
 

特殊例子:

00 02 * 6 5 ls //每年6月的週五2:00整  (特殊)
00 02 14 * 7 ls //每月14號2:00整 或者 每週日2:00整,這兩個時間都執行

00 02 14 2 7 ls //每年2月14號2:00整 或者2月 每週日2:00整,這兩個時間都執行

*/5 * * * * ls //每隔5分鐘
00 02 1,5,8 * * ls //每月1,5,8號的2:00整
00 02 1-8 * * ls //每月1到8號的2:00整
 

3.系統級的計劃任務

(1)簡介

系統級任務計劃作用:

     臨時文件的清理    /tmp  和   /var/tmp

     系統信息的採集   sar

     系統日誌的輪轉   logrotate

      通常不是由用戶定義

 

(2)定義位置一

定義系統的循環的任務計劃------在/etc/crontab中按格式添加循環任務

#vim    /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
 

 

(3)定義位置二【anacron】

3.1簡介:

1.以天爲單位或者在啓動後立刻進行anacron的動作

2.偵測停機期間應該進行但是並沒有進行的crontab任務,如果有就將該任務執行一遍然後自動停止。

3.2運行週期

時,天,周,月

3.3工作原理

anacron會以一小時,一天、七天、一個月爲期去偵測系統未進行的crontab任務,因此對某些特殊的使用環境(關機未執行)非常有幫助。

3.4示例

第一步     主程序:/etc/cron.d

命令:#  ls    /etc/cron*

 

第二步    主程序所調動的程序  :   /etc/cron.d/0hourly

命令:#  cat    /etc/cron.d/0hourly  

   

第三步    主程序所調動的程序anacron  :  /etc/cron.hourly/0anacron

命令:  #  ls   /etc/cron.hourly/

 

第四步     調動了anacron程序

命令  : # cat    /etc/cron.hourly/0anacron

第五步    anacron程序的機制      -----命令anacrontab

命令  : #  cat  /etc/anacrontab

 

第六步   觀察日誌,會發現時間戳(如果沒有時間戳,可以通過命令【anacron   -u 】  立刻觸發該程序更新)

命令:  #  cat  /var/spool/anacron/cron.daily

 

第七步:觀察任務計劃彙總日誌(通過強制執行的命令【 anacron   -f  】,可以立刻觸發該程序)

查看彙總日誌命令:#tail    /var/log/cron

[root@localhost ~]# tail /var/log/cron
2017-10-23
Oct 23 10:08:08 localhost anacron[15881]: Job `cron.daily' locked by another anacron - skipping
Oct 23 10:08:08 localhost anacron[15881]: Will run job `cron.weekly' in 59 min.
Oct 23 10:08:08 localhost anacron[15881]: Will run job `cron.monthly' in 79 min.
Oct 24 10:05:36 localhost anacron[15983]: Updated timestamp for job `cron.daily' to 2017-10-24
Oct 24 10:05:36 localhost anacron[15983]: Updated timestamp for job `cron.weekly' to 2017-10-24
Oct 24 10:05:36 localhost anacron[15983]: Updated timestamp for job `cron.monthly' to 2017-10-24

 

總結:

anacron程序是挽救系統中未及時完成的任務,用戶一般不需要使用

 

anacron程序解釋:

#anacron   [-sfn]  [job]

#anacron   -u   [job]

-s  :開始一連續的運行各項工作,會依據時間記錄檔的數據判斷是否進行。

-f  :強制進行,而不去時間記錄檔

-n :  立刻進行未進行的任務,而不延遲 (delay) 等待時間;

-u  :僅升級時間記錄檔的時間戳記,不進行任何工作。

job :由 /etc/anacrontab 定義的各項工

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章