Я пытаюсь создать сценарий, который запускает некоторые программы
startup.sh
knetworkmanager
emesene
keepassx
Проблема состоит в том, что, когда я запускаю скрипт, он только запускает knetworkmanager. Это вызвано тем, что это будет запускать его, затем ожидать, пока это не будет закончено. Как я могу запустить программу, не ожидая его? Я не думаю, что могу просто добавить "и" после каждой команды, потому что все процессы будут все еще уничтожены, когда сценарий будет закончен.
Когда оболочка, которая выполняет выходы сценария, это отправляет Сигнал HUP в процессы, Вы запустили. Если они не поймают сигнал, то они завершат. Таким образом, ли просто использование и достаточно, зависит от приложения. Для сейфа используйте nohup как этот:
nohup your-program >>/dev/null 2>>/dev/null &
См. страницы справочника для nohup и уничтожьте для получения дополнительной информации или прочитайте статью Википедии о nohup.
Нет, процессы не должны быть уничтожены, когда сценарий закончен, если Вы используете &
.Попробуйте.
knetworkmanager &
emesene &
keepassx &
На основе примеров программы Вы дали, похоже, что Вы пытаетесь запустить некоторые программы, когда KDE запускается. Если так, смотрите на функцию Autostart KDE. Эта статья обсуждает больше и дает инструкции о том, как добавить программы для автозапуска.
Как другие сказали, используйте &
оператор для помещения команды в фон в то время оболочка выполняет его.
Если Вы хотите, чтобы составные части работали в порядке (а не одновременно), но все еще хотели, чтобы целое было фоном, используйте подоболочку как это:
(knetworkmanager; emesene; keepassx) &
или, если Вы хотите к операции каждой части быть условным выражением на успешном completetion предыдущего использования части:
(knetworkmanager && emesene && keepassx) &
При добавлении '&' после того, как будет определенно работать каждая команда. Это означало бы, что те сценарии или программы продолжат работать даже после того, как startup.sh заканчивается.