Как мне покраснеть nohup.out чаще?

В Ubuntu 10.04 у меня есть длинная программа на Python, которая печатает кучу выходных данных; Я запускаю это под "nohup". Тем не менее, он ждет до конца, чтобы поместить весь текст в nohup.out. Когда я запускаю подобные программы под FreeBSD, каждая строка отправляется на nohup.out. Есть ли настройка Ubuntu, которую я могу установить, чтобы получить вывод быстрее?

2 ответа

Решение

Да, это связано со способом буферизации stdout по умолчанию в Linux. Вам нужно явно запустить setbuf() в коде, чтобы переопределить это поведение.

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

$ ( my_cmd > ~/output.log 2>&1 & ) 

Вы также можете использовать disown для аналогичного эффекта на текущую работу.

Поскольку ваша программа - python, вы можете запустить ее с помощью python -u. В качестве альтернативы вы можете найти полезную программу unbuffer.

Другие вопросы по тегам