(一)延時任務
一.at命令的基本用法
1.基本格式
[root@really mnt]# at now+1min ##at +指定時間(時時:分分)/ at + now+數字min
at> touch /mnt/file1 ##輸入希望執行的命令
at> <EOT> ##ctrl+d 執行
job 1 at Wed Nov 1 22:17:00 2017
2.at -l #列出延遲任務id
3.at -r 任務id #刪除此id的任務
4.at -c 任務id #查看此id的延遲任務的執行動作
5.at -f 文件 #用文件內記錄的命令作爲延遲任務的執行命令
6.at -m #讓無是出的命令產生郵件
7.at -M #讓有輸出的命令不產生郵件
二.at命令的使用控制
默認系統中全部用戶都有執行at命令的權力那麼如何設定at命令的黑白名單:
1.用戶黑名單
默認情況下,系統中是存在用戶黑名單的
(1)這個名單的路徑
/etc/at.deny ##用戶黑名單,此名單默認爲空,並且在白名單不存在時生效
vim /etc/at.deny
student ##student使用at命令的權力被禁止
[student@client ~]$ at now+1min
You do not have permission to use at. ##student不能執行at命令
2.at命令的白名單
默認系統中是不存在at的白名單的,但是當白名單出現,系統用除名單中出現的用戶以及root外其他用戶均不能執行at命令
(1)[root@really mnt]# touch /etc/at.allow ##建立用戶白名單,當白名單出現,黑名單失效 [root@really mnt]# su - student Last login: Wed Nov 1 22:54:25 CST 2017 on pts/2 [student@really ~]$ at 22:55 You do not have permission to use at. [student@really ~]$ exit logout [root@really mnt]# su - kiosk Last login: Wed Nov 1 23:00:50 CST 2017 on pts/2 [kiosk@really ~]$ at 22:55 You do not have permission to use at. (2) [root@really mnt]# vim /etc/at.allow #在白名單中添加用戶,那麼student用戶可以執行at [root@really mnt]# cat /etc/at.allow student [root@really mnt]# su - student Last login: Wed Nov 1 23:01:16 CST 2017 on pts/2 [student@really ~]$ at 23:02 at> <EOT> job 11 at Thu Nov 2 23:02:00 2017 [student@really ~]$ exit logout [root@really mnt]# su - kiosk Last login: Wed Nov 1 23:01:42 CST 2017 on pts/2 [kiosk@really ~]$ at 23:23 You do not have permission to use at. #student執行at成功,但測試kiosk依然不可以
(二)定時任務
一.cron基礎用法
1.這個程序是由crond.service 服務提供
2.寫入程序的時間和事件是永久保存的
3.cron設定方式
crontab -e -u 用戶名稱(可以不寫)
格式
分鐘 小時 天 月 周 事件
58 06 * * * rm -fr /mnt/* #每天6:58分刪除mnt中的所有內容
58 06 1,15 * * rm -fr /mnt/* #每月1號和每月15號的6:58分刪除mnt中的所有內容
58 06 1-15 * * rm -fr /mnt/* #每月1號到每月15號的6:58分刪除mnt中的所有內容
58 06 1,15 3 * rm -fr /mnt/* #3月1號和15號的6:58分刪除mnt中的所有內容
58 06 1,15 3 3 rm -fr /mnt/* #3月1號和15號以及3月的所有周三
58 06-17 * * * rm -fr /mnt/* #6-17點,每個小時的58分
*/30 06-17 * * 1-5 rm -fr /mnt/* #週一到週五的早上6點到下午5點每隔半小時執行
4.crontab -l ##列出當前用戶的cron任務
5.crontab -r ##刪除當前用戶的cron任務
6./var/spool/cron/* ##cron任務記錄文件存放位置
二.cron的黑白名單
默認情況下,系統中只存在黑名單,當白名單被建立,黑名單失效
1.黑名單
[root@really ~]# vim /etc/cron.deny ##在此名單中的用戶不能執行crontab
You have new mail in /var/spool/mail/root
[root@really ~]# cat /etc/cron.deny
student ##student用戶不能執行crontab
[root@really ~]# su - student
Last login: Wed Nov 1 23:29:18 CST 2017 on pts/2
[student@really ~]$ crontab -e
You (student) are not allowed to use this program (crontab) ##student執行crontab被禁止
See crontab(1) for more information
2.白名單
[root@really ~]# touch /etc/cron.allow #建立白名單,當此名單出現,除root用戶及名單中的用戶其他用戶不能執行crontab
[root@really ~]# su - student
Last login: Thu Nov 2 09:12:46 CST 2017 on pts/1
[student@really ~]$ crontab -e
You (student) are not allowed to use this program (crontab)
See crontab(1) for more information
[student@really ~]$ exit
logout
[root@really ~]# su - kiosk
Last login: Thu Nov 2 06:52:53 CST 2017 on :0
Last failed login: Thu Nov 2 09:02:45 CST 2017 from :0 on :0
There was 1 failed login attempt since the last successful login.
[kiosk@really ~]$ crontab -e
You (kiosk) are not allowed to use this program (crontab)
See crontab(1) for more information
[kiosk@really ~]$ exit
logout
[root@really ~]# vim /etc/cron.allow
You have new mail in /var/spool/mail/root
[root@really ~]# cat /etc/cron.allow
student #student可以執行crontab
[root@really ~]# su - student
Last login: Thu Nov 2 09:15:52 CST 2017 on pts/1
[student@really ~]$ crontab -e #測試 student可以執行
no crontab for student - using an empty one
crontab: installing new crontab
[student@really ~]$ exit
logout
[root@really ~]# su - kiosk
Last login: Thu Nov 2 09:16:07 CST 2017 on pts/1
[kiosk@really ~]$ crontab -e #測試 kiosk仍然不可以執行
You (kiosk) are not allowed to use this program (crontab)
See crontab(1) for more information
三.文件方式定義crontab
1.vim /var/spool/cron/用戶名稱 #以某個用戶身份執行cron,文件民稱必須和用戶名稱一致
格式:
分 時 天 月 周 動作
2.vim /etc/cron.d/文件
#設定多個用戶身份執行cron
格式:
<分> <時> <天> <月> <周> <用戶> <動作>
或直接多行錄入
四.系統中的cron任務
1./etc/cron.daily/ ##系統每天做執行的程序
2./etc/cron.hourly/ ##系統每小時執行的程序
3./etc/cron.monthly/ ##系統每月執行的程序
4./etc/cron.weekly/
##系統每星期執行的程序