在/etc/rc.local寫程序的啟動命令(系統執行內核過程中會啟動init進程,該進程把當前runlevel所對應的的所有service 都啟動後,才會執行rc.local裡的命令),程序默認以root身份啟動;也可以通過 sudo -u user1 命令 指定以user1身份啟動。
由於tomcat運行需要JAVA_HOME,而在init進程運行時還未加載用戶的profile,所以需要在命令前指定JAVA_HOME。
在/etc/rc.local寫如下命令
export JAVA_HOME=/usr/share/jvm/jdk1.8.0_91 //執行rc.local時還未加載profile因此沒此句會報 沒找到JAVA_HOME或JRE_HOME變量 的錯誤 /home/act/apache-tomcat-8.0.36/bin/startup.sh > /home/act/apache-tomcat-autostart-log/`date +%Y%m%d_%H%M%S`.txt //執行並把信息輸出到指定文件
先在/etc/rc.local寫如下命令:
sudo -u act /home/act/apache-tomcat-8.0.36/bin/startup.sh > /home/act/apache-tomcat-autostart-log/`date +%Y%m%d_%H%M%S`.txt
再在tomcat/bin/下創建setenv.sh,setenv.sh裡寫入 export JAVA_HOME=/usr/share/jvm/jdk1.8.0_91
相關:http://askubuntu.com/questions/468772/tomcat-does-not-recognize-java-home
When you starting
tomcat
usingcatalina.sh
, it searching for filesetenv.sh
and sourcing it. It is searching inCATALINA_HOME
orCATALINA_BASE
.即啟動tomcat時會先在bin/下找setenv.sh,如果裡面設置了JAVA_HOME則優先用之。
Setting
JAVA_HOME
insetenv.sh
gives you ability to use different tomcats with different applications that need different version ofjava
, but running by one user. Other user environment would not be affected by you.
http://www.linuxidc.com/Linux/2016-07/133080.htm
更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2