linux 下 at/crontab 指令的使用

基於學校每到暑/寒假就會有高壓電檢修,都要停電,而我又常常忘了 at 指令的命令格式,後來我都是用 crontab 去處理這種只跑一次的指令… 😄 所以,我打算直接記下來。

參考文件出自鳥哥的網站
Linux 例行性命令的建立
以及 at 的 manual

at 指令是用來排定在某個時間執行某個特別的命令,不像 crontab 排定的命令會週期性的執行,這個指令排定的命令在執行一次之後,就不會再執行了。

要執行 at 指令,只要 at 時間,按下 enter ,再輸入要執行的命令,結束時按下 ctrl+d 就可以排定一個 at 的排程

at 的時間格式可以用 1 個數字(指定小時)、2 個數字(指定小時)、 4 個數字(指定時和分),時和分中間也可以用 : 分隔,如 03:45,另外可以在數字之後加上 am, pm 指定上下午,否則 at 會把時間視為 24小時制, 如 05:25pm。在 POSIX 中,有另外指幾個特別的時間:

[時間-time]
時間的數字範圍為 [00,59]。
midnight = 12:00 am (00:00)
noon = 12:00 pm
now = 指定執行 at 的時間

[日期-date]
年份所使用的數字是西元,一定是 4 個數字。
指定月份和星期時,所使用的 word 決定於 LC_TIME 環境變數中所列的"月份"和"星期"名稱或是其縮寫。
日期要符合所指定的月份。
today = 今天
tomorrow = 明天

[增加量-increment]
可使用 minutes, hours, days, weeks, months, 或 years 等字,在使用時,以 + 號開頭。

利用 at 指令所執行的命令,所使用的環境變數、工作目錄、檔案建立的 mask 等等變數,在真正執行排定的命令時,這些變數要和執行 at 指令時相同。

at 執行權限控制檔案:
/usr/lib/cron/at.allow
/usr/lib/cron/at.deny

範例:
at 6pm
at moon
at today
at 02:00am
at 18:00
at 18:00
at 6pm today + 1 week 等同於 at 6pm today next week
at 6pm Jan 2 , 2005
at 6pm mon
at now

at 所要執行命令的時間過了的話,會等到下一次這個時間點出現的時候再執行,例如指定在今晚 6:00 執行,而現在是 7:00 的話,指令會在明天晚上 6:00 才執行。

要刪除某個己排定的工作,使用 at -r at-job-id

在 gentoo 下,預設是沒有 at 這個程式的,要先執行以下指令安裝才行:

emerge -av at
/etc/init.d/atd start

而指令的 timespec 放在 /usr/share/doc/at-XX.XX/timespec.gz 說明檔中。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

你正使用 WordPress.com 帳號留言。 登出 / 變更 )

Twitter picture

你正使用 Twitter 帳號留言。 登出 / 變更 )

Facebook照片

你正使用 Facebook 帳號留言。 登出 / 變更 )

Google+ photo

你正使用 Google+ 帳號留言。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: