Linux計畫任務 at,crontab

2021-07-24 08:42:58 字數 4237 閱讀 5745

在linux中,我們通過crontab和at這兩個東西來實現

at:它是乙個可以處理僅執行一次就結束的指令

crontab:它是會把你指定的工作或任務,比如:指令碼等,按照你設定的週期一直迴圈執行下去

1.at計畫任務的使用

語法格式: at 時間

服務:atd

開啟atd服務

對應的檢視atd服務,如果沒有啟動則啟動

rpm -q at

#檢視at包有沒有安裝

yum install at -y #安裝at包

#這裡可以先查詢一下,如果沒有at命令的話,則可以直接用yum命令安裝

使用at建立計畫任務

at

20:48

--注意語法,如果是上午的時間,後面要加am如[10:25 am]

at> mkdir /root/test ---輸入要執行的命令或指令碼

at> --按ctrl+d結束

job 1

at fri oct 28

20:48:00

2016

at -l 檢視計畫任務

atq 檢視計畫任務

at計畫任務的特殊寫法

#  at 20:00 2016-10-1   在某天 

# at now +10min 在 10分鐘後執行

# at 17:00 tomorrow 明天下午5點執行

# at 6:00 pm +3 days 在3天以後的下午6點執行

對於系統來說 :計畫任務 就是在某個特定的時刻 執行乙個指令碼檔案

建立成功的at計畫任務會在/var/spool/at/目錄下成生乙個可執行的指令碼檔案

每乙個指令碼都對應乙個at計畫任務

刪除at計畫任務

atrm 命令

atrm + 計畫任務的編號

2.crontab定時任務的使用

crond命令定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作

cron是乙個linux下的定時執行工具,可以在無需人工干預的情況下執行作業。

linux任務排程的工作主要分為以下兩類:

.系統執行的工作:系統週期性所要執行的工作,如備份系統資料、清理快取. 例如/tmp 臨時目錄

.個人執行的工作:某個使用者定期要做的工作,由每個使用者自行設定。

啟動服務

systemctl status crond    #   (檢視crond服務的狀態)

systemctl restart crond # 重啟

systemctl enable crond # 開機自啟

cron命令引數介紹:

crontab的引數:

crontab -u #指定某個使用者的cron服務

crontab -l #列出cron服務的詳細內容

crontab -r #刪除cron服務

crontab -e #編輯cron服務

例如:

crontab -u root -l # root檢視自己的cron計畫任務

crontab -u san -r # root想刪除san的cron計畫任務

特殊符號的含義

符號含義示例*

代表取值範圍內的數字

(任意)

/代表」每」

*/10

-代表從某個數字到某個數字

6-18

,分開幾個離散的數字

6,18

我們可用crontab -e命令來編輯計畫任務

編輯的是/var/spool/cron下對應使用者的cron檔案

crontab的計畫任務內容儲存在目錄/var/spool/cron下面

編輯計畫任務

crontab -u root -e
也可以直接在/etc/crontab中新增計畫任務

cron服務每分鐘不僅要讀一次/var/spool/cron內的所有檔案,還需要讀一次/etc/crontab

因此我們配置這個檔案也能運用cron服務做一些事情。

shell=/bin/bash #變數的值指定shell 環境(此處預設為 bash shell);

path=/sbin:/bin:/usr/sbin:/usr/bin # path 變數定義用來執行命令的程式路徑;

mailto=root //如果出現錯誤,或者有資料輸出,資料作為郵件發給這個帳號

系統級別的計畫任務

對於系統級別的計畫任務,需要執行的命令和指令碼都放在這裡:

/etc/cron.* 按兩次tab

ls /etc/cron

cron.d/ cron.deny cron.monthly/ cron.weekly/

cron.daily/ cron.hourly/ crontab

目錄作用解釋:

cron.d/ #是系統自動定期需要做的任務,但是又不是按小時,按天,按星期,按月來執行的,那麼就放在這個目錄下面。

cron.deny #控制使用者是否能做計畫任務的檔案;

cron.monthly/ #每月執行的指令碼;

cron.weekly/ #每週執行的指令碼;

cron.daily/ #每天執行的指令碼;

cron.hourly/ #每小時執行的指令碼;

crontab #主配置檔案 也可新增任務;

計畫任務案例

1)每天晚上21

:30 重啟apache

2)每月1、10、22日的4

:45重啟apache。

3)每月1到10日的4

:45重啟apache。

4)每隔兩天的上午8點到11點的第3和第15分鐘執行apach

5)晚上11點到早上7點之間,每隔一小時重啟apach

* 23-7/1 * * * /etc/init.d/apach restart

6)周一到周五每天晚上 21

:15 寄一封信給 root@xuegod72:15

21 * * 1-5 mail -s "hi" root@xuegod72

< /etc/fstab

anacron

cron用控制迴圈執行例行性工作。如果我要設定機器每早8點進行備份服務。除非我機器保證在8點這個時間點不會關機,如果關機了,cron中的指令碼,在下次開機將不會被執行。

anacron並沒有取代cron的意思,anacron用於機器重啟後,會偵測停機期間,有沒有cron沒有執行的計畫任務,如果有,會立即執行一下沒有執行的任務。

注意事項

每條任務排程執行完畢,系統都會將任務輸出資訊通過電子郵件的形式傳送給當前系統使用者,這樣日積月累,日誌資訊會非常大,可能會影響系統的正常執行,因此,將每條任務進行重定向處理非常重要

當crontab突然失效時,可以嘗試/etc/init.d/crond restart解決問題。或者檢視日誌看某個job有沒有執行/報錯tail -f /var/log/cron。

在crontab中%是有特殊含義的,表示換行的意思。如果要用的話必須進行轉義\%,如經常用的date 『+%y%m%d』在crontab裡是不會執行的,應該換成date 『+\%y\%m\%d』

Linux計畫任務

1.at命令 指定乙個時間執行乙個任務。2.cron命令 根據乙個時間表自動執行任務。3.anacron命令 在乙個指定時間間隔錯過後自動執行任務。at命令 安排乙個任務在未來執行,需要乙個系統後台atd程序。4.如果這個程序沒有開啟,那麼執行 etc init.d atd restart chkc...

Linux 計畫任務

at命令可以在某一指定時間排程一次性作業命令格式 at q x l f file d v time引數含義 q使用指定的佇列來儲存at資料,預設儲存在a佇列,隊列表號為a z,a z總52個 l列出所有的at計畫任務,等同於atq命令 d刪除at計畫任務,等同於atrm v列出所有已經完成單尚未刪除...

linux計畫任務

cron是乙個linux下的定時執行工具,可以在無需人工干預的情況下執行作業。由於cron 是linux的內建服務,但它不自動起來,可以用以下的方法啟動 關閉這個服務 sbin service crond start 啟動服務 sbin service crond stop 關閉服務 sbin se...