Когда я использую nohup и & для работы в фоновом режиме, повлияет ли это на мои выходные данные?

Некоторые программы (, в том числе все, что вы поместили в свой скрипт,)определяют, является ли вывод терминалом или файлом, и отключают цвета в этом случае. Если вы запустите свой скрипт с помощью программы script, это позволит избежать этой проблемы, захватив все символы в файл с именем typescript, например,

script-cскрипт

(где последний, конечно, ваш сценарий)и более поздние

cat typescript

В зависимости от системы программаscriptможет использовать разные аргументы. Первый (со значением по умолчаниюtypescript)— это место, где программаscriptзаписывает свой вывод:

  • тот, что в Debian/Ubuntu/и т. д., находится в пакете с именем «bsdutils», и команда должна быть задана с использованием опции -c, например, «script-c скрипт ».

  • в системеBSDпараметр-cотсутствует, и команда может быть задана как параметры после файла , например,. "scripttypescript скрипт ".

Хотя поддерживается в (вероятно )каждой системе POSIX,scriptне является частью POSIX .

0
08.05.2020, 21:43
1 ответ

Nohup сообщает вам, что запущенный фоновый процесс отключил эти потоки. Это потому, что нельзя гарантировать, что они не будут использованы для завершения процесса (, например. SIGINT для стандартного ввода или SIGPIPE, если стандартный ввод подключен к каналу ).

Одним из побочных эффектов является то, что если python пишет сообщения об ошибках, они будут вставлены в ваш обычный вывод (в случайных местах из-за буферизации ), что может нарушить дальнейшую обработку этих данных.

Безопасная процедура — выполнять эти перенаправления самостоятельно. стандартный ввод < /dev/null, stderr 2>&1 или 2>/dev/null или 2>some.log.

1
28.04.2021, 23:15

Теги

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