Linux定時(計畫)任務

2021-09-26 02:48:51 字數 3743 閱讀 6445

1、概念:未來的某時間點執行一次某任務或者週期性的執行某個任務,執行結果會通過郵件的形式傳送給使用者

2、可將其分為兩類:

(1)定點執行一次某任務:at,batch

(2)週期性的執行某任務:crontab

1.1 使用者及系統定時任務

crond是linux下用來週期性的執行某種任務或等待處理某些事件的乙個守護程序,與windows下的計畫任務類似,可以使用命令:service crond status (centos6);systemctl status crond (centos7)進行檢視。

crond程序定期(每分鐘)檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。使用者在cron表(也稱為crontab檔案)指定定時任務,crontab也就是常見的定時任務設定命令。linux下的任務排程分為兩類,系統任務排程和使用者任務排程。

系統任務排程:系統週期性所要執行的工作,比如寫快取資料到硬碟、日誌清理等。/etc/crontab檔案就是系統任務排程的配置檔案。

使用者任務排程:使用者定期要執行的工作,比如使用者資料備份、定時郵件提醒等。使用者可以使用crontab工具來定製自己的計畫任務。所有使用者定義的crontab檔案被儲存在/var/spool/cron目錄中。

1.2 定時任務語法

先了解一下mail命令,因為我們所有的定時任務在執行結束後都會通過郵件通知。

使用mail發郵件時,必須先將sendmail服務啟動。

mail -s 「郵件主題」 -c 「抄送位址」 -b 「密送位址」 -f 傳送人郵件位址 -f 發件人姓名 < 要傳送的郵件內容

1、at命令:

計畫任務,在特定的時間執行某項工作,在特定的時間執行一次,需要安裝at服務,apt-get install at

1、時間定義

hh:mm 12:00

midnight(深夜)noon (中午) teatime(飲茶時間,一般是下午4點)

am pm 8am 9pm

2019-8-11 2019/8/11

+ 5 minutes hours days weeks

today tomorrow

2、語法結構

at 選項 引數

-q:列出任務

-f :從檔案中讀取

-l :列出任務

-d:指定刪除

-v:列出已執行未刪除的任務

-v:印出版本編號

-c:檢視作業內容

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

atq:列出使用者的計畫任務

atrm:根據任務號刪除at任務

batch:在系統負荷允許的情況下執行at任務,即在系統空閒的情況下才執行at任務

3、示例:

[root@localhost ~]# at now +3 minutes #3分鐘後執行

at> echo 「hello」 #輸入任務

at> #ctrl+d會直接退出

job 1 at 2019-08-06 15:58

[root@localhost ~]# atq #檢視待處理作業

1 2019-08-06 15:58 a root

[root@localhost ~]# at now +7 minutes #7分鐘後執行

at> echo 「hello」

at>

job 2 at 2019-08-06 16:03

[root@localhost ~]# atq #檢視待處理作業

2 2019-08-06 16:03 a root

1 2019-08-06 15:58 a root

[root@localhost ~]# atrm 2 #刪除待處理作業

[root@localhost ~]# at -c 3 #根據作業id檢視作業內容

#!/bin/sh

#atrun uid=0 gid=0

#mail root 0

umask 22

hostname=localhost.localdomain; export hostname

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

cd /root ||

$ << 『marcindelimiter63bd06f2』

echo 「world」>1.txt

marcindelimiter63bd06f2

2、cron命令

1、在/etc目錄下有乙個crontab檔案,這個就是系統任務排程的配置檔案。

[root@localhost ~]# cat /etc/crontab

shell=/bin/bash

path=/sbin:/bin:/usr/sbin:/usr/bin

mailto=root

home=/

#for details see man 4 crontabs

#example of job definition:

#.---------------- minute (0 - 59)

#| .------------- hour (0 - 23)

#| | .---------- day of month (1 - 31)

#| | | .------- month (1 - 12) or jan,feb,mar,apr …

#| | | | .---- day of week (0 - 6) (sunday=0 or 7) or sun,mon,tue,wed,thu,fri,sat

#| | | | |

#* * * * * user-name command to be executed

每行定義乙個週期性任務,共7個字段;

#使用者任務排程:使用者定期要執行的工作。可以使用crontab工具來定製自己的計畫任務。所有使用者定義的crontab檔案被儲存在/var/spool/cron目錄中。其檔名與使用者名稱一致。

示例:5 * * * * 每小時的第五分鐘執行一次

3 4 * * 5 每週的4時3分執行一次

5 6 7 * * 每月的7號的6時5分執行一次

7 8 9 10 * 每年10月9日8時7分執行一次

*/5 * * * * 每隔五分鐘執行一次

2、crontab命令

service crond start:啟動服務

service crond stop:關閉服務

service crond restart:重啟服務

service crond reload:重新載入配置

service crond status:啟動服務

選項:-e:編輯任務

-l:列出所有任務

-r:移除所有任務

-i:在使用-r選項移除所有任務時提示使用者確認

-u user:root使用者可為指定使用者管理cron任務

3、計畫任務規範:

1、指令碼要規範,指令碼存放位置要規範,便於維護

2、定時任務要寫注釋

3、執行的指令碼要帶絕對路徑

4、執行結果的標準輸出或者錯誤輸出 >/dev/null

5、可以以命令完成的任務,也要寫在指令碼

6、分使用者執行

Linux定時(計畫)任務

未來的某時間點執行一次某任務或者週期性的執行某個任務,執行結果會通過郵件的形式 傳送給使用者分類 1 定點執行一次某任務 at,batch 2 週期性的執行某任務 crontab 1 mail命令 mail s 郵件主題 c 抄送位址 b 密送位址 f 傳送人郵件位址 f 發件人姓名 要傳送的郵件內...

MySQL定時計畫任務

5.1版本以後,mysql支援定時執行 event 的功能,就跟linux的crontab差不多。一 先檢視一下你的msyql版本,查詢版本資訊的sql語句 sql select version 確定版本支援之後,再檢視一下event是否開啟 二 檢視是否開啟event 1 mysql event功...

ansible windows 定時計畫任務

ansible使用win shell模組執行windows命令。ansible all m win shell a schtasks create sc daily tn restart tr c windows system32 shutdown.exe r f t 1 st 02 00 建立定時...