Ubuntu Gnome下Bash脚本新建终端标签页自动关闭如何解决
问题解决方案
1. 修复直接运行lxc exec无输出的问题
出现该问题的原因有两点:
- lxc exec默认不会分配伪终端、也不会保持标准输入开启,运行
python这类需要读取输入、输出到终端的交互式程序时,缺少终端环境会导致程序直接卡住无输出 - 你将整个命令串用引号包裹后,lxc exec会把
python interactive_foo.py当成单个命令名在容器内搜索,系统不存在这个名称的命令,自然没有任何响应
正确的直接运行命令:
lxc exec -ti my_lxc -- python interactive_foo.py
注意:如果容器内默认没有
python命令只有python3,或者interactive_foo.py不在容器的root用户默认工作目录,请对应修改命令中的python为python3、脚本路径为容器内的绝对路径。
2. 修复Gnome终端标签页秒关、无法交互的问题
你之前写的两个脚本都没有给lxc exec加上交互参数,容器内的Python进程启动后要么直接退出要么无响应,进程结束后终端标签就会自动关闭。
最终可用脚本
以下脚本支持正常和interactive_foo.py交互,且脚本运行结束后标签不会关闭,可以继续在标签内操作:
#!/bin/bash cmd="python interactive_foo.py" gnome-terminal --tab -- bash -c "lxc exec -ti my_lxc -- $cmd; exec bash"
配置说明
-ti:给lxc exec分配伪终端、保持标准输入开启,完全满足交互式程序的运行要求- 末尾的
; exec bash:Python脚本运行结束后,启动一个新的bash shell代替当前进程,避免标签随脚本退出而关闭。如果你不需要脚本结束后保留标签,删除这部分即可,标签会在你和Python脚本交互完成退出后自动关闭。
内容的提问来源于stack exchange,提问作者Nyxynyx
相关产品推荐
相关产品推荐

