定時任務是作業系統提供給我們的一個非常好的功能,我們經常用定時任務來處理一些事情,例如每天定時備份網站資料、每個月執行下資料統計程式、監控伺服器的運作(發生錯誤時給管理員發送訊息通知)等等,這些都需要定時任務來完成。
linux下的定時任務分為兩大類:只執行一次的定時任務,週期性執行的定時任務。今天,我們一起來看看只執行一次的計時任務,關於週期性執行的計時任務,將會在接下來的一篇文章中表達出來。
atd服務
只執行一次的排程任務,我們是透過at指令來完成的,想要執行at指令則需要先開啟atd服務。查看atd服務的運作狀況及開啟atd服務的指令如下:
# 查看atd服务状况 # systemctl status atd # 开启atd服务 # systemctl start atd
at權限管理
當使用at來產生新的任務時,該任務就會以文字檔案形式被放到/var/spool/at目錄下。
# ll /var/spool/at total 8 -rwx------ 1 root root 2890 Nov 7 16:30 a0000201981b23 <===== at产生的文件 drwx------ 2 daemon daemon 4096 Nov 7 16:27 spool
對於at的權限管理,系統有兩個專門的檔案來指定。這兩份文件,其實就跟我們理解的黑白名單一樣。這兩份檔案分別是/etc/at.deny(黑名單)、/etc/at.allow(白名單)。系統預設的at.deny的內容為空,而對於/etc/at.allow系統預設是不存在的。如果這兩個檔案都不存在,則只有root使用者可以使用at指令。
at指令詳解
我們來看看如何使用at這個指令。
設定排程任務
使用at指令設定排程任務at [-m] 時間,常用的時間格式-HH:MM YYYY -MM-DD,此外還可以使用英文的now 1 minutes類似形式設定。
# at 17:00 2020-11-11 at> date >> /root/at.txt at> <EOT> <=== 这里输入ctrl+d来结束 job 3 at Wed Nov 11 17:00:00 2020 # at now +5 minutes at> date >> /root/at.txt at> <EOT> job 4 at Sat Nov 7 17:01:00 2020
查看排程任務
使用-l選項可查看排程任務,如果想看特定的指令可以使用-c選項。除此之外,還可以使用atq指令來查看。
# at -l 6 Sat Nov 7 17:13:00 2020 a root 3 Wed Nov 11 17:00:00 2020 a root # atq 6 Sat Nov 7 17:13:00 2020 a root 3 Wed Nov 11 17:00:00 2020 a root
移除排程任務
還未執行的排程任務,可以透過at -d或atrm來刪除。
# at -d 3 # atrm 6
使用at來產生排程任務還有一個好處就是,可以完成離線管理工作。
以上是linux下的計畫任務-只執行一次的定時任務的詳細內容。更多資訊請關注PHP中文網其他相關文章!