通过SSH登录时如何从新贵工作中获取输出?

Bin*_*rus 10 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
Run Code Online (Sandbox Code Playgroud)

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

到目前为止我尝试过的:

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

Dav*_*ler 16

从 12.04 开始(可能更早),默认情况下,upstart 将记录到 /var/log/upstart/ 下的文件,其中包含作业的任何输出

Upstart 的当前文档(在 Cookbook 上)

然后,您可以拖尾该文件以查看正在写入文件的所有新文本

例如:

tail -f /var/log/upstart/test.log & # tail the output
initctl emit test
Run Code Online (Sandbox Code Playgroud)


Kee*_*ook 8

由于 init (pid 1) 正在运行服务(它没有 stdout/stderr)而不是你的 shell(就像旧式/etc/init.d脚本一样),目前没有办法看到生成的输出。(此功能经常被请求,并且在 Upstart 要做的事情列表中。)

要解决此问题,我建议在作业本身开始时强制输出重定向:

script
    exec >/var/log/test.debug 2>&1
    echo Gotcha...
end script
Run Code Online (Sandbox Code Playgroud)