Почему'> my.log 2> &1 и' причины задание для поддержки выходят из системы?

Это отличается от Вашей установки.

На частной установке (Вы получаете доступ к своему собственному полю) нет никакой проблемы. На установке компании (многие люди получают доступ ко многим различным полям от Вашего работодателя) существуют угрозы безопасности. Просто думайте о Картах памяти, SD-картах и так далее.

Для дальнейшего ответа нам нужно немного больше информации.

6
04.06.2012, 14:55
3 ответа

Обычно, если Вы помещаете что-то в фоновом режиме, что это продолжит работать даже за своими родительскими выходами оболочки. На самом деле я могу создать тестовый сценарий как это:

/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 это перестанет работать, и выход.

Если необходимо было перенаправить вывод в файл затем, очевидно, запись больше не перестанет работать, и сценарий продолжит работать.

8
27.01.2020, 20:25

> my.log 2>&1 не имеет никакого отношения к нему. Финал & вместо этого, имеет роль для выполнения процесса в фоновом режиме. Строка, возвращенная после ввода команды, должна показать число, которое является process id (pid). Можно использовать это число впоследствии, с kill команда, для завершения процесса, в случае необходимости.

Даже при том, что, для Вашего случая я выполнил бы все в a screen. Можно запустить экранное использование

screen -S <name>

и впоследствии выполните свою команду. Для отсоединения с экрана (возвращаются к начальному терминалу) необходимо нажать CTRL и в нажатии порядка A и D. Для повторного прикрепления экрана, Вы вводите:

screen -r <name>

Как это (выполнение задачи на экране), это будет работать, даже если пользователь зарегистрируется/разъединяет, и большая часть - то, что Вы добираетесь для наблюдения результатов с командой повторного прикрепления.

1
27.01.2020, 20:25

Давайте сравним бессмертный процесс с демоном. Демон не взаимодействует ни с каким пользователем или терминалом, и он умирает, когда init умирает (если он не останавливается нарочно).

можно "создать демона" с nohup и путем перенаправления к/dev/null std.out и std.err

nohup проверяют с помощью ping-запросов google.com 2>/dev/null>/dev/null - ЭТО БЕССМЕРТНО.

0
27.01.2020, 20:25

Теги

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