命令执行(rpi)后关闭gnome_terminal实例

时间:2019-03-03 14:45:11

标签: bash raspberry-pi gnome-terminal

在我的代码中使用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

这是命令执行后发生的事情:

image2

不确定从这里开始做什么,因为您可以看到我尝试使用bash将其关闭并编辑配置文件设置。 恐怕要使用&来在后台运行该进程,因为该代码将永久运行,这很可能会阻塞树莓派的CPU。

任何帮助将不胜感激。如果这不符合网站指南或格式不正确,则表示歉意。

1 个答案:

答案 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