Это отличается от Вашей установки.
На частной установке (Вы получаете доступ к своему собственному полю) нет никакой проблемы. На установке компании (многие люди получают доступ ко многим различным полям от Вашего работодателя) существуют угрозы безопасности. Просто думайте о Картах памяти, SD-картах и так далее.
Для дальнейшего ответа нам нужно немного больше информации.
Обычно, если Вы помещаете что-то в фоновом режиме, что это продолжит работать даже за своими родительскими выходами оболочки. На самом деле я могу создать тестовый сценарий как это:
/bin/sh -c 'while true; do echo hi; sleep 5; done' &
и затем выйдите из оболочки и использования ps
Я вижу, что это все еще работает, навсегда, пока я не уничтожаю его.
Существует одно различие между перенаправлением вывода и нет: если Вы не перенаправляете вывод, и Вы выходите из своей оболочки, то stdout/stderr дескрипторы файлов закрываются и в следующий раз, когда Вы пытаетесь записать в них, операция записи перестанет работать. Если Ваш сценарий проверяет на это или работает с -e
(выход на ошибке), набор опции, затем Ваш сценарий остановится. Сравните поведение вышеупомянутого с этой версией:
/bin/sh -c 'while true; do echo hi || exit 1; sleep 5; done' &
или
/bin/sh -ec 'while true; do echo hi; sleep 5; done' &
Если Вы оставляете это выполнение, выходите из оболочки и использования ps
Вы будете видеть это, когда это попытается работать echo
это перестанет работать, и выход.
Если необходимо было перенаправить вывод в файл затем, очевидно, запись больше не перестанет работать, и сценарий продолжит работать.
> my.log 2>&1
не имеет никакого отношения к нему. Финал &
вместо этого, имеет роль для выполнения процесса в фоновом режиме. Строка, возвращенная после ввода команды, должна показать число, которое является process id
(pid). Можно использовать это число впоследствии, с kill
команда, для завершения процесса, в случае необходимости.
Даже при том, что, для Вашего случая я выполнил бы все в a screen
. Можно запустить экранное использование
screen -S <name>
и впоследствии выполните свою команду. Для отсоединения с экрана (возвращаются к начальному терминалу) необходимо нажать CTRL
и в нажатии порядка A
и D
. Для повторного прикрепления экрана, Вы вводите:
screen -r <name>
Как это (выполнение задачи на экране), это будет работать, даже если пользователь зарегистрируется/разъединяет, и большая часть - то, что Вы добираетесь для наблюдения результатов с командой повторного прикрепления.
Давайте сравним бессмертный процесс с демоном. Демон не взаимодействует ни с каким пользователем или терминалом, и он умирает, когда init умирает (если он не останавливается нарочно).
можно "создать демона" с nohup и путем перенаправления к/dev/null std.out и std.err
nohup проверяют с помощью ping-запросов google.com 2>/dev/null>/dev/null - ЭТО БЕССМЕРТНО.