新贵服务永远不会启动或完全停止


11

我正在尝试为Teampeak服务器制作一个简单的暴发户脚本,但无法使其正常工作。

当我说启动initctl时,它只是执行而从未完成,甚至没有发出任何消息。停止也是如此。

为确保我没有做错任何事情,我已经复制了cron脚本并尝试运行它,但是发生的情况相同。

我在这里做错了什么?

更新:

这是我的TS3脚本:

# myservice - myservice job file
description "my service description"
author "Me <myself@i.com>"

# 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

谢谢您的帮助。


您可能想显示您要运行的新贵作业,以便我们对其进行调试?很难知道为什么挂不见。
slangasek 2011年

我已经复制了cron脚本并尝试运行它,并且发生了同样的事情,只是停止并且永不返回外壳
danizmax 2011年

我们仍然需要查看您的新贵脚本。没有它,我们将无能为力。请发布它,或向我们提供链接。
hggdh 2011年

在没有看到脚本的情况下,我所能做的只是猜测:您的脚本是否关心它是由新贵以root用户身份运行的?根路径不同。如果您的脚本想要使用不在root的PATH中的应用程序,则必须指定完整路径。您的脚本中是否有没有返回的编?
waltinator 2011年

Answers:


1

在您的新贵工作中有很多奇怪的地方让我挠头。

1)发射不是我所知道的程序,因此,除非您将其添加到系统路径中,否则很可能导致错误。你是说“回声”吗?这也可能没有帮助,因为它将转到可能不可见的系统控制台。

2)假设'emit'节起作用,您说了'expect fork',但实际上是两次 fork 。一次是“脚本”,然后是在团队演讲时,脚本又分叉到背景本身。

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

使用11.10,您无需执行chdirin脚本,无需确定是否在任何新贵版本之后添加了该脚本。检查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 以获得更多日志级别。


不是OP,而是他使用(danimaz)su以其用户身份执行服务器,而不是成为root用户。
哈维尔·里维拉

哈哈,错过了底部的滚动条。.完全对齐以隐藏用户名。:-P
SpamapS 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.