歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 設置程序開機以指定用戶身份啟動

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

日期:2017/2/28 13:51:09   编辑:Linux教程

一、方法

在/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

更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2

Copyright © Linux教程網 All Rights Reserved