Ubuntu 設置程序開機啟動(以指定用戶身份)


一、方法

在/etc/rc.local寫程序的啟動命令(系統執行內核過程中會啟動init進程,該進程把當前runlevel所對應的的所有service 都啟動后,才會執行rc.local里的命令),程序默認以root身份啟動;也可以通過 sudo -u user1 命令 指定以user1身份啟動。

 

二、示例:以tomcat為例

由於tomcat運行需要JAVA_HOME,而在init進程運行時還未加載用戶的profile,所以需要在命令前指定JAVA_HOME。

1、默認以當前用戶即root身份啟動

在/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 //執行並把信息輸出到指定文件

2、指定以其他用戶啟動

  先在/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 using catalina.sh, it searching for file setenv.sh and sourcing it. It is searching in CATALINA_HOME or CATALINA_BASE.

即啟動tomcat時會先在bin/下找setenv.sh,如果里面設置了JAVA_HOME則優先用之。

Setting JAVA_HOME in setenv.sh gives you ability to use different tomcats with different applications that need different version of java, but running by one user. Other user environment would not be affected by you.

三、參考資料

http://www.cnblogs.com/z-sm/p/5657914.html


免責聲明!

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



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