Почему при запуске ruby-скрипта через nohup не пишется в nohup.out

Я пытаюсь запустить ruby-скрипт с помощью nohup:

nohup ruby ​​script.rb &

Это занимает несколько часов, но его ход регистрируется через puts.

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

Что я делаю не так?


person Chris Kinniburgh    schedule 06.09.2017    source источник


Ответы (1)


Я не знаком с запуском команд через nohup, но подходя к этому из-за проблемы типа «я вывожу контент в файл, и он записывается только после выхода скрипта», это вызвано буферизацией вывода.

Так что очень вероятно, что при запуске через nohup (и, таким образом, перенаправлении вывода puts на nohup.out) вы потеряли синхронизацию. Иногда вам может понадобиться flush или включить < a href="http://ruby-doc.org/core-2.3.1/IO.html#method-i-sync" rel="noreferrer">sync. Поскольку puts "эквивалентно $stdout.puts":

$stdout.flush # run this, occasionally
# or just
$stdout.sync = true
person Simple Lime    schedule 06.09.2017