1. 程式人生 > >LINUX系統延時及定時機制

LINUX系統延時及定時機制

系統延時任務------at命令

at命令可以指定某一任務在將來的特定時間執行。該作業可能是一次備份,對您系統的檢查或者特定時間傳送的通知。那些需要花費很長時間才可以完成的作業正蘇適合at命令。僅需要使用at命令即任務設定為在一分鐘或者兩分鐘之後執行。然後您便可以安全登出,因為該任務會在與shell會話斷開連線的情況下執行。
 
at命令必須指定命令應執行的時間。該指定可以是具體的時間或者日期(例如星期一,10:00pm或者7月15日)。也可以是當前時間的相對時間(現在時間加上5分鐘,現在時間加上3天或者4:00pm加上一週),通過新增其他選項,可以在任務完成時傳送郵件(-m),或者從檔案中讀取任務(-f 檔案),而無需通過標準輸入進行。
 
在輸入at命令之後,“ENTER”繼續鍵入作業中包含的其他命令,任務可由多個命令組成。在完成鍵入要執行的命令時,在單獨出現的一行“ctrl+d”完成任務。
 

1.at+具體時間

at 時間
at> 執行的命令
at>ctrl+d 執行命令
 

命令示例:在14:32刪除/mnt/目錄下的所有檔案

 

 2.at 當前時間+相對時間

at now+num min
>at 執行的命令
>ctrl+d      ##開始執行命令
 

 命令示例:l

[[email protected] Desktop]# at now +2 min
at> echo "Hello from the at command" >/dev/pts/0
at> <EOT>
job 4 at 2011-08-10 14:05


 

3.檢視延時任務

at -l         #檢視定時或延時任務

 

4.檢視詳任務

at -c jobnum  #檢視詳細定時任務

 

5.刪除任務

at -r         #刪除

注意:執行at -r 後,延時任務不再執行

 

6.at許可權設定

/etc/at.deny出現,只有在檔案中出現的使用者允許實現延時任務,預設是全白;

/etc/at.allow出現,只有在檔案中出現的使用者允許實現延時任務,預設全黑;

如果一個使用者既在/etc/at.allow中,也在/etc/at.deny黑名單,則黑名單失效
root使用者始終生效
在普通使用者下,不能對/下的檔案進行操作,沒有許可權
 

實驗1:在/etc/at.deny檔案中新增黑名單student,此時student使用者許可權下不能執行at命令,但是步在黑名單中的lee使用者可以使用



 
 

 

實驗2:在/etc/at.allow中新增使用者白名單student,student使用者許可權下可以執行at命令

 

 

管理定期任務-------crontab命令

cron 裝置管理必須按計劃定期重複執行的程式。後臺程 crond  每分鐘喚醒一次 , 以執行計劃的任何任務使用者使用 crontab  命令計劃個人任務。系統管理員可以在系統範圍配置檔案中設定任務,單個使用者使用稱為 crontab ( cron 表 ) 的文字檔案登記任務

 

1.crontab命令

crontab -l     列出檔案
crontab -r     刪除檔案
crontab -e     編輯檔案(crontab -e 使用預設編輯器是 vi)
man 5 crontab  檢視crontab命令的幫助

2.corn 時間表示方式

1* 2* 3* 4* 5*        command

– 1*---------- 分鐘   0-59
– 2*---------- 小時   0-23
– 3*---------- 天    1-31
– 4*---------- 月    1-12
– 5*---------- 周    0-7

 

實驗1:crontab  -e  在root使用者下執行檔案中的命令,建立定時任務,刪除/mnt/*


 

 

實驗2:crontab  -u student  -e  編輯student使用者的定時任務,刪除/home/student/*

注意:crontab -u  這個命令只有root使用者才能執行,即幫助其他的使用者新建或者刪除crontab工作排程


 
 

crontab  -u student  -r  會把/var/spool/cron/student 這個檔案刪除

 

3.cron 許可權設定

在系統中預設所有使用者可以設定 cron

使用者黑名單
/etc/cron.deny
在黑名單中的使用者不能執行crontab 命令
但root使用者可以執行crontab -u   -e 命令編輯檔案並執行

實驗1:在/etc/cron.deny中新增student使用者


 

 

使用者白名單
/etc/cron.allow 預設全黑

在白名單中的使用者可以執行crontab命令,如果一個使用者既出現在白名單中,又出現在黑名單中,則黑名單中失效

實驗2:在/etc/cron.allow中新增student使用者


 執行crontab -e命令編輯定時任務,刪除/mnt/*

 


4.怎樣定製系統級的定時任務

屬於系統的任務通常儲存在 /etc/crontab 檔案中而不是使用  crontab -e 編輯儲存在個人檔案中。更好的做法是用文字編輯器建立 crontab 檔案並儲存到 /etc/cron.d 中 ( 避免更新系統軟體包 cronie 時出現問題 ) 。 /etc/cron.d/crontab  檔案在日期說明後另加一個欄位 , 表示將執行作業的使用者


對於需要每天、每週或每月執行一次的指令碼 , 可以直接將其設定為可執行檔案 , 並儲存在 /etc/cron.{daily,weekly,monthly} 中相應目錄下。這些任務由 /etc/anacrontab 配置的系統 anacron 服務執行  anacron 是 cron 的整合元件 , 用於更好地管理作業 , 並確保在作業

如果系統關閉,錯過crontab的執行,則在開啟系統時,anacron會檢測是否有crontab漏執行,如果有則立即執行。
anacron命令檢測是否有crontab漏執行,不是檔案

實驗1:建立系統定時任務

第一步:在/etc/cron.d/目錄下建立檔案westos,編輯westos檔案,設定定時任務。

第二步:關閉電腦,過了設定的時間重啟電腦



 
5.臨時檔案的清理

系統中服務在正常執行時會產生臨時檔案
在系統中 /usr/lib/tmpfiles.d/ 標實服務的臨時檔案存放位置

/usr/lib/tmpfiles.d目錄下以.conf結尾的檔案都是臨時檔案,編輯檔案建立臨時目錄
 

控制系統中的臨時檔案:

systemd-tmpfiles
--create /usr/lib/tmpfiles.d/test.conf
--clean /usr/lib/tmpfiles.d/test.conf

 

實驗1:清除臨時檔案

編輯test.conf檔案,建立/mnt/westos目錄

執行systemd-tmpfiles --create /usr/lib/tmpfils.d/*可以建立臨時目錄

在/mnt/westos/目錄下新建檔案file 和 file1

執行systemd-tmpfiles --clean  /usr/lib/tmpfils.d/*可以刪除建立的目錄中超過生效時間的檔案