Linux crontab命令

crontab是一個(gè)強(qiáng)大的定時(shí)器,用戶可以在編寫腳本,使crontab定時(shí)執(zhí)行一個(gè)shell腳本或者一系列Linux命令。

crontab命令格式:

crontab [ -u user ] file

或者

crontab [ -u user ] { -l | -r | -e }

file : 時(shí)程表,是一個(gè)符合crontab命令讀取格式的文件,格式在文章下面詳細(xì)說
-u user : 是指目標(biāo)user,是可選參數(shù)。如果不使用 -u user 的話,就是表示設(shè)定當(dāng)前用戶的時(shí)程表。若要指定其他用戶,則當(dāng)前用戶必須要有其權(quán)限(比如說是 root)才能夠指定它要執(zhí)行的時(shí)程表,因?yàn)闀r(shí)程表里面會(huì)用到shell命令。

參數(shù)說明:

  • -e : 執(zhí)行文字編輯器來設(shè)定時(shí)程表,內(nèi)定的文字編輯器是 VI,如果你想用別的文字編輯器,則請(qǐng)先設(shè)定 - -VISUAL 環(huán)境變數(shù)來指定使用那個(gè)文字編輯器(比如說 setenv VISUAL joe)
  • -r : 刪除目前的時(shí)程表
  • -l : 列出目前的時(shí)程表

時(shí)程表的格式如下:

f1 f2 f3 f4 f5 program

  • 其中 f1 是表示分鐘,f2 表示小時(shí),f3 表示一個(gè)月份中的第幾日,f4 表示月份,f5 表示一個(gè)星期中的第幾天。program 表示要執(zhí)行的程序。
  • 當(dāng) f1 為 * 時(shí)表示每分鐘都要執(zhí)行 program,f2 為 * 時(shí)表示每小時(shí)都要執(zhí)行程序,其馀類推
  • 當(dāng) f1 為 a-b 時(shí)表示從第 a 分鐘到第 b 分鐘這段時(shí)間內(nèi)要執(zhí)行,f2 為 a-b 時(shí)表示從第 a 到第 b 小時(shí)都要執(zhí)行,其馀類推
  • 當(dāng) f1 為 */n 時(shí)表示每 n 分鐘個(gè)時(shí)間間隔執(zhí)行一次,f2 為 */n 表示每 n 小時(shí)個(gè)時(shí)間間隔執(zhí)行一次,其馀類推
  • 當(dāng) f1 為 a, b, c,... 時(shí)表示第 a, b, c,... 分鐘要執(zhí)行,f2 為 a, b, c,... 時(shí)表示第 a, b, c...個(gè)小時(shí)要執(zhí)行,其馀類推
  • 使用者也可以將所有的設(shè)定先存放在文件中,用 crontab file 的方式來設(shè)定時(shí)程表。
  • 各個(gè)時(shí)間位置的詳細(xì)含義如圖所示


    參數(shù)詳細(xì)說明

實(shí)例

要運(yùn)行crontab,先運(yùn)行命令(centos)

service start crond
  1. 每月每天每小時(shí)的第 0 分鐘執(zhí)行一次 /bin/ls,定時(shí)任務(wù)運(yùn)行時(shí),輸出是不會(huì)在命令窗口看得到的,所以可以把命令的輸出重定向到固定文件
crontab -e
0 * * * * /bin/ls >> /tmp/crontab_ls.log
crontab -l
  1. 在 12 月內(nèi), 每天的早上 6 點(diǎn)到 12 點(diǎn),每隔 3 個(gè)小時(shí) 0 分鐘執(zhí)行一次 /usr/bin/backup
crontab -e
0 6-12/3 * 12 * /usr/bin/backup
crontab -l
  1. 周一到周五每天下午 5:00 寄一封信給 alex@domain.name
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
  1. 每月每天的午夜 0 點(diǎn) 20 分, 2 點(diǎn) 20 分, 4 點(diǎn) 20 分....執(zhí)行 echo "haha"
20 0-23/2 * * * echo "haha"

下面再看看幾個(gè)具體的例子:

0 */2 * * * /sbin/service httpd restart  ##意思是每?jī)蓚€(gè)小時(shí)重啟一次apache 
50 7 * * * /sbin/service sshd start  ##意思是每天7:50開啟ssh服務(wù) 
50 22 * * * /sbin/service sshd stop  ##意思是每天22:50關(guān)閉ssh服務(wù) 
0 0 1,15 * * fsck /home  ##每月1號(hào)和15號(hào)檢查/home 磁盤 
1 * * * * /home/bruce/backup  ##每小時(shí)的第一分執(zhí)行 /home/bruce/backup這個(gè)文件 
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  ##每周一至周五3點(diǎn)鐘,在目錄/home中,查找文件名為*.xxx的文件,并刪除4天前的文件。
30 6 */10 * * ls  ##意思是每月的1、11、21、31日是的6:30執(zhí)行一次ls命令

刪除定時(shí)任務(wù)

crontab -l 會(huì)刪除當(dāng)前所有的定時(shí)任務(wù),假如有刪除特定的定時(shí)任務(wù)的需求,可以通過-e的方式來運(yùn)行定時(shí)任務(wù),然后在需要?jiǎng)h除定時(shí)任務(wù)時(shí),通過crontab -e編輯當(dāng)前的定時(shí)任務(wù)列表,把需要?jiǎng)h除的任務(wù)刪除再保存即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容