0

我目前有一个启动我的 ros2 节点的 bash 脚本。这工作得很好。我现在尝试将脚本作为后台任务启动并将输出写入文件。这样做时,我无法在以后终止节点。以前我通过点击Ctrl + C终端来终止它,所有节点都停止了。我尝试通过在启动脚本时保存 PID 然后将其杀死来做同样的事情,但是节点继续运行。

是否有可能停止脚本启动的所有节点?停止所有 ros2 节点是不可能的,因为我并行启动了多个节点。

开始

"./${SCRIPTFILE}" > $LOGFILE  & 
echo $! > $PIDFILE

停止

kill -TERM $(cat $PIDFILE) 2> /dev/null
4

1 回答 1

0

当您使用kill -TERM $(cat $PIDFILE) 2> /dev/null它时,它会发送一个 SIGTERM,这更像是一种谨慎的方式来查看关闭是否可能不会危及打开的数据库或文件的完整性,但它可以被阻止或以其他方式处理。如果你想杀死一个进程而不管它的状态,那么使用:

kill -9 -TERM $(cat $PIDFILE) 2> /dev/null
于 2020-12-09T11:13:38.713 回答