
プロセスを実行し、クラッシュした場合にそれを再起動する単純な 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) し、ログファイルを標準出力します。ログファイルのリダイレクトは機能します。しかし、コンソールへの標準エラーは機能しません。このエラーリダイレクトするシェルから直接コマンドを実行すると機能します。
これまで試したこと: - スクリプトに「コンソール出力」を追加する (出力を /dev/console にリダイレクトすると思われます) - exec start-stop-daemon --start -c myuser --exec コマンドを使用する (upstart ジョブを sudo で実行しているため、/dev/console が別の場所を指していると考えます) **このスクリプトはクラッシュするだけで、実行されません。
他に何かアイデアはありますか? ユーザー用のコンソールにエラー出力を表示する必要があります。
答え1
を省略します2>&1
- これは実際には stderr を stdout にリダイレクトします。stderr をコンソールに出力する必要があります - これは stderr のデフォルトです。
exec /usr/bin/gulp --gulpfile ./lib/vendor/node/gulpfile.js > /var/log/gulp.log