本篇文章為大家展示了linux中crontab的腳本不執(zhí)行如何解決,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元韶山做網(wǎng)站,已為上家服務(wù),為韶山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:189820811081 、在調(diào)用 oracle 的 sqlplus 、 sqlldr 等命令工具時(shí)必須寫出其全路徑才能在 crontab 中執(zhí)行成功,否則,雖然手動(dòng)運(yùn)行很正常,但一配到 crontab 上就出現(xiàn)異常。
2 、手動(dòng)運(yùn)行 shell 腳本時(shí),可以用 sh 命令;但在 cron 中一定不能用 sh 執(zhí)行命令,而要用直接的列出 shell 腳本文件的方式順序執(zhí)行。
3 、在 crontab 調(diào)用時(shí),如果有用到數(shù)據(jù)庫,最好把數(shù)據(jù)庫的相關(guān)環(huán)境變量等列寫出來。
4 、要在 crontab 里調(diào)度, shell 腳本中引用到的文件最好都寫絕對路徑。
5、如果是ORACLE數(shù)據(jù)庫的腳本,一定要注意環(huán)境變量,例如
PATH=$PATH:$HOME/bin
export PATH
export TMP=/tmp
export TMPDIR=/tmp
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=racdb1
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
6、檢查crond進(jìn)程是否正常
/etc/init.d/crond status (貌似centos7版本沒有這個(gè)命令)
/etc/init.d/crond start
service rsyslog status
ps -elf|grep crond
7、如何判斷crontab是否執(zhí)行,可以看這個(gè)日志/var/log/cron
8、如果是root用戶下執(zhí)行,環(huán)境變量可以設(shè)置加上這兩行
. /etc/profile
. ~/.bash_profile
9、如果是grails進(jìn)程的啟動(dòng)
nohup grails prod run-app -Dserver.port=xxxx --non-interactive 2>&1 > nohup.out &
為了這個(gè)腳本能成功執(zhí)行,添加了N多的環(huán)境變量,
這里關(guān)于grails就添加了java相關(guān)的環(huán)境變量。
#!/bin/bash
#設(shè)置環(huán)境變量
#root用戶環(huán)境變量
. /etc/profile
. ~/.bash_profile
#java環(huán)境變量
JAVA_HOME=/home/app/jdk1.7.0_71
JAVA_OPTS="-Xmx1024m -XX:MaxPermSize=512M"
GRAILS_HOME=/home/app/grails-2.3.11
MAVEN_HOME=/home/app/apache-maven-3.0.5
export JAVA_HOME JAVA_OPTS GRAILS_HOME MAVEN_HOME
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$GRAILS_HOME/bin:$MAVEN_HOME/bin
export PATH
#查找9898的進(jìn)程ID
process_id1=$(echo $(ps -ef | grep server.port=9898 | grep -v grep | awk '{print $2}'))
process_id2=`ps -ef | grep rule-service-api1 | grep -v grep |grep -v '/home/app/rule-service-api1/restart_9898.sh'| awk '{print $2}'`
count=$(echo $(ps -ef | grep server.port=9898 | grep -v grep | awk '{print $2}'|wc -l))
#判斷進(jìn)程是否存在,重啟該進(jìn)程
if [ $count -eq 0 ];
then
cd /home/app/rule-service-api1/
sh /home/app/rule-service-api1/startup-rule.sh > /opt/restart9898_1.log 2>&1
sleep 10
echo 'start successful' >> /opt/restart9898_1.log
date >> /opt/restart9898_1.log
else
kill -9 $process_id1 $process_id2
sleep 10
cd /home/app/rule-service-api1/
sh /home/app/rule-service-api1/startup-rule.sh > /opt/restart9898_1.log 2>&1
sleep 10
echo 'kill and restart successful' >> /opt/restart9898_1.log
date >> /opt/restart9898_1.log
fi
遇到/etc/rc.local這個(gè)開機(jī)自啟動(dòng),但是在里面寫命令確不執(zhí)行怎么辦
注意:
ll /etc/rc.local
[root@test ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Oct 23 2014 /etc/rc.local -> rc.d/rc.local
發(fā)現(xiàn)這是一個(gè)鏈接文件
[root@test ~]# ll /etc/rc.d/rc.local
-rw-r--r-- 1 root root 696 Oct 8 11:16 /etc/rc.d/rc.local
在查看發(fā)現(xiàn)權(quán)限是644,并沒有執(zhí)行權(quán)限,原因就在這里了
賦予權(quán)限即可
chmod 755 /etc/rc.d/rc.local
上述內(nèi)容就是linux中crontab的腳本不執(zhí)行如何解決,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。