この「ワンライナー」を使用して、ファイルの変更に基づいて長時間実行されるプロセスを再起動します
trap 'kill %1' 1 2 3 6; while : ; do YOUR_EXE & inotifywait -r YOUR_WATCHED_DIRECTORY -e create,delete,modify || break; kill %1; sleep 3; done
これにより、プロセスが開始され、その出力が同じコンソールに保持され、変更があった場合はプロセスがシャットダウンされ、3 秒間待機して (同じ秒内の書き込みまたはプロセスのシャットダウン時間)、実行されます。上記をもう一度。
ctrl-c & ssh-disconnect が尊重され、完了するとプロセスが終了します。
読みやすくするために:
trap 'kill %1' 1 2 3 6
while :
do
YOUR_EXE &
inotifywait \
-r YOUR_WATCHED_DIRECTORY \
-e create,delete,modify \
|| break
kill %1
sleep 3
done
たとえば、package.json-ran プロジェクトの場合
"module" : "./dist/server.mjs",
"scripts" : {
"build" : "cd ./src && rollup -c ",
"watch" : "cd ./src && rollup -c -w",
"start" : "cd ./dist && node --trace-warnings --enable-source-maps ./server.mjs",
"test" : "trap 'kill %1' 1 2 3 6; while : ; do npm run start & inotifywait -r ./dist -e create,delete,modify || break; kill %1; sleep 3; done"
},
"dependencies" : {
ここで、あるアクティビティで ( npm run watch
src から dist にコンパイルする) を実行npm run test
し、別のアクティビティで (サーバー ランナーとリスタータ) を実行でき./src
ます。ファイルを編集すると、ビルダー プロセスが更新./dist
され、テストのためにサーバーが再起動します。