1. 程式人生 > >crontab定時任務不執行,單獨執行sh生效

crontab定時任務不執行,單獨執行sh生效

在網上找了一個定時重啟tomcat的指令碼,自己手動執行是可以的,但就是加入crontab後不執行。

重啟指令碼如下

restart_tomcat.sh

#!/bin/bash
tomcat_home=/usr/local/tomcat8
SHUTDOWN=$tomcat_home/bin/shutdown.sh
STARTTOMCAT=$tomcat_home/bin/startup.sh
$SHUTDOWN
$STARTTOMCAT

定時任務

0 2 * * * cd /opt && ./restart_tomcat.sh

定時任務執行後提示資訊在/var/spool/mail/root中

cat /var/spool/mail/root

這裡寫圖片描述

從提示資訊中我們看到是在執行指令碼的時候沒有找到JAVA_HOME

在網上也找到了一篇文章中介紹的

有時我們建立了一個crontab,但是這個任務卻無法自動執行,而手動執行這個任務卻沒有問題,這種情況一般是由於在crontab檔案中沒有配置環境變數引起的。

所以就改了一下重啟指令碼,加入source /etc/profile

最終的重啟指令碼如下

#!/bin/sh
source /etc/profile
tomcat_home=/usr/local/tomcat8
# 找到tomcat程序並kill掉
ps -ef |grep tomcat |awk {'print $2'
} |sed -e "s/^/kill -9 /g" |sh - # 刪除日誌目錄 # rm $tomcat_home/logs/* -rf # 刪除臨時目錄 # rm $tomcat_home/work/* -rf # 啟動tomcat start_tomcat=$tomcat_home/bin/startup.sh $start_tomcat

這次就能重啟了,還是linux知識掌握的太少,沒有系統地瞭解。

注意事項:crontab中要寫全路徑

參考文獻