Закрытие экземпляра gnome_terminal после выполнения команды (rpi) - PullRequest
0 голосов
/ 03 марта 2019

Использование 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 установлены на "При выходе из команды: выход из терминала" ( снимок экрана )

и вот что происходит после выполнения команды:

image2

Не уверен, что делать дальше, как вы можете видеть, я пытался использовать bash, чтобы закрыть его и редактировать настройки профиля.Я боюсь использовать & для запуска процесса в фоновом режиме, потому что этот код создан, чтобы работать вечно, и это, вероятно, засорит процессор малины.

Любая помощь будет высоко ценится.Извиняюсь, если это не соответствует правилам сайта или просто плохо отформатировано.

1 Ответ

0 голосов
/ 03 марта 2019

Команды, которые вы передаете 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
...