Почему print() из lua не попадает в лог?

Есть совершенно простой скрипт на lua, в котором периодически вызывается функция, содержащая print().
Если я запускаю скрипт как /usr/bin/lua5.1 /home/mqtt/client.lua, все нормально — то, что выдает print(), выводится в консоль.
Если я пишу обертку на sh вида
cd /home/mqtt
/usr/bin/lua5.1 /home/mqtt/client.lua 2>&1
и запускаю ее как ./fmp_client.sh, тоже все нормально.
Но стоит написать что-то вроде
cd /home/mqtt
/usr/bin/lua5.1 /home/mqtt/client.lua >> /home/mqtt/log/client.log 2>&1

или даже просто
cd /home/mqtt
/usr/bin/lua5.1 /home/mqtt/client.lua >> /home/mqtt/log/client.log

Как ничего не происходит — файл появляется, но в него ничего не попадает. Программы-супервизоры, через которые запускается ./fmp_client.sh(типа "pm2 start fmp_client.sh") делают тоже самое — файл запускают, но в логи ничего не пишут.
Обычные программы прекрасно с помощью такой конструкции(да и без нее, супервизоры сами по себе пишут логи из stdout) работают. Мой скрипт на lua — нет.
Заменя print() на io.write() не помогает.

Внимание, вопрос. Где я что не понимаю?
  • Вопрос задан
  • 595 просмотров
Решения вопроса 1
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Только что попробовал простой скриптик у себя, всё сработало.
Могу посоветовать заменить print() на io.write() и/или убрать буферизацию io.stdout:setvbuf("no")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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