linux中執行定時任務,通常是通過crond
這個守護程序來完成的,用ps -ef | grep crond | grep -v grep
可以看到。它會從三個地方讀取配置檔案來進行後台任務的執行:
/var/spool/cron/$
/etc/crontab
/etc/cron.d/*
這些配置檔案記錄了命令列以及執行週期等資訊。下面來分別看看這三種型別的配置檔案:
第乙個 * 代表每小時中的第幾分鐘(0-59)
第二個 * 代表每天的第幾個小時(0-23)
第三個 * 代表每個月中的第幾天(1-31)
第四個 * 代表每年的第幾個月(1-12)
第五個 * 代表每週的星期幾(0-7,0和7都代表星期日)
特殊符號
,
代表不連續的時間。比如0 8,12,16 * * *
,就代表在每天的8點0分,12點0分,16點0分各執行一次。
-
代表連續的時間範圍。比如0 5 * * 1-6
,代表在周一到週六的凌晨5點0分執行命令
*/n
代表每隔多久執行一次。比如*/10 * * * *
,代表每隔10分鐘就執行一遍命令
例:
案例
*/1 * * * * echo 'hello' >> /tmp/a.txt
每隔一分鐘向/tmp/a.txt中追加一行hello,可以使用tail -f /tmp/a.txt
觀察
ps:使用這個檔案負責安排由系統管理員制定的維護系統以及其他任務的crontab。crontab -e
效果等同於vim /var/spool/cron/$
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
# run-parts
00 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
44 4 1 * * root run-parts /etc/cron.monthly
mailto=root
是說,當 /etc/crontab 這個檔案中的例行性命令發生錯誤時,會將錯誤訊息或者是螢幕顯示的訊息傳給誰。
00 * * * * root run-parts /etc/cron.hourly
:在 #run-parts 之後的命令,可以看到,五個佔位符後面接的是root,代表以root身份執行。而run-parts代表後面接的/etc/cron.hourly
是該目錄內(/etc/cron.hourly)的所有可執行檔案,也就是說,每個小時的00分,系統會以root身份去/etc/cron.hourly這個目錄下執行所有可執行的檔案,後面三行也是類似的意思。可以將每天需要執行的命令直接寫到/etc/cron.daily即可,這樣可以不使用crontab -e。
該目錄用來存放任何要執行的crontab檔案或指令碼。
檢視/etc目錄下有沒有cron.allow或cron.deny檔案,作用如下:
如果兩個檔案都不存在,則只有root使用者才能使用crontab命令。
如果cron.allow存在但cron.deny不存在,則只有列在cron.allow檔案裡的使用者才能使用crontab命令,如果root使用者也不在裡面,則root使用者也不能使用crontab。
如果cron.allow不存在, cron.deny存在,則只有列在cron.deny檔案裡面的使用者不能使用crontab命令,其它使用者都能使用。
如果兩個檔案都存在,則列在cron.allow檔案中而且沒有列在cron.deny中的使用者可以使用crontab,如果兩個檔案中都有同乙個使用者,以cron.allow檔案裡面是否有該使用者為準,如果cron.allow中有該使用者,則可以使用crontab命令。
crontab命令用於安裝、刪除或者列出用於驅動cron後台程序的**。使用者把需要執行的命令序列放到crontab檔案中以獲得執行。
linux下的crontab定時執行任務命令詳解
crontab定時任務
今天工作項有個任務是讓ubuntu定時執行某個指令碼,對postgresql資料庫進行定時備份。linux 系統都有個cron定時任務的機制。今天做些筆記,以便日後翻查。注意 cron機制是有個使用者系統的概念的,即分系統cron和使用者cron,每個使用者所執行的cron任務可能不同。1.以roo...
crontab定時任務
基本格式 command 分 時 日 月 周 命令 第1列表示分鐘1 59 每分鐘用 或者 1表示 第2列表示小時1 23 0表示0點 第3列表示日期1 31 第4列表示月份1 12 第5列標識號星期0 6 0表示星期天 第6列要執行的命令 我的需求是定時備份mongodb 編寫任務執行的指令碼ba...
Crontab定時任務
我們可以使用crontab執行一些週期任務 crontab u user file crontab u user 將file做為crontab的任務列表檔案並載入crontab 編輯crontab檔案內容 顯示crontab檔案內容 刪除載入後的crontab檔案內容 每分鐘向使用者目錄下的log....