linux定時任務 at定時任務

2022-07-14 10:15:08 字數 4328 閱讀 3379

at命令是一次性定時計畫任務,at的守護程序atd會以後臺模式執行,檢查作業佇列來執行作業。atd守護程序會檢查系統上的乙個特殊目錄來獲取at命令的提交的作業,預設情況下,atd守護程序每60秒檢查一次目錄,有作業時,會檢查作業執行時間,如果時間與當前時間匹配,則執行此作業。

注意:at命令是一次性定時計畫任務,執行完乙個任務後不再執行此任務了。

1、at命令格式

at [選項] [時間]

ctrl + d 結束at命令的輸入

在使用at命令的時候,一定要保證atd程序的啟動。

[root@vms002 /]# ps -ef|grep -v grep|grep atd

rpcuser 1550 1 0 6月10 ? 00:00:00 /usr/sbin/rpc.statd --no-notify

root 1552 1 0 6月10 ? 00:00:00 /usr/sbin/atd -f

2、at命令引數

選項

含義

-m當指定的任務被完成後,將給使用者傳送郵件,即使沒有標準輸出

-iatq的別名

-datrm的別名

-v顯示任務將被執行的時間

-c列印任務的內容到標準輸出

-v顯示版本資訊

-q 《佇列》

使用指定的佇列

-f 《檔案》

從指定檔案讀入任務而不是從標準輸入讀入

-t 《時間引數》

以時間引數的形式提交要執行的任務

3、時間定義

at允許使用一套相當複雜的指定時間的方法:

● 能夠接受在當天的hh:mm(小時:分鐘)式的時間指定。假如該時間已過去,那麼就放在第二天執行。 例如:04:00

● 能夠使用midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午4點)等比較模糊的詞語來指定時間。

● 能夠採用12小時計時制,即在時間後面加上am(上午)或pm(下午)來說明是上午還是下午。 例如:12pm

● 能夠指定命令執行的具體日期,指定格式為month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必須跟在指定時間的後面。 例如:04:00 2009-03-1

● 能夠使用相對計時法。指定格式為:now + count time-units ,now就是當前時間,time-units是時間單位,這裡能夠是minutes(分鐘)、hours(小時)、days(天)、weeks(星期)。count是時間的數量,幾天,幾小時。 例如:now + 5 minutes 04pm + 3 days

● 能夠直接使用today(今天)、tomorrow(明天)來指定完成命令的時間。

4、相關命令

1)at:在特定的時間執行一次性的任務;

2)atq:列出使用者的計畫任務,如果是超級使用者將列出所有使用者的任務,結果的輸出格式為:作業號、日期、小時、佇列和使用者名稱;

3)atrm:根據job number刪除at任務;

4)batch:在系統負荷允許的情況下執行at任務,就是在系統空閒的情況下才執行at任務。

5、相關配置檔案

1)時間規範的確切定義可以在/usr/share/doc/at-3.1.13/timespec中檢視;

2)預設情況下計畫任務都是存放在/var/spool/at/資料夾中;

3)root使用者可以在任何情況下使用at命令,而其他使用者使用at命令的許可權定義在/etc/at.allow(被允許使用計畫任務的使用者)和/etc/at.deny(被拒絕使用計畫任務的使用者)檔案中,預設沒有檔案需要自己建立允許使用者和拒絕使用者檔案;

4)如果/etc/at.allow檔案存在,只有在該檔案中的使用者名稱對應的使用者才能使用at;

5)如果/etc/at.allow檔案不存在,/etc/at.deny存在,所有不在/etc/at.deny檔案中的使用者可以使用at;

6)at.allow比at.deny優先順序高,執行使用者是否可以執行at命令,先看at.allow檔案中有沒有才看at.deny檔案;

7)如果/etc/at.allow和/etc/at.deny檔案都不存在,則只有root使用者能使用at;

8)乙個空內容的/etc/at.deny表示任何使用者都能使用at命令,這是預設的配置;

9)一般情況下這兩個檔案存在乙個即可。如果只有少數幾個使用者需要使用計畫任務,那麼就保留at.allow檔案,如果大部分使用者都要使用計畫任務,那麼保留at.deny即可。

6、使用案例

1)控制台輸入:

案例1:三天後的下午5點執行/bin/ls /

命令:

[root@vms002 /]# at 5pm+3 days

at> /bin/ls />

job 1 at fri jun 14 17:00:00 2019

案例2:明天17點鐘,輸出時間到指定檔案內

命令:

[root@vms002 /]# at 17:00 tomorrow

at> date > /root/date.log

at> >

job 2 at wed jun 12 17:00:00 2019

案例3:計畫任務設定後,在沒有執行之前我們可以用atq命令來檢視系統中沒有執行的工作任務

命令:

[root@vms002 /]# atq

1 fri jun 14 17:00:00 2019 a root

2 wed jun 12 17:00:00 2019 a root

案例4:刪除已經設定的任務

命令:

[root@vms002 /]# atq

1 fri jun 14 17:00:00 2019 a root

2 wed jun 12 17:00:00 2019 a root

[root@vms002 /]# atrm 1

[root@vms002 /]# atq

2 wed jun 12 17:00:00 2019 a root

案例5:顯示已經設定的任務內容

命令:

[root@vms002 /]# at -c 2

#!/bin/sh

# atrun uid=0 gid=0

# mail root 0

umask 22

******此處省略部分內容*****

date > /root/date.log

2)檔案輸入:

任務:一分鐘後執行/tmp/date檔案中的內容

命令:

[root@vms002 /]# cat /tmp/date        #檢視/tmp/date檔案中內容

#!/bin/bash

date "+%f %t" > /root/date.log

[root@vms002 /]# at -f /tmp/date now +1 minutes #設定1分鐘後執行/tmp/date檔案中的內容

job 4 at tue jun 11 15:47:00 2019

[root@vms002 /]# atq #檢視計畫任務是否設定成功

2 wed jun 12 17:00:00 2019 a root

4 tue jun 11 15:47:00 2019 a root

[root@vms002 /]# date

2023年 06月 11日 星期二 15:46:55 cst

[root@vms002 /]# date

2023年 06月 11日 星期二 15:47:47 cst

[root@vms002 /]# date

2023年 06月 11日 星期二 15:48:02 cst

[root@vms002 /]# cat /root/date.log #一分鐘後檢視/root/date.log檔案中內容,驗證計畫任務是否執行了。

2019-06-11 15:47:00

linux定時任務

crontab 設定定時任務 crontab 可以根據分鐘 小時 日期 月份 星期的組合來設定定時任務的自動執行 要使用該服務必須啟動 crond 服務,檢視 crond 服務有沒有啟動,執行命令 servicecrond status 一些任務事例,幫助理解 3020 root back.sh 每...

linux 定時任務

如果想要半夜在linux上備份oracle使用定時命令是最好不過的啦,下面整理了一下linux上的定時任務,可以參考一下 包括一次性的定時at,和長期的定時cron。cron設定 cron長期定時 cron是linux的內建服務,不會自動啟動 service crond start stop sta...

Linux定時任務

為當前使用者建立cron服務 1.鍵入 crontab e 編輯crontab服務檔案 例如 檔案內容如下 2 bin sh home admin jiaoben buy deletefile.sh 儲存檔案並並退出 2 bin sh home admin jiaoben buy deletefil...