Предотвратить закрытие приложения при выходе из терминала

Я создал скрипт bash, который запускает приложение. Поскольку я хотел, чтобы окно терминала закрывалось при запуске приложения, я использовал следующую строку:

firefox & 2> /dev/null; exit;

Он работает нормально, пока я запускаю скрипт из командной строки. Однако, если я запускаю его с рабочего стола, приложение закрывается так же, как и терминал. Может кто-нибудь объяснить, почему это так. Я использую Ubuntu 10.10.

Только используя:

    nohup firefox

это работает. Но я все еще хотел бы объяснить, почему оригинальная версия не работает при запуске из панели запуска, если это возможно.

3
задан 9 January 2012 в 15:32

3 ответа

Решение состоит в том, чтобы просто использовать правильную форму в трубе:

firefox > /dev/null 2>&1
exit

Это работает как из терминала, так и из настольного запуска. Нет необходимости использовать nohup.

0
ответ дан 9 January 2012 в 15:32

Попробуйте команду nohup:

nohup firefox & 2> /dev/null; exit;

nohup отключает запущенные задания от сеанса терминала, что предотвращает их закрытие при выходе.

Однако, если вы хотите запустить только Firefox, просто создайте для него ярлык, сценарий bash не требуется.

Далее в качестве объяснения: попробуйте запустить скрипт из терминала, оставьте окно Firefox открытым и закройте терминал, в котором вы запустили свой скрипт. Firefox закроется, так как он является дочерним процессом сеанса терминала, с которого он был запущен.

0
ответ дан 9 January 2012 в 15:32

Решение, которое сработало для меня, заключается в том, чтобы поместить сценарий в сон на 1 секунду.

Вот минимальный пример скрипта, который я пытался запустить через панель запуска gnome:

#!/bin/bash
echo "test"
read e

nohup firefox & 2> /dev/null
exit

Это прекрасно работает при запуске из терминала, то есть:

    [ 113] он отображает «тест» и после нажатия Enter запускает Firefox
  1. Firefox остается активным при закрытии терминала

Однако, при запуске этого из настольного запуска с:

[ 111]

терминал отображает «test» и выключается после нажатия клавиши enter (firefox никогда не появляется, я предполагаю, что он уничтожен терминалом).

Однако следующие работы начались с пусковой установки:

#!/bin/bash
echo "test"
read e

nohup firefox & 2> /dev/null
sleep 1
exit

в этом случае Firefox запускается после нажатия Enter и остается в живых, когда терминал выключается после времени сна (или закрывается во время сна) ).

0
ответ дан 9 January 2012 в 15:32

Другие вопросы по тегам:

Похожие вопросы: