使用crontab實現(xiàn)定時執(zhí)行任務,假如我們只是想要讓特定任務運行一次,那么,這時候就要用到at監(jiān)控程序了。
一、at服務
cron是一個linux下 的定時執(zhí)行工具,可以在無需人工干預的情況下運行作業(yè)。
service atd start //啟動服務
service atd stop //關(guān)閉服務
service atd restart //重啟服務
service atd reload //重新載入配置
service atd status //查看服務狀態(tài)
二、at在配置文件:
at類似打印進程,會把任務放到/var/spool/at目錄中,到指定時間運行它 。at命令相當于另一個shell,運行at time命令時,它發(fā)送一個個命令,可以輸入任意命令或者程序。
三、參數(shù)詳解
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 : 即使程序/指令執(zhí)行完成后沒有輸出結(jié)果, 也要寄封信給使用者
-f file : 讀入預先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案后再一次讀入 網(wǎng)絡應用
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已經(jīng)完成但尚未刪除的指定
at命令執(zhí)行流程
# 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分
[root@localhost ~]# at 5pm +3 days
at> /bin/date
at> <EOT>
job 1 at 2016-08-30 17:00
[root@localhost ~]# atq
1 2016-08-30 17:00 a root
[root@localhost ~]# at 2:05 tomorrow
at> echo the end of world !
at> <EOT>
job 2 at 2016-08-28 02:05
[root@localhost ~]# atq
2 2016-08-28 02:05 a root
1 2016-08-30 17:00 a root
[root@localhost ~]# atrm 2
[root@localhost ~]# atq
1 2016-08-30 17:00 a root