Linux 系統定時任務

2021-08-03 07:43:27 字數 4014 閱讀 3263

部落格整理於:

目的:

讓我們的計算機在指定的時間完成指定的任務,可以是系統的乙個命令,也可以是我們之前寫好的乙個指令碼。比如說,我們的伺服器晚上的時候(壓力比較小),定時拷貝資料庫,日誌。可以讓我們可以從重複勞動中解脫。

windows當中也有這樣的功能:在附件中的 任務計畫程式

1.1確定at安裝(檢視atd服務是否安裝)

(一般是預設安裝的)

- chkconfig –list |grep atd #at 服務是否安裝

- service atd restart #at服務啟動

為什麼我們的服務後面都要加乙個d?

damemon 守護程序的意思

前提:很多主機被所謂的攻擊破解後,最常發現的就是他們的系統當中多了很多的黑客程式,這些程式非常可能運用一些計畫任務來執行或蒐集你的系統執行資訊,並定時的傳送給黑客。所以,除非是你認可的帳號,否則先不要讓他們使用 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
at [選項] 時間

選項: -m: 當at 工作完成之後,無論是否命令有輸出,都用email執行通知執行at命令的使用者

-c工作號:顯示該at工作的實際內容

注意事項

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

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

1.3at命令

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

service atd start //啟動服務

service atd stop //關閉服務

service atd restart //重啟服務

service atd reload //重新載入配置

service atd status //檢視服務狀態

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

# at 5pm + 3 days

at> /bin/ls

at> job 7

at2013-01-08

17:00

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

# at 17:20 tomorrow

at> date > /root/doiido.log

at> job 8

at2013-01-06

17:20

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

# atq

82013-01-06

17:20

a root

72013-01-08

17:00

a root

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

# atq

82013-01-06

17:20 a root

72013-01-08

17:00 a root

# atrm 7

# atq

82013-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刪除

2.1什麼是crond??

crond是linux用來定期執行命令或指定程式任務的一種服務。安裝完作業系統後,缺省會啟動crond任務排程服務。crond服務會定期檢查系統中是否有要執行的任務。如果有要執行的任務便會自動執行該任務。crond定時任務服務就像我們早上使用的鬧鐘一樣

檢視crond服務狀態:

命令:service crond status

啟動crond服務:

命令:service crond start

2.2 什麼是crontab???

crontab是乙個可以在crond服務上新增或編輯定時任務的命令。

設定定時任務命令:

crontab -u 使用者名稱 //設定某個使用者的crond服務,一般root使用者需要這個引數

crontab -l //列出某個使用者crond服務的詳細內容

crontab -r //刪除某個使用者的crond服務

crontab -e //編輯某個使用者的crond服務

例:root使用者要檢視自己的詳細crond服務內容

命令: crontab -u root -l

2.3 crontab file的格式

crond服務是執行的程式,crontab是使用者用來設定定時任務的命令。

crontab檔案中的行是由6個字段組成,不同的字段間用空格或tab分隔。前5個字段指定命令要執行的時間,第六個字段指定要實行的字串。

描述 如下段1

2345

6含義分鐘小時

日期月份

星期幾要執行的任務

取值(0-59)

(0-23)

(1-31)

(1-12)

(0-6)0表示星期日

例: /#2月1日星期3早上8點

0 8 1 2 3 date

/etc/cron.deny //檔案內的使用者不允許使用

/etc/cron.allow //檔案內的使用者允許使用

/var/spool/cron/ //是所有使用者的crontab檔案

總結:

1、常見的定時任務分為兩類:

1.1、linux系統自身定期執行的任務工作

例:輪詢系統日誌、備份系統資料、清理系統快取。

1.2、使用者執行的任務工作

例、備份資料庫資料,更新時間等。

2、在編寫crontab檔案的時候最好做到以下幾點:

2.1、加注釋

2.2、定時任務命令寫到指令碼裡面

2.3、定時任務命令或指令碼尾加 >/dev/null 2>&1

2.4、使用絕對路徑

Linux系統定時任務

我們知道,在windows系統中有定時任務,在控制面板 管理工具 任務計畫程式設定任務可以在指定的時間執行指定的程式或其他工作。那麼在linux中也有這個功能,而支援這個功能的服務就是crond服務。在linux中這個服務是預設安裝的,也是開機自啟動的。我們可以通過chkconfig list gr...

Linux系統定時任務

systemctl start crond systemctl enable crond注意 crond服務一般預設就是啟動和自啟動的,所以一般不需要手動開啟。e 編輯crontab定時任務 l 查詢crontab任務 r 刪除當前使用者所有的crontab任務 代表任何時間。例如第乙個 就代表乙個...

linux定時任務 at定時任務

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