溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2021-07-29 17:33:07 來源:億速云 閱讀:190 作者:Leah 欄目:建站服務(wù)器

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

1 、在調(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 腳本中引用到的文件最好都寫絕對(duì)路徑。

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é)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI