crontab小記

       今天用crontab去自動執行一個任務(shell腳本),任務在命令行模式下執行很是正確,可是當crontab調度任務時,任務卻沒法正常執行。具體表現爲:找不到變量;任務在同一時刻被執行屢次。shell

      解決辦法bash

1crontab自動執行腳本時,沒法帶入shell的環境變量,須要在腳本文件中引用 /etc/profile/$HOME/bash_profile腳本。spa

#!/bin/bash
. /etc/profile
. /$HOME/.bash_profile
echo "hello world" > tmpfile
rm tmpfile


2:crontab執行出錯時,能夠再 /var/spool/mail/root(當前用戶名)下看郵件信息,同時也能夠在 /var/log/cron中查看信息。命令行

cat /var/spool/mail/root | tail -n 100
cat /var/log/cron | tail -n 100

當發如今同一時刻,crontab所調度的任務被執行屢次或者有多個error信息時,能夠斷定在該時刻crontab任務被執行了屢次,這時應查看系統進程信息,看是否有多個cron服務在運行,以下:code

ps -aux | grep cron

若是有多個cron進程,kill掉全部的,重啓crond,以下:進程

killall  cron
crond


3:crontab執行任務時,不會進入到任務所在的目錄執行任務,而是在當前用戶的$HOMRE目錄下執行的。所以當任務中有涉及到目錄處理時,應儘可能使用絕對路徑。若是使用了相對路徑,在crontab命令設置時候應先用cd命令進入到目錄,而後在執行任務,crontab -e 打開配置文件後,配置以下:crontab

*/10 * * * * cd /home/work/testCron && ./testCron.sh


4:crontab配置文件格式爲class

分(0-59)  小時(0-23 )  天(1-31)  月(1-12)  星期(0-6:0爲週末)   命令test

該六部分之間用空格隔開;具體格式可查看 /etc/crontab變量

cat /etc/crontab
相關文章
相關標籤/搜索