一次性定時計劃任務的at命令的用法!
創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于網站設計、成都網站設計、青島網絡推廣、小程序定制開發、青島網絡營銷、青島企業策劃、青島品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯為所有大學生創業者提供青島建站搭建服務,24小時服務熱線:13518219792,官方網址:www.cdcxhl.com
1.命令格式:
at[參數][時間]
2.命令功能:
在一個指定的時間執行一個指定任務,只能執行一次,且需要開啟atd進程(
ps -ef | grep atd查看, 開啟用/etc/init.d/atd start or restart; 開機即啟動則需要運行 chkconfig --level 2345 atd on)。
3.命令參數:
-m 當指定的任務被完成之后,將給用戶發送郵件,即使沒有標準輸出
-I atq的別名
-d atrm的別名
-v 顯示任務將被執行的時間
-c 打印任務的內容到標準輸出
-V 顯示版本信息
-q列隊 使用指定的列隊
-f文件 從指定文件讀入任務而不是從標準輸入讀入
-t時間參數 以時間參數的形式提交要運行的任務 《Linux就該這么學》
使用實例:
實例1:三天后的下午 5 點鍾執行 /bin/ls
命令:
at 5pm+3 days
輸出:
[root@localhost ~]# at 5pm+3 days
at /bin/ls
at EOT
job 7 at 2013-01-08 17:00
[root@localhost ~]#
說明:
實例2:明天17點鐘,輸出時間到指定文件內
命令:
at 17:20 tomorrow
輸出:
[root@localhost ~]# at 17:20 tomorrow
at date /root/2013.log
at EOT
job 8 at 2013-01-06 17:20
之前說了使用crontab實現定時執行任務,假如我們只是想要讓特定任務運行一次,那么,這時候就要用到at監控程序了。
一、at服務
cron是一個linux下 的定時執行工具,可以在無需人工干預的情況下運行作業。
service atd start? ? //啟動服務
service atd ?stop? ???//關閉服務
service atd restart??//重啟服務
service atd reload? ?//重新載入配置
service atd status? ?//查看服務狀態?
二、at在配置文件:
at類似打印進程,會把任務放到/var/spool/at目錄中,到指定時間運行它 。at命令相當于另一個shell,運行at time命令時,它發送一個個命令,可以輸入任意命令或者程序。
三、參數詳解
at [-V] [-q x] [-f file] [-mldbv] time
at -c job ...
atq [-V] [-q x]
atrm [-V] job ...
-V : 印出版本編號?
-q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號為 a, b, c... z 以及 A, B, ... Z 共 52 個?
-m : 即使程序/指令執行完成后沒有輸出結果, 也要寄封信給使用者?
-f file : 讀入預先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案后再一次讀入?網絡應用
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)?
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)?
-v : 列出所有已經完成但尚未刪除的指定?
at命令執行流程
# at 2:05 tomorrow
at/home/kyle/do_job
at Ctrl+D
AT Time中的時間表示方法
-----------------------------------------------------------------------
時 間 例子 說明
-----------------------------------------------------------------------
Minute? ? at now + 5 minutes? ?任務在5分鐘后運行
Hour? ?? ?at now + 1 hour? ?? ?任務在1小時后運行
Days? ?? ?at now + 3 days? ?? ?任務在3天后運行
Weeks? ???at now + 2 weeks? ???任務在兩周后運行
Fixed? ???at midnight? ?? ?? ? 任務在午夜運行
Fixed? ???at 10:30pm? ?? ?? ???任務在晚上10點30分
Fixed ? ? at?23:59 12/31/2018?任務在2018年12月31號23點59分
與crond不同的是,at任務調度是一次性的,而crond是重復性的
1.1 at命令是一次性定時計劃任務,at的守護進程atd會以后臺模式運行,檢查作業隊列來運行
1.2 默認情況下,atd守護進程每60s檢查作業隊列,有作業時,會檢查作業運行時間,如果時間與當前時間匹配,則運行此作業
1.3 at命令是一次性定時計劃任務,執行完一個任務后就不再執行這個任務了
1.4 在使用at命令的時候,一定要保證atd進程的啟動,可以使用相關指令查看
ps -ef | grep atd 可以檢查atd是否在運行
at [選項] [時間]
按兩次 ctrl+d 結束at命令的輸入
4.1 當天的hh:mm(小時:分鐘),假如這個時間已經過去,那么就第二天的這個時間執行。例如04:00
4.2 模糊的詞語,例如midnight、noon、teatime(下午茶時間,16:00左右)
4.3 采用12小時計時制,例如8am
4.4 指定執行命令的具體日期,格式為month dat(月 日)或者mm/dd/yy或者dd.mm.yy,指定的日期必須跟著寫在在指定時間的后面,例如:04:00 2021-3-1就是2021年3月1日凌晨4點整執行
4.5 相對計時法,指定格式為now + count time-units,now就是當前時間,time-units是時間單位,可以是minutes、hours、days、weeks。count是時間的數量,例如:now + 5 minutes
4.6 直接用today、tomorrow來指定完成命令的時間
5.1 2天后的下午5點,執行/bin/ls /home指令
at 5pm + 2 days 按回車鍵
然后寫下那個時刻要執行命令 /bin/ls /home
最后按兩次ctrl+d退出at指令
5.2 atq指令可以直接執行,查看系統中待執行的工作任務
5.3 明天17:00輸出時間到指定文件內 /root/date100.log
at 17:00 tomorrow 按回車鍵
date /root/date100.log
按兩次ctrl+d退出at指令的輸入
5.4 2分鐘后
at now + 2 minutes
5.5 刪除已經設置的任務,atrm 編號
可以用atq列出待執行的任務,列出后第一列就是job編號