10

Я пытаюсь создать скрипт, который запускает некоторые программы

startup.sh

knetworkmanager
emesene
keepassx

Проблема в том, что когда я запускаю скрипт, он только запускает knetworkmanager. Это потому, что он запустит его, а затем подождите, пока он не закончится. Как я могу запустить программу, не дожидаясь ее? Я не думаю, что могу просто добавить «&» после каждой команды, потому что все процессы будут по-прежнему убиты, когда сценарий будет завершен.

6 ответов6

14

Когда оболочка, выполняющая скрипт, закрывается, она отправляет сигнал HUP запущенным процессам. Если те не поймают сигнал, они прекратят работу. Так что достаточно ли использовать &, зависит от приложения. Чтобы быть в безопасности, используйте nohup вот так:

nohup your-program >>/dev/null 2>>/dev/null &

Смотрите man-страницы для nohup и kill для более подробной информации или читайте статью в Википедии о nohup.

10

Нет, процессы не должны быть убиты, когда скрипт завершен, если вы используете & . Попытайся.

knetworkmanager &
emesene &
keepassx &
2

Исходя из приведенных вами примеров программ, похоже, что вы пытаетесь запустить некоторые программы при запуске KDE. Если это так, взгляните на функцию автозапуска KDE. Эта статья обсуждает больше и дает инструкции о том, как добавить программы в автозапуск.

1

Как уже говорили другие, используйте оператор & чтобы поместить команду в фоновый режим во время ее запуска оболочкой.

Если вы хотите, чтобы составные части работали по порядку (а не одновременно), но все же хотели, чтобы все было на заднем плане, используйте подоболочку:

(knetworkmanager; emesene; keepassx) &

или, если вы хотите, чтобы работа каждой части зависела от успешного завершения предыдущей части, используйте:

(knetworkmanager && emesene && keepassx) &
0

Добавление '&' после каждой команды определенно будет работать. Это будет означать, что эти сценарии или программы будут продолжать работать даже после завершения файла startup.sh.

0

Другой вариант - запустить процесс как демон, используя /sbin /start-stop-daemon.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .