linux學習之旅(十四)&& 系統延時及定時任務

系統延時及定時任務

一.系統延時任務 ( 延時任務是臨時的 )

1.at命令

at 命令可以指定某一任務在將來的特定時間運行。該作業可能是一次備份 、對您系統的檢查或者特定時間發送的通知。那些需要花費很長時間纔可完 成的作業正適合 at 命令。僅需使用 at 命令將任務設置爲在一分鐘或兩 分鐘之後運行。然後您便可以安全註銷 , 因爲該任務會在與 shell 會話 斷開連接的情況下運行

at 命令必須指定任務應運行的時間。該指定可以是具體時間和 / 或日期 ( 例如星期一 , 10:00pm 或 7 月 15 日 ) 。也可以是當前時間的相 對時間 ( 現在時間加上 5 分鐘 , 現在時間加上 3 天或 4:00pm 加上 1 周 ) 通過添加其他選項 , 您可以在任務完成是發送郵件 ( -m ), 或者 從文件中讀取任務 ( -f 文件 ), 而無需通過標準輸入進行

at  +  time
at> 延遲的動作
ctrl+d   ##保存退出

at -l | atq     ##查看當前任務
atrm  | at -d +任務號  ##取消指定任務
at -c +任務號      ##查看任務內容
at now+1min     ##延時一分鐘
at -f file  time    ##延時執行文件中的內容(文件不是腳本)
at -m   (at命令後添加)##延時命令沒有輸出時也發送郵件給執行者,當你命令沒有輸出,也要發送郵件給執行者,但郵件內容是空的
at -M   (。。。)   ##延時命令即使有輸出也不發送郵件給執行者
at now+1min -f file ##(設置時間發送文件)
  • mail 可以收郵件,默認有輸出的命令纔可以發起郵件

2.at命令的執行權力設定

/etc/at.deny ##用戶黑名單,此名單中的用戶不能執行at命令 (直接在文件中寫用戶名) 

/etc/at.allow 
##用戶白名單,名單默認不存在,本身只有at.deny這一個文件,但是名單一旦出現,即touch  /etc/at.allow,那麼用戶黑名單(at.deny)失效,而且系統默認所有用戶默認不能執行at,只有在這個名單中出現的用戶可以使用at命令(優先級高於黑名單)。文件也是直接進去寫

*兩個文件即改即生效*
  • 可以man 5 at.allow

二.定期任務

定時任務是永久的

定時任務程序crond,在系統中每分鐘做任務掃描

cron 設備管理必須按計劃定期重複運行的程序。後臺程 crond 每分鐘喚醒一次 , 以運行計劃的任何任務用戶使用 crontab命令計劃個人任務。系統管理員可以在系統範圍配置文件中設置任務

1.發起方式

發起方式一(命令發起)

crontab -u username -e      ##username用戶建立定時任務(默認vi編輯器進入編輯)
crontab -e 以自己身份寫
##可以寫多行
"此命令會進入一個文本,該文本的填寫方式是: 分 時 天 月 周 + 命令"
crontab -u username -r      ##查看某用戶的定時任務
crontab -u username -l      ##刪除某用戶的定時任務
man  5  crontab
  • 如果在裏面默認寫創建文件時,這個文件默認創建在這個用戶的家目錄下
  • 比如在 crontab -u student -e 中寫了 * * * * * touch yyuyuyuyuyu 那麼,這個文件被默認創建在了/home/student,即student的家目錄下面

發起方式二(文件發起)

文件一:
/var/spool/cron/root(文件名誰發起就是誰的,也可以是student…)

  • man crontab:
  • 在裏面寫,等同於crontab -u root -e,用crontab -u root -l 也能看見 。直接寫入,不需要執行權限,直接生效

但是,用文件名區分,就要創建很多不同名的文件,非常麻煩,所以文件二就比較的重要了

文件二:
/etc/cron.d/filename (這裏面寫的是任務)

屬於系統的任務通常保存在 /etc/crontab 文件中而不是使用 crontab -e 編輯保存在個人文件中。更好的做法是用文本編輯器創建 crontab 文件並保存到 /etc/cron.d 中 ( 避免更新 系統軟件包 cronie 時出現問題 ) 。
/etc/cron.d/crontab 文件在日期說明後另加一個字段 , 表示將運行作業的用戶 對於需要每天、每週或每月運行一次的腳本 ,
可以直接將其設 置爲可執行文件 , 並保存在 /etc/cron.{daily,weekly,monthly} 中相應目錄下。這些任務由 /etc/anacrontab 配置的系統 anacron 服務運行anacron 是 cron 的集成組件 , 用於更好地管理作業 , 並確保在作業。

  • 注意: /etc/cron.d 是腳本文件,需要保證cron.d有執行權限,纔可以使目錄裏面的任務文件生效
vim /etc/cron.d/filename //創建一個文件並在裏面填寫,此文件可以填寫多個用戶

填寫方式是:
"分鐘 小時 天 月 周  用戶  動作"
分 時 天 月 周 + 用戶 + 命令 
 * * *  *  *  root  touch /mnt/file  
 //表示每分鐘在/mnt目錄下建立一個文件file,而且也是crontab不會看到的,也不會出現在/var/spool/cron/root

/etc/cron* 每個目錄都有固定的效果,比如目錄下有監控文件logrotate,如果有在關機狀態時間內應該執行的定期動作,那麼在開機時,會監控到之後,自動執行這些命令。

2.時間表示方法

man 5 crontab :

表示方式 : 分 時 天 月 周 命令(最精確只能精確到分鐘,即最短也是每分鐘執行)(必須都要有,不能省略)
eg:
* * /2 * #每隔兩天
* 08-17/2 * * * #八點到下午兩點每隔兩個小時
* * 01,15 * 6 #每月一號,15號及週六

2.crontab命令的執行權力設定

/etc/cron.deny  //用戶黑名單,此名單中的用戶不能執行crontab命令' 

/etc/cron.allow   #白名單,名單默認不存在,但是名單一旦存在,黑名單失效
#建立後所有用戶均沒有at命令執行權限,只有在名單中出現的用戶可以使用(直接在文件中寫用戶名)
類似於at.allow  at.deny

即改即生效

三:系統中的臨時文件

系統中服務在正常運行時會產生臨時文件
/usr/lib/tmpfiles.d/*.conf #系統中臨時文件的配置

  • 在系統中 /usr/lib/tmpfiles.d/ 目錄下存放
  • 系統的臨時文件配置是 /usr/lib/tmpfiles.d/*.conf,自己創建的臨時文件配置文件必須以.conf結尾

臨時文件配置的編寫方式是:
文件類型 文件名稱 文件權限 文件所有人 文件所有組 文件存在時間(此時時間沒到就刪不掉,clean不掉)

eg:
d /mnt/westos 777 root root 10s
##表示在/mnt目錄下創建臨時目錄westos,並且十秒內不能被刪除

systemd-tmpfiles --create  /usr/lib/tmpfiles.d/*  //##執行臨時文件配置
systemd-tmpfiles --clean  /usr/lib/tmpfiles.d/*   ##清理臨時文件
##注意,可能在運行時會和之前設定的crontab衝突,所以如果在試驗中出現問題,比如無法創建,那麼可能執行了定時任務刪除
  • eg:建立目錄/mnt/demo,此目錄中的文件必須存在2分鐘以上纔會被清理,系統每分鐘清理/mnt/demo一次
    編寫腳本

    運行之後:

    整點兩分鐘之後:

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