关闭从 bash 打开的终结者终端,当其中的程序退出时



我有一个 udev 规则,每当我插入某个 USB 设备时都会调用脚本。该脚本使用以下命令启动终端:

terminator -e "...some_program" & exit

(也可能是xterm,据我所知并不重要。

一旦"some_program"完成它应该做的事情,它就会退出(从该程序内部,而不是 bash 内部),但终止器终端保持打开状态,除非我按 Ctrl+C它,在这种情况下它会关闭。但我不想按 Ctrl+C它,这就是重点。

我有另一个 udev 规则,它在移除 USB 设备时运行。但是,在从 "插入 USB 规则"关闭(即使我在从"插入 USB 规则"启动脚本后使用了& exit)

我没有更多的想法,我已经上下寻找解决方案。但没有任何效果。

  • 我尝试从 some_program 内部发送 SIGINT 而不是使用 exit(1),它不起作用。程序终止,但终端保持打开状态。

  • 我试图通过获取PID并杀死它来杀死终端。它没有用。

  • 我尝试打开另一个终端并从那里杀死 PID,但它不起作用。

你可能想试试这个:

terminator -e "bash -c 'yourcommand'"

至少当我以这种方式调用ls时,它会自动关闭:

# this closes automatically:
terminator -e "bash -c 'ls'"
# to test, this closes when the less command is ended (eg. by hitting q):
terminator -e "bash -c 'ls | less'"

显然,终止符不会以这种方式初始化它自己的 shell,一旦使用 -c 选项传递的命令结束,shell 就会终止,终止符会自动关闭窗口。

解决了。 无需使用"bash -c"。 'some_program'是一个ROS节点,所以我需要做的就是杀死rosmaster......

$ 基洛尔 -9 罗斯马斯特

它现在有效。

相关内容

  • 没有找到相关文章

最新更新