通过 SSH 登录时如何获取 upstart 作业的输出?

通过 SSH 登录时如何获取 upstart 作业的输出?

为了监控我的作业定义正在做什么,我想查看作业的文本输出。当我通过 SSH 登录时,这似乎不可能。

我在使用 Natty 11.04 时遇到了这个问题,但我确信这是一个更常见的问题。

我使用的一个简单作业文件(文件名/etc/init/test.conf):

description "test"
start on test
console owner
kill timeout 5
task
script
  /bin/echo Gotcha...
end script

initctl emit test我的目标是在执行或时看到文本“Gotcha...” initctl start test。但那不起作用。

到目前为止我已经尝试过:

  • “控制台输出”而不是“控制台所有者”
  • “exec /bin/echo Gotcha...”而不是脚本...结束脚本

答案1

从 12.04 版开始(可能更早),默认情况下,upstart 会将作业的所有输出记录到 /var/log/upstart/ 下的一个文件中。

Upstart 的当前文档(在 Cookbook 上)

然后,您可以 tail 该文件来查看写入文件的所有新文本

例如:

tail -f /var/log/upstart/test.log & # tail the output
initctl emit test

答案2

由于 init (pid 1) 正在运行服务(没有 stdout/stderr)而不是您的 shell(与旧式/etc/init.d脚本一样),因此目前无法查看生成的输出。(此功能经常被请求,并且已列入 Upstart 待办事项列表中。)

为了解决这个问题,我建议在作业开始时强制输出重定向:

script
    exec >/var/log/test.debug 2>&1
    echo Gotcha...
end script

相关内容