Upstart 服务从未启动或完全停止

Upstart 服务从未启动或完全停止

我正在尝试为 teamspeak 服务器制作一个简单的 upstart 脚本,但无法使其工作。

当我说初始化启动它只是执行,但永远不会完成,甚至不会发出任何消息。同样的事情也发生在停止

为了确保我没有做错任何事,我复制了 cron 脚本并尝试运行它,但结果还是一样。

我在这里做错了什么?

更新:

这是我的 TS3 脚本:

# myservice - myservice job file
description "my service description"
author "Me <[email protected]>"

# 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

# Start the process
script
       emit going into TS3 dir
       chdir /home/danizmax/teamspeak3-server_linux-x86/
       emit starting TS3
       exec su -c "/home/danizmax/teamspeak3-server_linux-x86/ts3server_startscript.sh start" danizmax &
       emit done
end script

我甚至尝试使用最简单的脚本,但还是不起作用:

description     "regular background program processing daemon"

start on runlevel [2345]
stop on runlevel [!2345]

expect fork
respawn

exec echo example
console output

感谢您的帮助。

答案1

你这份新工作中有许多奇怪的事情让我困惑不已。

1) 据我所知,emit 不是一个程序,因此除非您已将其添加到系统路径,否则可能会导致错误。您的意思是“echo”吗?这可能也没什么用,因为它会转到可能不可见的系统控制台。

2)假设“emit”节有效,你说“expect fork”,但实际上 fork两次。一次用于“脚本”,然后当 teamspeak 脚本分叉到后台时再次进行。

3)您“su”来运行脚本,但在大多数情况下,start-stop-daemon 实际上更简单:

使用 11.10,您不需要执行chdirin 脚本,不确定是否在您拥有的 upstart 版本之后添加了该脚本。检查man 5 init单词chdir

start on runlevel [2345]
stop on runlevel [^2345]

respawn

chdir /home/danizmax/teamspeak-server
expect fork

exec start-stop-daemon --start --user danizmax --group danizmax --exec /home/danizmax/teamspeak3-server_linux-x86/ts3server_startscript.sh -- start

此外,错误可能会报告在 /var/log/syslog 中。您可以通过运行以下命令来增加错误级别:

initctl log-priority info

man initctl了解更多日志级别。

相关内容