在Linux中如何使用at命令安排任務

2021-10-05 08:51:14 字數 3250 閱讀 4053

at 命令可以很容易地安排 linux 任務在你選擇的任何時間或日期執行,讓我們來看看它能為你做什麼。

當你希望命令或指令碼在某個特定時間執行時,你不需要將手指放在鍵盤上盤旋等待按下回車鍵,或者是在特定時間坐在辦公桌前。相反,你可以通過 at 命令來設定任務。在本文中,我們將研究如何使用 at 來安排任務,如何精確地選擇任務希望執行的時間,以及如何使用 at來檢視安排執行的任務。

at vs cron

對於那些使用 cron 在 linux 系統上安排任務的人來說,at 命令類似於 cron,因為你可以在選定的時間排程任務,但是 cron 用於定期執行的作業 —— 甚至是每年僅一次。大多數 cron 作業的頻率都設定為每天、每週或每月執行一次,不過你可以控制執行的頻率和時間。

另一方面,at 命令用於僅執行一次的任務。想在午夜重啟系統?沒問題,只要你有適當的許可權,at 可以為你完成此操作。如果你希望系統在每個星期六凌晨 2 點重啟,那麼改用 cron。

使用 at

at 命令很容易使用,只需記住幾件事。乙個簡單使用 at 的例子類似於這樣:

$ at 5:00pm

at> date >> thisfile

at>

在輸入 at 和應該執行命令的時間,at 會提示你在設定時間會執行該命令(此例中是 date 命令)。輸入 ^d(ctrl + d)來完成請求。

假設我們在下午 5 點之前設定這個 at 命令,那麼這個日期和時間將在當天下午 5 點新增到名為 thisfile 檔案的末尾。否則,該命令將在第二天下午 5 點執行。

與 at 命令進行互動時,可以輸入多個命令。如果你要同時執行多個命令,只需輸入多個命令列即可:

$ at 6:22

warning: commands will be executed using /bin/sh

at> echo first >> thisfile

at> echo second >> thisfile

at>

在上面的命令中,我們使用了乙個普通的使用者賬戶,將一些簡單的文字新增到該使用者主目錄的檔案中。如果在上午 6:22 之後執行這些命令,那麼命令會在第二天執行,因為 6:22 表示上午 6:22。如果你想在下午 6:22 執行,使用 6:22 pm 或者 18:22。6:22 pm 這樣也是可以工作的。

你也可以通過使用 at 來安排命令在指定的日期或時間執行,例如 10:00am april 15 2021或 noon + 5 days(從今天起 5 天內的中午執行),以下是一些例子:

at 6pm tomorrow

at noon april 15 2021

at noon + 5 days

at 9:15 + 1000 days

在指定要執行的命令並按下 ^d 後,你會注意到 at 命令為每個請求分配了乙個作業編號,這個數字將顯示在 at 命令的作業佇列中。

$ at noon + 1000 days

warning: commands will be executed using /bin/sh

at> date >> thisfile

at>

job 36 at tue dec 27 12:00:00 2022 <== job # is 36

檢查佇列

你可以使用 atq(at queue)命令來檢視 at 作業佇列:

$ atq

32 thu apr 2 03:06:00 2020 a shs

35 mon apr 6 12:00:00 2020 a shs

36 tue dec 27 12:00:00 2022 a shs

34 thu apr 2 18:00:00 2020 a shs

如果你需要取消佇列中的乙個作業,使用 atrm(at remove)命令和作業編號:

$ atrm 32

$ atq

35 mon apr 6 12:00:00 2020 a shs

36 tue dec 27 12:00:00 2022 a shs

34 thu apr 2 18:00:00 2020 a shs

你可以使用 at -c 命令來檢視安排任務的詳細資訊,其它詳細資訊(活動的搜尋路徑等)也可以看到,但是輸出的最後一行將顯示計畫執行的命令。

$ at -c 36 | tail -6

cd /home/shs ||

date >> thisfile

注意,該命令顯示首先會測試是否可以通過 cd 命令進入使用者目錄。如果不可以,作業將退出並顯示錯誤。如果可以,則執行在 at 中指定的命令。它將命令視為 「進入 /home/shs 或退出並顯示錯誤」。

以 root 身份執行作業

要以 root 身份執行 at 作業,只需將 sudo 與你的 at 命令一起使用,如下所示:

$ sudo at 8pm

[sudo] password for shs:

warning: commands will be executed using /bin/sh

at> reboot now

at>

job 37 at wed apr 1 16:00:00 2020

注意,root 的任務以 root 作為執行者顯示在佇列中。

35 mon apr 6 12:00:00 2020 a shs

36 tue dec 27 12:00:00 2022 a shs

37 wed apr 1 20:00:00 2020 a root <==

執行指令碼

你還可以使用 at 命令來執行指令碼,這裡有乙個例子:

$ at 4:30pm

warning: commands will be executed using /bin/sh

at> bin/tryme

at>

禁止使用 at 命令

/etc/at.deny 檔案提供了一種禁止使用者使用 at 命令的方法。預設情況下,它可能會包含乙個不允許的賬戶列表,例如 ftp 和 nobody。可以使用 /etc/at.allow 檔案執行相反的操作,但是通常只配置 at.deny 檔案。

總結

當你要安排一項一次性任務時,無論你是希望在今天下午或幾年後執行,at 命令都是通用且易於使用的。

乾貨:《linux就該這麼學》

在Linux中如何使用at命令安排任務

at 命令可以很容易地安排 linux 任務在你選擇的任何時間或日期執行,讓我們來看看它能為你做什麼。當你希望命令或指令碼在某個特定時間執行時,你不需要將手指放在鍵盤上盤旋等待按下回車鍵,或者是在特定時間坐在辦公桌前。相反,你可以通過 at 命令來設定任務。在本文中,我們將研究如何使用 at 來安排...

linux中more命令如何使用

1.命令格式 more dlfpcsu num pattern linenum file 2.命令功能 more命令和cat的功能一樣都是檢視檔案裡的內容,但有所不同的是more可以按頁來檢視檔案的內容,還支援直接跳轉行等功能。3.命令引數 n 從笫n行開始顯示 n 定義螢幕大小為n行 patter...

Linux系統中Type命令如何使用

type工具用於顯示命令的型別資訊。它將展示在命令列上輸入給定的命令將如何解釋。如何使用type命令 type命令是bash內建,type語法 type afptp name 例如,檢視type的型別 root localhost type type type is a shell builtin也...