如何在启动时或作为服务启动应用程序

如何在启动时或作为服务启动应用程序

为了能够在启动时启动我的应用程序,我遵循了 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 菜谱

相关内容