我使用这个“单线”根据文件更改重新启动长时间运行的进程
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
这将启动进程,将其输出保持到同一个控制台,观察变化,如果有变化,它将关闭进程,等待三秒钟(进一步在同一秒内写入或进程关闭时间),然后执行又是上述。
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
,服务器将重新启动以供您测试。