2021-05-12 14:32:11
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
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
相關文章