为了能够在启动时启动我的应用程序,我遵循了 Upstart 指令。
我创建了一个文件/etc/init/poolparty.conf
,其中定义了以下内容:
# poolparty - poolparty job file
# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on runlevel [016]
# Automatically restart process if crashed
respawn
# Essentially lets upstart know the process will detach itself to the background
expect fork
# Run before process
pre-start script
[ -d /var/run/poolparty ] || mkdir -p /var/run/poolparty
echo "starting Poolparty"
end script
# Start the process
exec /opt/poolparty/bin/poolparty start
这是一个需要启动网络、启动多用户模式的应用程序。无论如何,机器需要先启动的东西都需要在那里。它可以在启动过程结束时启动。
但是当我重新启动时,什么也没有发生。
我还需要做什么才能启动它?有人能帮忙吗?
当我输入 时service poolparty start
,我得到的要么是服务已启动,要么是没有。无论如何它不起作用,我检查过了。
所以如果有人能指导我的话就太好了。我也想检查一下日志。
Btw/opt/poolparty/bin/poolparty
是一个可执行脚本,用于设置内容并调用 Java 应用程序。它使用 jsvc64 启动基于 Tomcat 的 Java 应用程序。
答案1
正如你所说,它需要网络,并且你正在创建新目录,因此它也需要本地文件系统。所以你必须使用
start on (local-filesystems and net-device-up IFACE!=lo)
或者
start on (local-filesystem and started networking)
代替
start on runlevel [2345]
你可以尝试
if [ ! -e /var/run/poolparty ]; then
/bin/mkdir /var/run/poolparty
fi
代替
[ -d /var/run/poolparty ] || mkdir -p /var/run/poolparty
echo "starting Poolparty"
建议 :请参阅下面的 upstart 日志/var/log/upstart
,它将帮助您找到遗漏之处。还可以使用命令检查 init 脚本的语法错误:
init-checkconf -d /etc/init/poolparty.conf
为了更好地理解 upstart 脚本,请参阅新贵 Ubuntu 菜谱