如何诊断Upstart错误?


8

我在/ etc / init中有一个Upstart conf文件,如果我像这样手动启动它,它将正常启动:

sudo initctl start myconf

如果我在没有sudo命令的情况下运行它,我会得到错误名称=(未设置)错误,这是由于用户权限所致,但是当Upstart正确启动该作业并在系统启动时初始化时,这应该不是问题吗?(因为多数民众赞成在根目录下运行)。

该脚本的内容是:

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

exec /spatial/server_init.sh

...其中server_init.sh运行基于python脚本的服务器。登录外壳程序后立即检查脚本的状态时,它说停止/等待。我还尝试了“开始于net-device-up”配置文件,但没有任何变化。有没有办法查看Upstart系统日志或类似的东西,可以帮助我调试问题。

谢谢


有时,如果您chdir的新贵脚本中包含a 且该目录不存在,则不会写入任何日志,并且您会得到神秘的消息:start: Job failed to start
knowasilya 2014年

Answers:


13

尝试:

/var/log/upstart/JOBNAME.log

您可能需要在调试时考虑将其转换为任务。

从空间开始

任务

exec /spatial/server_init.sh

然后从控制台:

initctl发出空间开始
初始状态空间开始

还会试一试,谢谢。我假设这实际上输出了Upstart的特定问题;conf文件中是否还包含语法错误?
U2ros 2012年

这是stdout / err重定向的地方,因此最好是冗长的。
ppetraki 2012年

1

好的,找到了一种方法,但是它只有在脚本执行的程序中发生错误(并且该程序当然返回错误消息)时才起作用,而不是Upstart本身,但这是我在这种情况下需要的。我所做的是将程序输出重定向到这样的日志文件:

exec /spatial/server_init.sh >> /spatial/ogc.log 2>&1

至于其他我发现您可以增加Upstart的详细程度,因此如果我需要它,我将从那里开始。


0
  1. 检查upstart目录是否存在:/ var / log / upstart(如果不存在,则创建目录)
  2. 通过以下方式检查您的新贵版本:initctl版本apt-cache策略新贵

    对于v1.4之前的所有Upstart版本,console的默认值为console none。从Upstart 1.4开始,默认值为console log

  3. 控制台日志添加到您的新贵(脚本阶段之前)
  4. 您的日志将位于:/var/log/upstart/"upstart-JOBNAME".log

范例:

控制台日志

脚本

exec /spatial/server_init.sh

结束脚本

控制台日志 -将标准输入连接到/ dev / null。标准输出和标准错误连接到伪终端的一端,因此对于系统作业和$ XDG_CACHE_HOME / upstart /(或$ HOME /),任何作业输出都会自动记录到目录/ var / log / upstart /中的文件中。缓存/启动//(如果未设置$ XDG_CACHE_HOME)。

控制台无 -将作业的标准输入,标准输出和标准错误文件描述符连接到/ dev / null。

有关控制台的更多信息,请参见下面的链接:

http://upstart.ubuntu.com/cookbook/#console-log

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.