linux centos定時任務at指令詳解

2021-07-26 06:09:18 字數 3301 閱讀 6795

指令:at

定時任務,指定乙個時間執行乙個任務,只能執行一次。

語法:# at [引數] [時間]

at> 執行的指令

退出at命令 ctrl+d

命令前提:

需要開啟atd程序(在redhat中atd是預設隨

系統啟動而啟動)

# yum -y install at

# ps -ef | grep atd ##檢視是否開啟atd

# /etc/init.d/atd start ##開啟atd

# chkconfig --level 2345 atd on ##設定atd開機啟動

查詢刪除當前待執行任務

查詢當前的等待任務,被執行之後就不會顯示

# atq

刪除系統中由at建立的正在等待被執行的任務

# atrm 任務的工作號

例如:# atrm 17

常見引數:

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

-i :atq的別名

-d :atrm的別名

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

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

-v :顯示版本資訊

-q :後面加《列隊》 使用指定的列隊

-f :後面加《檔案》 從指定檔案讀入任務而不是從標準輸入讀入

-t :後面《時間引數》 以時間引數的形式提交要執行的任務

1、hh:mm

說明:在今日的 hh:mm 時刻進行,若該時刻已超過,則明天的 hh:mm 進行此任務。

ex> 04:00

2、hh:mm yyyy-mm-dd

說明:規定在某年某月的某一天的特殊時刻進行該項任務

ex> 04:00 2009-03-17

3、hh:mm[am|pm] [month] [date]

說明:規定在某年某月某日的某時刻進行該項任務

ex> 04pm march 17

4、hh:mm[am|pm] + number [minutes|hours|days|weeks]

說明:規定在某個時間點再加多少時間後才進行該項任務

ex> now + 5 minutes

ex> 04pm + 3 days

時間格式擴充套件:

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

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

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

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

4、能夠指定命令執行的具體日期,指定格式為month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必須跟在指定時間的後面。

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

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

限制使用者的使用許可權

前提:很多主機被所謂的攻擊

破解後,最常發現的就是他們的系統當中多了很多的

黑客程式,這些程式非常可能運用一些計畫任務來執行或蒐集你的系統執行資訊,並定時的傳送給黑客。所以,除非是你認可的帳號,否則先不要讓他們使用 at 命令

at命令使用的控制檔案來限制使用者的使用控制

控制檔案目錄:/etc/at.allow和/etc/at.deny

控制檔案使用規則:

1:先找尋 /etc/at.allow 這個檔案,寫在這個檔案中的使用者才能使用 at ,沒有在這個檔案中的使用者則不能使用 at (即使沒有寫在 at.deny 當中);

2:如果 /etc/at.allow 不存在,就尋找 /etc/at.deny 這個檔案,若寫在這個 at.deny 的使用者則不能使用 at ,而沒有在這個 at.deny 檔案中的使用者就可以使用 at 命令。

3:如果兩個檔案都不存在,那麼只有 root 可以使用 at 這個命令。

4:在一般的 distributions 當中,由於假設系統上的所有使用者都是可信任的, 因此系統通常會保留乙個空的 /etc/at.deny 檔案,意思是允許所有人使用 at 命令的意思。

5:如果不希望有某些使用者使用 at 的話,將那個使用者的帳號寫入 /etc/at.deny 即可! 乙個帳號寫一行。

# vi /etc/at.allow

注意事項

1、如果at的指令輸出的路徑有誤 則會把結果以郵件的形式傳送給使用者

2、當乙個任務建立了會被分配到乙個任務號,而且會在/var/spool/at裡面排隊。不建議使用vi編輯器去修改,容易出錯。

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

# at 5pm + 3 days

at> /bin/ls

at>

job 7 at 2013-01-08 17:00

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

# at 17:20 tomorrow

at> date > /root/doiido.log

at>

job 8 at 2013-01-06 17:20

例項3:計畫任務設定後,在沒有執行之前用atq命令來檢視系統沒有執行工作任務

# atq

8 2013-01-06 17:20 a root

7 2013-01-08 17:00 a root

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

# atq

8 2013-01-06 17:20 a root

7 2013-01-08 17:00 a root

# atrm 7

# atq

8 2013-01-06 17:20 a root

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

# at -c 8

#!/bin/sh

# atrun uid=0 gid=0

# mail root 0

echo "hello"

date > doiido.log

擴充套件指令batch

batch為,at命令的特殊版本,在執行的任務會占用大量資源的時候用,只在cpu需求低於cpu能力80%的時候使用

# batch

at> echo "hi" > /dev/tty2

batch建立的任務也是通過atq檢視,atrm刪除

linux centos的定時任務

安裝crontab yum install crontabs 說明 sbin service crond start 啟動服務 sbin service crond stop 關閉服務 sbin service crond restart 重啟服務 sbin service crond reload...

Linux Centos7 定時任務指令碼

在開發中我們遇到過定時任務 同樣我們也會想著記憶體的問題,接下來就是清除日誌的指令碼 指定指令碼直譯器,這裡使用 bin sh 做直譯器 cat dev null messages 這個命令是清空message檔案 1 進入到 usr local 目錄下 2 建立文字 touch clear tom...

linux定時任務 at定時任務

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