我有一个简单的 upstart 脚本,它运行一个进程并在进程崩溃时重新启动它。问题是,如果它崩溃了,我希望用户收到它崩溃的警报(因为他们可能需要采取措施防止它再次崩溃)。这是我的脚本:
start on runlevel [2345]
stop on runlevel [016]
chdir /opt
respawn
respawn limit 5 10
exec /usr/bin/gulp --gulpfile ./lib/vendor/node/gulpfile.js 2>&1 > /var/log/gulp.log
并不是我将标准错误重定向到控制台 (2>&1) 并将标准错误输出到日志文件。日志文件重定向有效。但将标准错误重定向到控制台无效。此错误重定向做如果我直接从 shell 运行该命令就可以工作。
我到目前为止尝试过的事情: - 在脚本中添加“控制台输出”(据称将输出重定向到/dev/console) - 使用 exec start-stop-daemon --start -c myuser --exec 命令(认为因为我使用 sudo 运行 upstart 作业,所以/dev/console 指向其他地方)**此脚本崩溃甚至无法运行
还有其他想法吗?我确实需要将错误输出放入控制台中以供用户使用。
答案1
省略2>&1
- 这实际上将 stderr 重定向到 stdout。您希望 stderr 转到控制台 - 这是 stderr 的默认设置。
exec /usr/bin/gulp --gulpfile ./lib/vendor/node/gulpfile.js > /var/log/gulp.log