https://www.jianshu.com/p/17f5aa01853flinux
在linux計劃任務中, cron 是週期性運行某任務,假如我只想在將來的某時間點只是要求任務運行一次,這就用到at命令了,由於at只適合用在將來的某時間點。vim
at服務:centos
at是由atd服務提供的,在centos6和centos7上啓動服務的命令不同。centos7
查看和執行atd服務隊列
centos6:
service atd start #啓動服務
service atd stop #關閉服務
service atd status #查看服務狀態 cmd
centos7:
systemctl status atd.service #查看服務狀態
systemctl start atd.service #啓動服務
systemctl stop atd.service #關閉服務io
語法:file
at [option] TIMEservice
option(經常使用的選項):
-V: 顯示版本信息:
-l: 列出指定隊列中等待運行的做業;至關於atq
-d: 刪除指定的做業;至關於atrm
-c: 查看具體做業任務
-f: /path/from/somefile :從指定的文件中讀取任務
-m: 當任務被完成後,將給用戶發送郵件,即便沒有標準輸出
注意:做業執行命令的結果中的標準輸出和錯誤以郵件通知給相關用戶終端
TIME:定義出何時進行 at 這項任務的緣由
at的時間格式:TIME
● HH:MM [YYYY-mm-dd]
● noon, midnight, teatime(4pm)
● tomorrow
● now+#{minutes,hours,days, OR weeks}
● HH:MM: 在今日的 HH:MM 進行,若該時刻已過,則明天此時執行任務,命令
● at 02:00
● HH:MM YYYY-MM-DD: 規定在某年某月的某一天的特殊時刻進行該項任務
● at 02:00 2016-09-20
● HH:MM[am|pm] [Month] [Date] 命令
● at 04pm March 17
● at 17:20 tomorow
● HH:MM[am|pm] + number [minutes|hours|days|weeks]: 在某個時間點再加幾個時間後才進行該項任務
● at now + 5 minutes
● at 02pm + 3 days
執行at命令的用戶的黑白名單:
/etc/at.{allow,deny}
● 白名單:/etc/at.allow 默認這個文件不存在,只有該文件中的用戶才能執行at命令。白名單優先級高,有了白名單,黑名單不生效了(同一個用戶又在白名單又在黑名單,只生效白名單,即容許此用戶)
● 黑名單:/etc/at.deny 默認存在,拒絕該文件中用戶執行at命令,而沒有在at.deny文件中的使用者則可執行。
● 若是兩個文件都不存在,只有 root 能夠執行at命令root 不在限制範圍內,它是超級用戶
案例:
一、at命令的使用
[root@centos6 ~]# at 21:20
at> rm -rf hello
at> <EOT>
job 1 at 2017-08-26 21:20
我定義了在21:20執行 rm -rf hello 這命令
想退出用ctrl +d 或者crtl + \鍵退出
注意:通常會在郵件有提示,直接輸入mail 命令就能夠看到了
最好重定向到 &>/dev/null 垃圾箱裏去,省得產生大量的信息
二、同時執行多個任務命令
用多行重定向的方法:
[root@centos6 ~]# at 15:00 <<eof
echo 123
echo 234
eof
命令是在15:00執行
多個執行的命令所有放在專門的文件裏而後去調用的方法:
[root@centos6 ~]# vim atcmd
cd
rm -rf 112
pwd
建立atcmd 任務文件,而後用at -f atcmd 13:00 命令去調用執行這個文件 -f是調用的意思。
三、計劃任務沒有標準輸入,我想讓命令執行完成後我能看到,就用加上-m 強制發郵件來提醒個人計劃任務執行完畢。
at -m 10:07 建立計劃任務,用mail查看發如今日記中有記錄計劃任務執行的命令,還能夠在建立計劃任務命令後面加日期好比在 10:07 2017-08-27
四、建立用戶的白名單:
我要把xingxing這用戶加入白名單
默認是沒有/etc/at.allow 這文件的因此須要創鍵
[root@centos6 ~]# vim /etc/at.allow
xingxing
vim /etc/at.allow 把所要加的用戶加入者文件裏白名單就建立完成了,固然刪除白名單也是鍵入這個文件直接刪除就能夠了。
[root@centos6 ~]# cat /etc/at.allow #查看白名單
注意的事項:一、at依賴與atd 服務, 須要啓動才能實現at 任務。二、默認黑名單的文件時有的,放在/etc/at.deny 這文件裏面,想要刪除黑 名單或者建立黑名單裏的用戶用vim /etc/at.deny 進去就能夠了。三、普通用戶也是能夠建立任務的,不過得看有沒有執行權限。四、要想在終端打印顯示出來須要加wall這個命令 這是廣播的意思。