linux定時任務之crontab

2021-08-18 17:39:21 字數 3857 閱讀 9811

標題已經很明顯了,就是做定時任務的!!!!

cron是系統主要的排程程序,可以在非人工干預的情況下執行作業。crontab命令允許使用者提交、編輯或刪除相應的作業。簡單來說,當我們需要讓系統執行乙個定時任務時,我們就會用到它,比如定時重啟tomcat,或者定時呼叫乙個jar包來執行某項功能等。

1、/var/spool/cron/ 這個目錄下存放的是每個使用者包括root的crontab任務,每個任務以建立者的名字命名,比如tom建的crontab任務對應的檔案就是/var/spool/cron/tom。

一般乙個使用者最多只有乙個crontab檔案。

(這個是我目前用到的最重要的檔案)

2、/etc/crontab 這個檔案負責安排由系統管理員制定的維護系統以及其他任務的crontab。

3、/etc/cron.d/ 這個目錄用來存放任何要執行的crontab檔案或指令碼。

4.這些子目錄裡存放了一些指令碼,到了crontab所指定的時間點,系統就會去執行這些子目錄裡的指令碼。

/etc/cron.hourly

/etc/cron.daily

/etc/cron.weekly

/etc/cron.monthly

59 23 * * * /home/oracle/scripts/alert_log_archive.sh >/dev/null 2>&1

crontab 檔案中每個條目中各個域的意義和格式:

第一列 分鐘:1——59

第二列 小時:1——23(0表示子夜)

第三列 日 :1——31

第四列 月 :1——12

第五列 星期:星期0——6(0表示星期天,1表示星期

一、以此類推)

第六列 要執行的命令

我們暫且用c1、c2、c3、c4、c5、c6代表這六列,前面五列通過組合方式來決定執行指令碼的頻率,最小頻率為每分鐘執行一次,其中cn可以用、/n、t1-t2、a,b,c四種形式來表示:

當 c1 為 * 時表示每分鐘都要執行指令碼,c2 為 * 時表示每小時都要執行程式,依次類推…..

當 c1 為 t1-t2 時表示從第 t1 分鐘到第 t2 分鐘這段時間內要執行,c2 為 t1-t2 時表示從第 t1 到第 t2 小時都要執行,依次類推….

當 c1 為 /n 時表示每 n 分鐘的時間間隔執行一次,c2 為 /n 表示每隔n小時的間隔執行一次,依次類推…..

當 c1 為 a, b, c,… 時表示第 a, b, c,… 分鐘要執行,c2 為 a, b, c,… 時表示第 a, b, c…個小時要執行,依次類推….

1: 59

23 * * * /home/oracle/scripts/alert_log_archive.sh >/dev/null

2>&1

# 表示每天23點59分執行指令碼/home/oracle/scripts/alert_log_archive.sh

2: */5 * * * * /home/oracle/scripts/monitoring_alert_log.sh >/dev/null

2>&1

表示每5分鐘執行一次指令碼/home/oracle/scripts/monitoring_alert_log.sh

3: 0

20 * * 1-5 mail -s "**********" [email protected] < /tmp/maildata

周一到周五每天下午 20:00 寄一封信給 [email protected]

#每晚的21:30重啟apache。

#每月1、10、22日

6:10

6 * * * date

#每天早上6點10分

7:0 */2 * * * date

#每兩個小時

8:023-7/2,8 * * * date

#晚上11點到早上8點之間每兩個小時,早上8點

9:011

4 * mon-wed date

#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點

10:0

41 jan * date

#1月份日早上4點

很多時候,我們計畫任務需要精確到秒來執行,根據以下方法,可以很容易地以秒執行任務。

以下方法將每10秒執行一次

# crontab -e

* * *

* * /bin/date >>/tmp/date.txt

* * *

* * sleep 10; /bin/date >>/tmp/date.txt

* * *

* * sleep 20; /bin/date >>/tmp/date.txt

* * *

* * sleep 30; /bin/date >>/tmp/date.txt

* * *

* * sleep 40; /bin/date >>/tmp/date.txt

* * *

* * sleep 50; /bin/date >>/tmp/date.txt

/var/log/資料夾下有以cron開頭的檔案,一般我現在看到的是後面加日期的那種,就是相關的log,但是我目前測試的時候有的時候沒有相關日誌,這個問題以後在解決

cat /var/log/

cron不會自動啟動,需要通過以下命令來啟動、關閉這個服務:

crond start //啟動服務

crond stop //關閉服務

crond restart //重啟服務

crond reload //重新載入配置

crontab許可權問題到/var/adm/cron/下一看,檔案cron.allow和cron.deny是否存在

用法如下:

1、如果兩個檔案都不存在,則只有root使用者才能使用crontab命令。

2、如果cron.allow存在但cron.deny不存在,則只有列在cron.allow檔案裡的使用者才能使用crontab命令,如果root使用者也不在裡面,則root使用者也不能使用crontab。

3、如果cron.allow不存在, cron.deny存在,則只有列在cron.deny檔案裡面的使用者不能使用crontab命令,其它使用者都能使用。

4、如果兩個檔案都存在,則列在cron.allow檔案中而且沒有列在cron.deny中的使用者可以使用crontab,如果兩個檔案中都有同乙個使用者,

以cron.allow檔案裡面是否有該使用者為準,如果cron.allow中有該使用者,則可以使用crontab命令。

# 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

ubuntu系統建立定時任務之crontab

cron是乙個linux定時執行工具,可以在無需人工干預的情況下執行作業。在ubuntu server 下,cron是被預設安裝並啟動的。通過 etc crontab檔案,可以看到以下內容 ununtu 通過呼叫 run parts 命令,定時執行四個目錄下的所有指令碼。1 etc cron.hou...

Liunx系統定時任務時間設定Crontab的格式

第1列分鐘1 59 第2列小時1 23 0表示子夜 第3列日1 31 第4列月1 12 第5列星期0 6 0表示星期天 第6列要執行的命令 下面是crontab的格式 分 時 日 月 星期 要執行的命令 這裡有crontab檔案條目的一些例子 30 21 usr local apache bin a...

linux定時任務 at定時任務

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