延時任務at
1.at命令
使用方法:
at now+5min|時間
>命令
>Ctrl + d
示例:
at 14:20
at> date
at> <EOT>
job 2 at Sun Oct 29 14:20:00 2017
at now+5min
at> date
at> <EOT>
job 3 at Sun Oct 29 14:27:00 2017
at -l | atq ##查看未執行的延時任務
atrm ip | at -d ##終止延時任務
at -M ##延時任務有輸出不產生郵件,退出郵件使用q
at -c ip ##查看延遲任務的內容
at -m ##延時任務無輸出產生郵件
mail ##查看郵件的內容,郵件在/var/spool/mail/kiosk中
at -f filename ##將文件內容中的命令作爲延時任務的動作
2.黑名單
/etc/at.deny ##at命令黑名單配置文件
vim /etc/at.deny
kiosk
at 18:00 ##kisok被加入黑名單,使用at的權限被禁止
You do not have permission to use at.
3.白名單
touch /etc/at.allow ##建立at命令白名單配置文件,白名單出現,黑名單失效.所有用戶均不能使用at
vim /etc/at.allow ##編輯白名單,添加westos用戶,只有westos用戶和root用戶能執行at命令
定時任務cron
cron由crond.service提供
寫入程序的時間和事件是永久保存的
1.設定方式
(1)命令方式
crontab -u -e ##參數可不寫
分鐘 小時 天 月 周 事件
58 06 * * * rm -rf /mnt/* ##每天的06:58執行rm -rf /mnt/*
58 06 1,15 * * rm -rf /mnt/* ##每月1日和15日的06:58執行rm -rf /mnt/*
58 06 1-15 * * rm -rf /mnt/* ##每月1日至15日的06:58執行rm -rf /mnt/*
58 06 1,15 3 * rm -rf /mnt/* ##3月1日、15日的06:58執行rm -rf /mnt/*
58 06 1,15 3 3 rm -rf /mnt/* ##3月1日、15日的06:58和3月的每個週三的06:58執行rm -rf /mnt/*
\*/2 06-17 * * 1-5 rm -rf /mnt/* ##週一到週五的每天早上6點至下午的5點之間每隔2分鐘執行rm -fr /mnt/*事件
注意:多個事件的執行並不是按照事件排列的先後順序執行,事件的執行是根據命令的執行效率決定的,比如rm -rf優先於touch。
(2)文件方式定義crontab
vim /var/spool/cron/用戶名 ##以某用戶身份執行cron,文件名稱必須和用戶名稱一致
分 時 日 月 周 動作
vim /etc/cron.d/文件 ##設定多個用戶身份執行cron
分 時 日 月 周 用戶 動作
注意:
當用戶root使用文件方式定義crontab時,執行動作的用戶是以root用戶的身份執行的。即使該用戶被加入黑名單,依舊可以執行動作。
2.編輯事件
crontab -e #編輯事件
-l ##列出事件
-r ##刪除事件
-r -i ##刪除任務時會詢問是否刪除,輸入y則刪除
-r -u student ##以student用戶執行事件
/var/spool/cron/* ##cronrenwu存儲位置
3.cron的黑白名單
默認情況下,系統只存在黑名單,當白名單被建立,則黑名單失效
(1)黑名單
/etc/cron.deny
vim /etc/cron.deny
westos
crontab -e
You (westos) are not allowed to use this program(crontab)
See crontab(1) for more information
(2)白名單
touch /etc/cron.allow ##建立at命令白名單配置文件,白名單出現,黑名單失效.所有用戶均不能使用cron。
vim /etc/cron.allow ##白名單中添加westos用戶,只有root和westos用戶可以使用cron。
westos
(3)文件方式定義crontab
vim /var/spool/cron/用戶名 ##以某用戶身份執行cron,文件名稱必須和用戶名稱一致
分 時 日 月 周 動作
vim /etc/cron.d/文件 ##設定多個用戶身份執行cron
分 時 日 月 周 用戶 動作
臨時文件管理
vim /usr/lib/tmpfiles.d/westos.conf ##編寫管理臨時文件的配置文件,westos.conf爲用戶自定義的
d /mnt/westos 777 root root 10s
| | | | | |
目錄 存放臨時文件的目錄 目錄的權限 目錄所屬用戶 所屬組 清理目錄內文件的間隔時間
systemd-tmpfiles –create /usr/lib/tmpfiles.d/* ##執行管理臨時文件配置文件
systemd-tmpfiles –clean /usr/lib/tmpfiles.d/* ##清理超過配置文件設定時間的文件
重新打開一個窗口,進行監控: watch -n 1 ls -lR /mnt/
在原窗口touch /mnt/file1,10s之後執行systemd-tmpfiles –clean /usr/lib/tmpfiles.d/*,會發現/mnt/file1不見了。
練習:定時人物cron與臨時文件管理結合使用
vim /usr/lib/tmpfiles.d/westos.conf ##編寫配置文件的內容
d /westos/ 777 root root 30s
systemd-tmpfiles --create /usr/lib/tmpfiles.d/* ##執行配置文件的內容,當目錄/westos/不存在時會建立/westos/
touch /westos/file{1..5} ##向存放臨時文件的目錄內新建文件
vim /etc/cron.d/westos ##文件方式編寫定向任務
* * * * * root systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* ##每分鐘清理一次臨時文件
ls -l /westos/ ##查看臨時文件是否被清理