У меня есть скрипт .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
Но как я могу объединить эти «не нажимайте Enter, чтобы продолжить» и «вывести файл на стандартный вывод»?
Я пробовал это без везения:
nohup python tester.py > /proc/1/fd/1 2> /dev/null &
nohup python tester.py 2> /proc/1/fd/1 &
Заранее спасибо.
Вы можете исправить свою команду, используя оболочку для косвенного запуска вашей программы, чтобы вы могли перенаправить ее вывод, а не вывод nohup:
nohup bash -c "exec python tester.py > /proc/1/fd/1" 2> /dev/null &
Это не лучший вариант, но он, по крайней мере, устраняет проблему, из-за которой ваши попытки не увенчались успехом.