首頁 > 軟體

Ubuntu 設定程式開機以指定使用者身份啟動

2020-06-16 17:38:28

一、方法

在/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.linuxidc.com/Linux/2016-07/133080.htm


IT145.com E-mail:sddin#qq.com