首頁  >  文章  >  運維  >  linux下的計畫任務-只執行一次的定時任務

linux下的計畫任務-只執行一次的定時任務

齐天大圣
齐天大圣原創
2020-11-07 17:11:034881瀏覽

定時任務是作業系統提供給我們的一個非常好的功能,我們經常用定時任務來處理一些事情,例如每天定時備份網站資料、每個月執行下資料統計程式、監控伺服器的運作(發生錯誤時給管理員發送訊息通知)等等,這些都需要定時任務來完成。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn