執行at時,必須要有atd著個服務,剛好CentOS預設是啟動的^^
重新啟動atd這個服務
systemctl restart atd
開機就自動啟動atd服務
systemctl enable atd
atd目前狀態檢視
[root@localhost test]# systemctl status atd
atd.service - Job spooling tools
Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled)
Active: active (running) since Thu 2015-07-30 19:21:21 CST; 23s ago
Main PID: 26503 (atd)
CGroup: /system.slice/atd.service
└─26503 /usr/sbin/atd -f
Jul 30 19:21:21 study.centos.vbird systemd[1]: Starting Job spooling tools...
Jul 30 19:21:21 study.centos.vbird systemd[1]: Started Job spooling tools.
使用atd指令產生要運作的文字檔文件寫入/var/spool/at/
還記得朕不給的你不能要的概念嗎?
在linux的領域裡,權限的控管是相當嚴謹的,不被允許的不準用。
利用/etc/at.allow跟/etc/at.deny進行使用限制。
- 尋找/etc/at.allow這個檔案,寫在這個檔案中的使用者才能使用 at ,沒有在這個檔案中的
- 使用者則不能使用at(即使沒有寫在at.deny當中);
如果/etc/at.allow不存在,就尋找/etc/at.deny這個檔案,若寫在這個at.deny的使用者則不能使用at,而沒有在這個at.deny檔案中的使用者,就可以使用at咯;- 如果兩個檔案都不存在,那麼只有root可以使用at這個指令。
來試一試吧
at [-mldv] TIME
at -c 工作號碼
選項與參數:
-m :當 at 的工作完成後,即使沒有輸出訊息,亦以 email 通知使用者該工作已完成。
-l :at -l 相當於 atq,列出目前系統上面的所有該使用者的 at 排程;
-d :at -d 相當於 atrm ,可以取消一個在 at 排程中的工作;
-v :可以使用較明顯的時間格式列出 at 排程中的工作列表;
-c :可以列出後面接的該項工作的實際指令內容。
TIME:時間格式,這裡可以定義出『什麼時候要進行 at 這項工作』的時間,格式有:
HH:MM ex> 04:00
在今日的 HH:MM 時刻進行,若該時刻已超過,則明天的 HH:MM 進行此工作。
HH:MM YYYY-MM-DD ex> 04:00 2015-07-30
強制規定在某年某月的某一天的特殊時刻進行該工作!
HH:MM[am|pm] [Month] [Date] ex> 04pm July 30
也是一樣,強制在某年某月某日的某時刻進行!
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex> now + 5 minutes ex> 04pm + 3 days
就是說,在某個時間點『再加幾個時間後』才進行。
範例一:再過五分鐘後,將 /root/.bashrc 寄給 root 自己
[root@study ~]# at now + 5 minutes <==記得單位要加 s 喔!
at> /bin/mail -s "testing at job" root < /root/.bashrc
at> <==這裡輸入 [ctrl] + d 就會出現 的字樣!代表結束!
job 2 at Thu Jul 30 19:35:00 2015
範例二:將上述的第 2 項工作內容列出來查閱
[root@study ~]# at -c 2
#!/bin/sh <==就是透過 bash shell 的啦!
umask 22
....(中間省略許多的環境變數項目)....
cd /etc/cron.d || {
echo 'Execution directory inaccessible' >&2
exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER410efc26'
/bin/mail -s "testing at job" root < /root/.bashrc # 這一行最重要!
marcinDELIMITER410efc26
範例三:由於機房預計於 2015/08/05 停電,我想要在 2015/08/04 23:00 關機?
[root@study ~]# at 23:00 2015-08-04
at> /bin/sync
at> /bin/sync
at> /sbin/shutdown -h now
at>
job 3 at Tue Aug 4 23:00:00 2015
參考
http://linux.vbird.org/linux_basic/0430cron.php#whatiscron_type