Я делаю операторы print в python , Я выполняю свой скрипт следующим образом:
python script.py > out.log nohup &
Не все операторы print отображаются в out.log
, но программа завершает работу нормально.
Эта строка кода находится в файл .sh
Я выполняю, выполнив ./ script.sh
Обновление: Журнал получает все данные, но не до тех пор, пока не будет напечатано определенное количество строк. Казалось бы, он буферизировал вывод.
Когда stdout отправляется на tty, он буферизируется по строке и сбрасывается каждую строку, но при перенаправлении в файл или канал он будет полностью буферизован и будет сбрасываться только периодически, когда вы переполняете буфер.
Вам нужно будет добавить вызовы sys.stdout.flush ()
после каждой строки, если вы хотите, чтобы вывод был виден немедленно, или полностью отключите буферизацию. См. Отключить буферизацию вывода , чтобы узнать, как сделать последнее:
- Используйте ключ командной строки
-u
- Оберните
sys.stdout
в объекте, который сбрасывается после каждой записи- Set
PYTHONUNBUFFERED
env varsys.stdout = os.fdopen (sys.stdout.fileno (), 'w', 0)
Вы пробовали:
?
Эти шаги могут помочь вам разобраться в проблеме.