1. 程式人生 > >系統定時任務及延時任務

系統定時任務及延時任務

一、延遲任務

這裡使用at命令:

at now+1min         ##從現在起過1分鐘
at 09:10            ##指定09:10執行任務

回車後輸入任務命令 ctrl+d 任務發起 然後

     at -l 加任務號   ###檢視任務
        -c 加任務號   ###檢視任務詳情
        -r           ###刪除任務

##/etc/at.deny黑名單 假如westos在u黑名單裡,則切換到westos後不能用at,而student可以

##/etc/at.allow白名單,一開始沒有,需要建立 如果當我使用tuoch /etc/at.allow,在/etc/at.allow裡的是白名單,出現後所有使用者都再黑名單裡,此時黑名單失效

試驗:使用watch監控root使用者的/mnt目錄裡的檔案,先建立10個westos檔案

任務被執行後任務就檢視不到了:

vim /etc/at.deny

在裡邊編輯:

westos使用者就不能正常使用at命令了,會有如下提醒:

既然有黑名單,也就有白名單,白名單不是一開始存在在/etc裡面的,所以要先建立:  

mkdir /etc/at.allow

注意:白名單建立後,黑名單相對於白名單就失效了。

二、定時任務

檢視crond服務是否開啟;

systemctl status crond.service

在student的/mnt目錄下里建立westos{1..10}

crontab -u student -e   ##以student的身份建立一個定時任務

開啟以後:

*         *            *                *                     *
分        時         (幾)日         (幾)月                周(幾)
                                    1,10(1和10)
                                    1-30(1到30)

來編輯要執行的具體日期,並在後面寫上具體的任務,比如:

* * * * *    rm -rf /mnt/*      ##每隔三分鐘刪除/mnt下的全部

執行的任務存放在/var/spool/cron/student(student是建立任務的使用者)

使用

cat /var/spool/cron/student

可以看到:  

crontab -u student -l  ##檢視任務
crontab -u student -r  ##刪除任務
##/etc/cron.deny黑名單
##/etc/cron.allow白名單,同樣需要建立,建立後黑名單失效,不在白名單裡的使用者全部使用不了crontab的命令
但是在root下使用crontab -u student -e 仍然可以編輯任務命令
刪除/etc/cron.allow就可以正常使用黑名單了

三、系統級定時的設定

系統定時設定在/etc/cron.d/裡面, 在這裡建立一個westos  比如:

vim /etc/cron.d/westos

開啟後編輯:

* * * * *   root rm -rf  /mnt/*

不想使用westos裡的定時功能刪除westos就可以 cat westos可以檢視這個任務詳情; anacron可以檢測某命令在系統關機後沒來得及執行,使用這個命令可以在開機後執行一次。

四、臨時檔案的定時清理

臨時檔案不能隨便清理,要保證被清理的是不需要的 所以設定了生存週期: 在/usr/lib/tmpfiles.d/ 建立westos:vim westos.conf 在裡面編輯要執行的命令,比如:

d /mnt/westos 777 root root 8s      ##每隔8s刪除一次/mnt/下的westos檔案

使用watch -n 1 “ls -lR /mnt”

systemd-tmpfiles --create /usr/lib/tmpfiles.d/*   ##建立一個westos檔案
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*    ##清空westos裡的內容

從監控上看到:

先提前建立檔案:

touch /mnt/westos/file

使用下面的命令執行8s清除westos下的內容:

systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*

可以從監控看到檔案沒有了。 使用cat /usr/lib/tmpfiles.d/westos.conf可以看到命令詳細情況。