Действительно ли nohup неопределенен?

Попытка:

ssh host 'something > file'

Вот изобретенная демонстрация способа обработать перенаправление, каналы и кавычки:

ssh host date -d yesterday \| awk "'{print $1}'" \> 'file" "with\ spaces.out'

Вместо канала и перенаправления оставляют того, чтобы содержаться в полном внешнем наборе кавычек, уменьшая потребность выйти из одного уровня кавычек. Одинарные кавычки для команды AWK защищены двойными кавычками, которые окружают их. Имя файла могло быть защищено таким же образом, но здесь я показываю, как одинарные кавычки защищают двойные кавычки и Escape.

4
11.05.2013, 09:49
2 ответа

Nohup устанавливает поведение по умолчанию сигнала ЗАВИСАНИЯ, который мог бы быть переопределен приложением. Другие сигналы от других процессов с разрешением (корень или тот же пользователь) или плохое поведение (seg отказы, ошибки шины) могут также вызвать завершение программы. Ограничения ресурса (ulimit) могут также закончить программу.

Запрещая их, Ваш бесконечный цикл мог бы хорошо выполнить очень долгое время.

13
27.01.2020, 20:46

Следующее является двумя важными строками от исходного кода nohup.

(void)signal(SIGHUP, SIG_IGN); //Проигнорируйте SIGHUP

execvp(*argv, argv); //Выполните команду.

Таким образом, пока Ваше приложение не называет что-то как

signal (SIGHUP, SIG_DFL); //ИЛИ некоторый пользовательский обработчик сигналов

При нормальных обстоятельствах это продолжит работать, пока Вы не перезапустите машину или уничтожите ее сами.
Это могло бы также быть завершено в случаях, на которые указывает kmarsh.

4
27.01.2020, 20:46

Теги

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