这是/home/jack/myscript.sh
我要运行的脚本:
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26/
/home/jack/myapp/apache-tomcat-6.0.32/bin/./catalina.sh run
Run Code Online (Sandbox Code Playgroud)
/etc/init/myapp.conf
我写的新贵文件:
description "Myapp Server"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
exec `su jack -c /home/jack/myscript.sh`
Run Code Online (Sandbox Code Playgroud)
那么,如果我想以 user 身份运行脚本jack
,我上面的配置会起作用吗?有更好的方法吗?
根据Upstart Cookbook,以不同用户身份运行服务的内置功能已计划但尚未实施。
如果有start-stop-daemon
,请使用它。
exec start-stop-daemon --start -u jack --exec /home/jack/myscript.sh
Run Code Online (Sandbox Code Playgroud)
否则,请使用su
(就像您一样)或sudo
. 请注意,start-stop-daemon
始终切换到指示的用户(禁止错误),而su
并sudo
遵守他们自己的策略(特别是大多数系统上的 PAM 策略)。
请注意,在您的情况下,您不需要中间脚本。您可以直接从 Upstart 服务定义中设置环境变量。
description "Myapp Server"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
env JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26/
exec /home/jack/myapp/apache-tomcat-6.0.32/bin/catalina.sh run
Run Code Online (Sandbox Code Playgroud)