Это правильный ответ. Без nohup запущенный процесс все еще считается «дочерним» для процесса терминала и, таким образом, завершается, если терминал закрыт.
Иззи
3
cmd & disownтоже работает, так как &трактуется как ;разделитель команд. Команда disown удаляет соединение между сеансом оболочки bash и командой backgounded.
lornix
2
ЗШ имеет сокращенный для этого: cmd &|.
Четверг
Чтобы это работало, мне пришлось изменить настройки в Terminal.app. В разделе «Профили» выберите свой активный профиль, затем «Оболочка»> «Когда оболочка завершится»> «Закрыть», если оболочка
завершилась корректно
6
Использование screen:
screen -S <session name> -d -m <your command>
после этого вы можете выйти из терминала, а также подключиться к нему:
Если вы хотите запускать определенную команду или файл каждую секунду или около того в фоновом режиме после выхода из терминала, вы можете попробовать эту простую небольшую вещь;
«nohup» уже покрыт принятым ответом. И я вполне уверен, что спрашивающий упомянул cron, потому что они использовали его, чтобы сказать: «Выполните эту команду через несколько секунд в будущем», а не запускать ее периодически.
Дэвид Ричерби
1
Мой ответ не делает вещи хуже. Увидеть смысл голосования вниз. Нейронных было бы достаточно.
в этом случае, когда терминал закрыт, процесс запускается так, /home/your/script.shкак будто он не отделен от своего «родителя», а просто «заземлен». Используйте, nohupчтобы отделить его по-настоящему.
Иззи
Плохо, я не знал об этом, но когда я тестировал свой Debian, команда продолжала выполняться после закрытия оболочки, которая его запустила: /
Flinth
1
Я не уверен, где именно и когда прикреплен фоновый процесс. Но если вы, например, войдете в систему на удаленной машине, она определенно остановится, как только вы выйдете из системы (кроме случаев, когда она сама себя демонизировала ). Поэтому, чтобы быть на 100% уверенным, вы предпочитаете использовать nohup- который также записывает весь (теперь невидимый) вывод в файл, который nohup.outнаходится в каталоге, из которого вы запустили команду.
Иззи
Хорошо, хорошо, спасибо за ваши объяснения ^^
Flinth
Этот ответ может работать нормально в сочетании с jobsкомандой. Довольно часто я хочу иметь возможность вернуться к процессу оболочки после его создания.
Ответы:
Чтобы избежать сигналов выхода, распространяющихся на дочерние процессы терминала и оболочки, выполните команду с помощью
nohup
, то есть:источник
cmd & disown
тоже работает, так как&
трактуется как;
разделитель команд. Команда disown удаляет соединение между сеансом оболочки bash и командой backgounded.cmd &|
.Использование
screen
:после этого вы можете выйти из терминала, а также подключиться к нему:
Больше информации: ссылка
источник
Если вы хотите запускать определенную команду или файл каждую секунду или около того в фоновом режиме после выхода из терминала, вы можете попробовать эту простую небольшую вещь;
Это будет запускать scipt.sh каждые 5 секунд.
источник
Поставьте символ «&» после вашей команды.
например:
источник
/home/your/script.sh
как будто он не отделен от своего «родителя», а просто «заземлен». Используйте,nohup
чтобы отделить его по-настоящему.nohup
- который также записывает весь (теперь невидимый) вывод в файл, которыйnohup.out
находится в каталоге, из которого вы запустили команду.jobs
командой. Довольно часто я хочу иметь возможность вернуться к процессу оболочки после его создания.