
次の upstart 構成があります:
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 99 5
#respawn is used to start the nodejs again, even if it fails.
env NODE_ENV=production
env PROJ=/home
script
cd $PROJ
cd htdocs
exec sudo /opt/nodejs/bin/node app.js 2>&1 >> $PROJ/logs/$(date +"%Y_%m_%d_%I_%M").log
end script
これは、1分ごとに作成される動的ファイルに、STDOUTおよびSTDERRメッセージを追加します(存在しない場合は作成します)。次に、実際のフォルダーを作成します。
/ログ/2018/05/29/10_05.log
しかし、コードを変更すると
exec /opt/bitnami/nodejs/bin/node app.js 2>&1 >> $PROJ/logs/$(date +"%Y")/$(date +"%m")/$(date +"%d")/$(date +"%I_%M").log
フォルダーが存在しないため、期待どおりの出力が得られません。フォルダーが存在するかどうかを確認し、存在しない場合はフォルダーを作成するコントロールをスクリプトに追加することを考えましたが、スクリプトが実行されたときに 1 回だけ実行され、STDOUT メッセージごとに実行されることを期待していません。
これに対する解決策はあるでしょうか?
ありがとう