Ubuntu 设置程序开机启动(以指定用户身份)

本文介绍了如何在Ubuntu系统中设置程序开机启动,特别是以指定用户身份启动Tomcat。通过编辑/etc/rc.local文件并使用sudo -u命令可以实现非root用户启动。同时,为了解决启动时JAVA_HOME未被识别的问题,需要在Tomcat的bin目录下创建setenv.sh文件来设置JAVA_HOME环境变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、方法

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值