有一个名为 mimosa 的 nodejs 脚本(https://github.com/dbashford/mimosa)
Nodejs使用USR1将运行进程切换到调试模式
这是我手动操作的方法
$ cd myproj
$ mimosa watch -s # this runs node /path/to/mimosa watch -s
22:16:03 - Watching /Users/admin/Work/test-mimosa/assets
... # some more output
# check the pid from a different terminal
$ ps aux | grep mimosa
admin 79284 0.7 0.8 3153812 129272 s006 S+ 10:16PM 0:03.57 node /opt/local/bin/mimosa watch -s
# send debug signal from the 2nd terminal
kill -s USR1 79284
# nodejs output in the 1st terminal
Hit SIGUSR1 - starting debugger agent.
debugger listening on port 5858
如果我将 mimosa 作为后台进程运行,则同样有效(mimosa watch -s &
)
现在我需要自动化这个过程:运行 mimosa,获取它的 pid,发送 USR1,等待用户的 SIGTERM,杀死 mimosa:
mimosa watch -s &
pid=$!
echo "mimosa pid: $pid"
trap "echo '\nSTOP'; kill $pid; exit" SIGHUP SIGINT SIGTERM
echo 'send debug'
kill -s USR1 $pid
wait $pid
该脚本立即退出,mimosa 进程也立即退出(我再次使用 grep 检查它)。控制台中的输出
$ ./debug.sh
mimosa pid: 79516
send debug
./debug.sh: line 11: 79516 User defined signal 1: 30 mimosa watch -s
怎么了,怎么解决?