centos7 rc.local腳本執行不成功


騰訊雲 centos7   配置文件/etc/rc.local的內容如下:

#!/bin/sh
#secu_agent init monitor, install at Thu Aug 3 11:19:41 CST 2017
/usr/local/sa/agent/init_check.sh > /dev/null 2>&1
/usr/sbin/ntpdate ntpupdate.tencentyun.com >/dev/null 2>&1 &
/usr/local/qcloud/rps/set_rps.sh >/tmp/setRps.log 2>&1
/usr/local/qcloud/irq/net_smp_affinity.sh >/tmp/net_affinity.log 2>&1
/mnt/script/push_restart.sh > /dev/null 2>&1

目的是開機啟動push_restart.sh,而push_restart.sh的腳本內容如下: 

#!/bin/sh
#/mnt/apache-tomcat-7.0.63/bin/shutdown.sh
#kill -9 `ps -ef | grep tomcat |awk '{print $2}'`
#ps -ef | grep "push-broker-v1.0.jar"
ps -ef | grep "push-broker-v1.0.jar" | awk '{print $2,$8}'| while read action
do
if [[ $action == *grep* ]];then
echo $action
else
echo $action
echo $action | awk '{print $1}' | while read pid
do
kill -15 $pid
echo $pid
done
fi
done
nohup java -jar /mnt/push/push-broker-v1.0.jar &

現象是:服務器啟動后,要執行的腳本/mnt/script/push_restart.sh沒有執行,經檢查:/etc/rc.local是有執行權限。后面靜下來心來檢查,發現是因為全局變量的問題。

因為系統在啟動過程的時候,當執行/etc/rc.local的時候,服務器還沒完全進入系統,因此 java這個全局變量是不存在,所以語句

nohup java -jar /mnt/push/push-broker-v1.0.jar &      執行當中是存在問題的。

解決方法:which java 檢查java命令的絕對路徑為/usr/java/jdk1.8.0_77/bin/java,把語句改為絕對路徑 nohup  /usr/java/jdk1.8.0_77/bin/java -jar /mnt/push/push-broker-v1.0.jar & 就可以解決問題了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM