linux中crontab的腳本不執(zhí)行如何解決

本篇文章為大家展示了linux中crontab的腳本不執(zhí)行如何解決,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為涪陵企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè),涪陵網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

1 、在調(diào)用 oracle 的 sqlplus 、 sqlldr 等命令工具時必須寫出其全路徑才能在 crontab 中執(zhí)行成功,否則,雖然手動運行很正常,但一配到 crontab 上就出現(xiàn)異常。

2 、手動運行 shell 腳本時,可以用 sh 命令;但在 cron 中一定不能用 sh 執(zhí)行命令,而要用直接的列出 shell 腳本文件的方式順序執(zhí)行。

3 、在 crontab 調(diào)用時,如果有用到數(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進程是否正常

/etc/init.d/crond status  (貌似centos7版本沒有這個命令)

/etc/init.d/crond start

service rsyslog status

ps -elf|grep crond

7、如何判斷crontab是否執(zhí)行,可以看這個日志/var/log/cron

8、如果是root用戶下執(zhí)行,環(huán)境變量可以設(shè)置加上這兩行

. /etc/profile

. ~/.bash_profile

9、如果是grails進程的啟動
nohup grails prod run-app -Dserver.port=xxxx --non-interactive 2>&1 > nohup.out &

為了這個腳本能成功執(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的進程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))

#判斷進程是否存在,重啟該進程

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這個開機自啟動,但是在里面寫命令確不執(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)這是一個鏈接文件

[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)行業(yè)資訊頻道。

網(wǎng)頁標(biāo)題:linux中crontab的腳本不執(zhí)行如何解決
網(wǎng)站地址:http://muchs.cn/article24/pihdce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化動態(tài)網(wǎng)站、移動網(wǎng)站建設(shè)、網(wǎng)站收錄定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名