bash - 当其中的程序退出时,关闭从 bash 打开的终结者终端
问题描述
我有一个 udev 规则,每当我插入某个 USB 设备时都会调用一个脚本。该脚本使用以下命令启动终端:
terminator -e "...some_program" & exit
(据我所知,也可能是 xterm,没关系。)
一旦 'some_program' 完成了它应该做的事情,它就会退出(从该程序内部,而不是 bash),但终结器终端保持打开状态,除非我Ctrl+C它,在这种情况下它会关闭。但我不想Ctrl+C它,这就是重点。
我有另一个 udev 规则在 USB 设备被移除时运行。但是在从“插入 USB 规则”打开的终端关闭之前,该规则不会触发(即使我& exit
在从“插入 USB 规则”启动脚本后使用)
我没有更多的想法,我一直在寻找解决方案。但没有任何效果。
我尝试从 some_program 内部发送 SIGINT 而不是使用 exit(1),但它不起作用。程序终止,但终端保持打开状态。
我尝试通过获取终端的 PID 并杀死它来杀死终端。它没有用。
我尝试打开另一个终端并从那里杀死 PID,它没有用。
解决方案
解决了。无需使用'bash -c'。'some_program' 是一个 ROS 节点,所以我需要做的就是杀死 rosmaster ...
$ killall -9 罗斯马斯特
现在可以了。
推荐阅读
- pyspark - 在生产环境中将数据从 Azure Databricks 插入到 Synapse 时权限被拒绝
- r - R - 使用 bwlabel 计算图像中对象的数量
- java - 在 Twitter 上进行身份验证以访问另一个站点
- flutter - 每当颤振医生总是犯这个错误他说他找不到文件
- try-catch - 如何指示或配置 bash 或桌面以打开 Firefox 浏览器配置文件?
- ios - 在 iOS 中未收到反应原生项目的通知
- python - 在每个现有行之间的数据框中插入行,它必须包含来自前一行和下一行的信息
- excel - 多个条件查找最小和最大日期值
- php - 在 TemplateProcessor 中使用 PHPWord 元素
- jquery - django ajax 不会将表单保存到数据库