
我有一個簡單的新貴腳本,它運行一個進程並在崩潰時重新生成它。問題是,如果它崩潰了,我希望用戶收到它崩潰的警報(因為他們可能需要採取措施防止它再次崩潰)。這是我的腳本:
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