在我的代码中使用gnome_terminal运行我需要的命令,但是即使该命令已运行并且配置文件设置已设置为在命令后关闭,该命令仍保持打开状态。
while [ 1 ]
do
gnome-terminal -x bash -c "sleep 5; pkill omxplayer; pkill gnome_terminal; echo "done"; bash"
sh issfull.sh
gnome-terminal -x bash -c "sleep 2780.4; pkill omxplayer; bash"
sh nasatv.sh
done
***normal sleep time is 2780.4 which is half of the iss orbital period, but it is shortened to 5
***for testing purposes
我知道pkill gnome_terminal不起作用。这只是我要真正使它起作用的最后一个想法。 我的gnome_terminal配置文件设置设置为“命令退出时:退出终端” (screenshot)
这是命令执行后发生的事情:
不确定从这里开始做什么,因为您可以看到我尝试使用bash将其关闭并编辑配置文件设置。 恐怕要使用&来在后台运行该进程,因为该代码将永久运行,这很可能会阻塞树莓派的CPU。
任何帮助将不胜感激。如果这不符合网站指南或格式不正确,则表示歉意。
答案 0 :(得分:1)
您传递给gnome-terminal
的命令以bash
结尾。仅执行bash
会启动一个交互式外壳程序,该外壳程序将一直运行直到手动退出。警告“仍在运行进程” 指的是该bash命令。
代替
gnome-terminal -x bash -c "sleep 5; pkill omxplayer; echo "done"; bash"
您应该只使用
gnome-terminal -- bash -c "sleep 5; pkill omxplayer; echo done"
还请注意,您不能嵌套引号(如此处突出显示的语法所示)。请写"... echo \"done\""
或仅写"... echo done"
,因为对于特定的echo命令,引号不是必需的。无论如何,echo
并不有用,因为终端将在打印done
之后立即关闭-用户将没有任何更改来查看消息。
通过pkill gnome_terminal
使用正确的名称pkill gnome-terminal
(-
而不是_
)的方式。
但是我想知道为什么您完全使用gnome-terminal
。以下脚本也应正常工作。如果要在对话框中向用户显示消息,可以使用zenity
:
while true; do
sleep 5
pkill omxplayer
zenity --info --text done # will wait until user closes information dialog
sh issfull.sh
sleep 2780.4
pkill omxplayer
sh nasatv.sh
done