为了监控我的作业定义正在做什么,我想查看作业的文本输出。当我通过 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/ 下的一个文件中。
然后,您可以 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