Перенаправить nohup на стандартный вывод сценария - PullRequest
0 голосов
/ 30 мая 2019

У меня есть скрипт .sh, который через nohup запускает множество скриптов Python.

Я использую nohup, чтобы запускать их в фоновом режиме и избегать необходимости ввод нажатийкогда появляется сообщение " nohup: игнорирование ввода и добавление вывода в 'nohup.out' ".

nohup python script2.py 2> /dev/null &
nohup python script2.py 2> /dev/null &
[...]

Когда я запускаю этот .sh, я запускаю два скрипта Pythonна заднем плане, хорошо.

Эти скрипты Python генерируют файл журнала, который я получаю в std.stdout:

stream_config = logging.StreamHandler(sys.stdout)  <-- here
stream_config.setFormatter(formatter)
importer_logger.addHandler(stream_config)  

В связи с моей реализацией я хочу запустить эти nohupно отправляя стандартный вывод в PID 1

Я могу сделать это легко, не используя nohup следующим образом:

python tester.py > /proc/1/fd/1

Но как мне объединить это " не нажимайтевведите, чтобы продолжить"и" получить файл на стандартный вывод"?

Я попытался безуспешно:

nohup python tester.py > /proc/1/fd/1 2> /dev/null &
nohup python tester.py 2> /proc/1/fd/1 &

Заранее спасибо.

1 Ответ

1 голос
/ 30 мая 2019

Вы можете исправить вашу команду, используя оболочку для косвенного запуска вашей программы, чтобы вы могли перенаправить ее вывод, а не вывод nohup:

nohup bash -c "exec python tester.py > /proc/1/fd/1" 2> /dev/null &

Это не лучший вариант, но он по крайней мере исправляет проблему, из-за которой ваши попытки не увенчались успехом.

...