Запуск Linux обрабатывает в фоновом режиме

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

startup.sh

knetworkmanager
emesene
keepassx

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

10
задан 09.09.2009, 20:41

6 ответов

Когда оболочка, которая выполняет выходы сценария, это отправляет Сигнал HUP в процессы, Вы запустили. Если они не поймают сигнал, то они завершат. Таким образом, ли просто использование и достаточно, зависит от приложения. Для сейфа используйте nohup как этот:

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

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

15
ответ дан 07.12.2019, 12:36
  • 1
    Читая снова, это неоднозначно, выходит ли к OP из оболочки вызова или нет. Он только упоминает, что вышел из сценария, не выходя из оболочки или терминала. – Adam Bellaire 09.09.2009, 23:06
  • 2
    читая мой ответ снова, Вы заметите, что я действительно говорил, "когда оболочка, которая выполняет выходы сценария". Принятие этой оболочки имеет свой собственный виртуальный терминал (не подоболочка, или что-то) это корректно. – Kim 09.09.2009, 23:29
  • 3
    @Kim: Это правда. Ваш ответ прекрасный, я просто уверенный, закрывающий ли OP оболочку вызова или нет. – Adam Bellaire 09.09.2009, 23:55

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

knetworkmanager &
emesene &
keepassx &
10
ответ дан 07.12.2019, 12:36

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

2
ответ дан 07.12.2019, 12:36
  • 1
    Действительно, это - то, что я пытаюсь сделать. Я зафиксировал его теперь, спасибо. – Bart van Heukelom 09.09.2009, 22:52

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

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

(knetworkmanager; emesene; keepassx) &

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

(knetworkmanager && emesene && keepassx) &
1
ответ дан 07.12.2019, 12:36

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

0
ответ дан 07.12.2019, 12:36

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

0
ответ дан 07.12.2019, 12:36

Теги

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