1. 程式人生 > >linux基礎篇(十):基於Redhat7系統中的定時任務

linux基礎篇(十):基於Redhat7系統中的定時任務

定時任務CRONTAB概念/介紹

crontab命令用於設定週期性被執行的指令。該命令從標準輸入裝置讀取指令,並將其存放於“crontab”檔案中,以供之後讀取和執行。
cron 系統排程程序。 可以使用它在每天的非高峰負荷時間段執行作業,或在一週或一月中的不同時段執行。cron是系統主要的排程程序,可以在無需人工干預的情況下執行作業。crontab命令允許使用者提交、編輯或刪除相應的作業。每一個使用者都可以有一個crontab檔案來儲存排程資訊。系統管理員可以通過cron.deny 和 cron.allow 這兩個檔案來禁止或允許使用者擁有自己的crontab檔案。

定時任務格式,語法及應用

格式

*			*			*			*			*				####
分鐘			小時			天			月			周			要執行的命令
crontab 檔案中每個條目中各個域的意義和格式:
第一列 分鐘: 1——59
第二列 小時: 1——23(0表示子夜)
第三列 日 : 1——31
第四列 月 : 1——12
第五列 星期: 星期0——6(0表示星期天,1表示星期一、以此類推)
第六列 要執行的命令

我們暫且用C1、C2、C3、C4、C5、C6代表這六列,前面五列通過組合方式來決定執行指令碼的頻率,最小頻率為每分鐘執行一次,其中Cn可以用 * ; */n ; T1-T2; a,b,c; 四種形式來表示:

當 C1 為 * 時表示每分鐘都要執行指令碼,C2 為 * 時表示每小時都要執行程式,依次類推…

當 C1 為 T1-T2 時表示從第 T1 分鐘到第 T2 分鐘這段時間內要執行,C2 為 T1-T2 時表示從第 T1 到第 T2 小時都要執行,依次類推…

當 C1 為 */n 時表示每 n 分鐘的時間間隔執行一次,C2 為 */n 表示每隔n小時的間隔執行一次,依次類推…

當 C1 為 a, b, c,… 時表示第 a, b, c,… 分鐘要執行,C2 為 a, b, c,… 時表示第 a, b, c…個小時要執行,依次類推…

語法及應用

crontab    -u root -e					建立定時任務,-u表示可以執行指令碼的使用者
crontab    -u root -l 					檢視定時任務
crontab    -u root -r 					刪除定時任務

例項

 55 17 * * * touch /mnt/file{1..5}
表示在17:55分在/mnt/目錄建立file1-file5五個檔案

在這裡插入圖片描述
在這裡插入圖片描述
刪除定時任務
在這裡插入圖片描述

 */5 * * * * date
表示每5分鐘執行一次date命令

 0 20 * * 1-5 mail -s "**********" [email protected] < /tmp/maildata
週一到週五每天下午 20:00 寄一封信給 [email protected]

定時任務黑白名單

定時任務白名單

/etc/cron.allow #####建立定時任務白名單後,預設除了root使用者外的其他使用者全部被列入黑名單中,意為只有root使用者可以執行定時任務,其他使用者要想執行定時任務,必須將使用者新增到定時任務白名單中
我們可以先建立一個延時任務白名單(直接建立/etc/cron.allow檔案就行),然後切換到另一個普通使用者,用此使用者執行crontab定時任務
在這裡插入圖片描述
從圖中我們可以看出在建立定時任務白名單之後,切換到student使用者後執行crontab任務失敗,現在我們可以將student使用者新增到定時任務白名單中,再用student使用者執行定時任務,看看會有什麼變化
在這裡插入圖片描述

在這裡插入圖片描述
可以看到在將student使用者加入到定時任務白名單之後,student使用者可以執行crontab定時任務

定時任務黑名單

/etc/cron.deny
建立延時任務黑名單後,如果不想讓某一個使用者執行crontabb延時任務,可將此使用者新增到延時任務黑名單中
在這裡插入圖片描述

全域性性計劃任務

當我們要增加全域性性的計劃任務時,一種方式是直接修改/etc/crontab。
但是,一般不建議這樣做,/etc/cron.d目錄就是為了解決這種問題而建立的。
例如,增加一項定時的備份任務,我們可以這樣處理:在/etc/cron.d目錄下新建檔案demo,內容如下:

          • root touch /mnt/file{1…5} 整分過一秒以root身份在/mnt 下建立五個檔案
            在這裡插入圖片描述
            在這裡插入圖片描述
            在這裡插入圖片描述

臨時檔案

/usr/lib/tmpfiles.d/ 和 /etc/tmpfiles.d/ 中的檔案描述了 systemd-tmpfiles 如何建立、清理、刪除臨時檔案和目錄,這些檔案和目錄通常存放在 /run 和 /tmp 中。配置檔名稱為 /etc/tmpfiles.d/.conf。此處的配置能覆蓋 /usr/lib/tmpfiles.d/ 目錄中的同名配置。

cd /usr/lib/tmpfiles.d
vim westos.conf
寫入:d /mnt/gd 1777 root root 10s
在這裡插入圖片描述
在這裡插入圖片描述

touch /mnt/gd/file
systemd-tmpfiles --clean /usr/lib/tmpfiles/* ###清除所建立檔案,但必須在所定時間之後才能刪除成功