crontab配置及簡單應(yīng)用

crontab

crontab并不陌生,在*nix的操作系統(tǒng)之中,使用它設(shè)置周期性被執(zhí)行的指令.每個(gè)用戶可以擁有自己的crontab文件;
同時(shí),操作系統(tǒng)保存一個(gè)針對整個(gè)系統(tǒng)的crontab文件,該文件通常存放于/etc或者/etc之下的子目錄中。

pi@raspberrypi:/etc $ ls -al|grep cron
drwxr-xr-x   2 root root    4096 Jan  1  1970 cron.d
drwxr-xr-x   2 root root    4096 Jan  1  1970 cron.daily
drwxr-xr-x   2 root root    4096 Jan  1  1970 cron.hourly
drwxr-xr-x   2 root root    4096 Jan  1  1970 cron.monthly
drwxr-xr-x   2 root root    4096 Jan  1  1970 cron.weekly
-rw-r--r--   1 root root     722 Sep  5  2015 crontab

基本用法

  • -u user:用來設(shè)定某個(gè)用戶的crontab服務(wù);
  • file:file是命令文件的名字,表示將file做為crontab的任務(wù)列表文件并載入crontab。如果在命令行中沒有指定這個(gè)文件,crontab命令將接受標(biāo)準(zhǔn)輸入(鍵盤)上鍵入的命令,并將它們載入crontab。
  • -e:編輯某個(gè)用戶的crontab文件內(nèi)容。如果不指定用戶,則表示編輯當(dāng)前用戶的crontab文件。
  • -l:顯示某個(gè)用戶的crontab文件內(nèi)容,如果不指定用戶,則表示顯示當(dāng)前用戶的crontab文件內(nèi)容。
  • -r:從/var/spool/cron目錄中刪除某個(gè)用戶的crontab文件,如果不指定用戶,則默認(rèn)刪除當(dāng)前用戶的crontab文件。
  • -i:在刪除用戶的crontab文件時(shí)給確認(rèn)提示。

最常用的參數(shù)有-l 查詢-e 編輯

配置格式

  • 第1列分鐘0~59
  • 第2列小時(shí)0~23(0表示子夜)
  • 第3列日1~31
  • 第4列月1~12
  • 第5列星期0~7(0和7表示星期天)
  • 第6列要運(yùn)行的命令

配置示例

每分鐘執(zhí)行一次:

* * * * * /path/to/your/app.sh

每半分鐘執(zhí)行一次:

*/2 * * * * /path/to/your/app.sh

每小時(shí)的第3和第15分鐘執(zhí)行:

3,15 * * * * /path/to/your/app.sh

在上午8點(diǎn)到11點(diǎn)的第3和第15分鐘執(zhí)行:

3,15 8-11 * * * /path/to/your/app.sh

每周六23點(diǎn)執(zhí)行:

0 23 * * 6 /etc/init.d/smb restart

簡單應(yīng)用

檢測并自動(dòng)重啟服務(wù)

crontab -e
*/2 * * * * isfound=$(ps | grep "redsocks" | grep -v "grep"); if [ -z "$isfound" ]; then echo "$(date): restart redsocks...">>/tmp/log/redsocks-mon.log && /etc/init.d/redsocks restart; fi

檢測并自動(dòng)重啟tomcat

*/2 * * * * sh /path/to/tomcat_monitor.sh
vi tomcat_monitor.sh
#!/bin/sh
source /home/user/.bash_profile
export PATH=$PATH:.:/bin:/sbin:/usr/bin:
pid_count=`ps aux|grep java|grep your-tomcat|grep -v grep|wc -l`
if [ $pid_count -ne 1 ]; then
        echo "stop download-tomcat, time: `date`"
        if [ $pid_count -gt 0 ]; then
                 ps aux|grep java|grep your-tomcat|grep -v grep|awk '{print $2}'|xargs kill
        fi
        sh /path/to/tomcat/bin/startup.sh
        echo "start download-tomcat finished, time: `date`"
fi

清理30天前的tomcat日志

crontab -e
0 23 * * * sh /path/to/clean_log.sh
vi clean_log.sh
DATE=$(date -d "30 days ago" +%Y-%m-%d)
echo $DATE
rm /path/to/tomcat/logs/*$DATE*

備份并清理catalina.out

crontab -e
00 22 * * * sh /path/to/clean_catalina_out.sh
vi clean_catalina_out.sh
y=`date "+%Y"`
m=`date "+%m"`
d=`date "+%d"`
cp /path/to/tomcat/logs/catalina.out /path/to/tomcat/logs/catalina.out.$y-$m-$d
echo > /path/to/tomcat/logs/catalina.out
exit

注意設(shè)置環(huán)境變量

由于crontab執(zhí)行任務(wù)時(shí)不加載任何環(huán)境變量,可以在腳本中加入必要的環(huán)境變量,甚至ulimit設(shè)置,以保證程序可以正常執(zhí)行。

vi start.sh

!/bin/sh
source /etc/profile
export YOUR_ENV=value
ulimit -n 10240
/path/to/your/app/run

參考文檔

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

相關(guān)閱讀更多精彩內(nèi)容

  • Linux定時(shí)任務(wù)Crontab命令詳解 linux 系統(tǒng)則是由 cron (crond) 這個(gè)系統(tǒng)服務(wù)來控制的。...
    孫燕超閱讀 1,898評論 0 4
  • 前一天學(xué)習(xí)了 at 命令是針對僅運(yùn)行一次的任務(wù),循環(huán)運(yùn)行的例行性計(jì)劃任務(wù),linux系統(tǒng)則是由 cron (cro...
    Zcclucky閱讀 626評論 0 0
  • Linux定時(shí)任務(wù)Crontab命令詳解linux 系統(tǒng)則是由 cron (crond) 這個(gè)系統(tǒng)服務(wù)來控制的。L...
    時(shí)待吾閱讀 452評論 0 0
  • Linux 系統(tǒng)提供了使用者控制計(jì)劃任務(wù)的命令 :crontab 命令。 一、crond簡介 crond是linu...
    happeace閱讀 1,883評論 0 53
  • 簡書不維護(hù)了,歡迎關(guān)注我的知乎:波羅學(xué)的個(gè)人主頁 原文地址 此篇技術(shù)博文主要介紹的是crontab,Linux下的...
    波羅學(xué)的草稿閱讀 6,136評論 0 13

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