Возможно ли для nohup записать вывод как в файл nohup.out, так и на экран / терминал?

23

Я использую bashоболочку. Я часто использую, nohupчтобы убедиться, что мои процессы не останавливаются при закрытии оболочки / терминала, который их запустил. Я использую синтаксис как:

nohup myprocess

При запуске nohupвыдает сообщение:

nohup: ignoring input and appending output to 'nohup.out'

Затем nohupбольше не выводит на экран; это все написано nohup.out.

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

Есть ли способ, которым я могу распечатать вывод на оба nohup.out (в случае, если я теряю подключение к Интернету и, следовательно, терминал, который начал процесс закрыт) и на экран? Спасибо за ваше время.

Эндрю
источник
3
Рассматривали ли вы использовать screenили tmuxвместо nohup?
Дероберт
@ derobert Спасибо. У меня есть screenв моей системе, но я никогда не использовал его. У меня нет tmuxв моей системе, но я могу попытаться получить это.
Андрей
2
Просто запустите screen/ tmuxмежду входом в систему и запуском myprocess. Затем отсоединить от него с prefix, d. screenПрефикс есть Ctrl-A, а tmuxпрефикс есть Ctrl-B. Вы можете выйти из системы, но до тех пор, пока машина остается включенной, ваша screen/ tmuxсессия тоже будет. В следующий раз, когда вы войдете в систему, вы можете снова подключить screen/ tmuxshell через screen -rили tmux attach.
jw013

Ответы:

20

Вы можете запустить

nohup yourprocess & tail -f nohup.out
choroba
источник
tail -f это круто, к сожалению, мой не может правильно отображать управляющие символы
Адам Хуньяди
Если вы хотите изменить nohup.out на что-то другое, скажем run.log, а затем следуйте ему, используйте nohup myprocess> run.log 2> & 1 & tail -f run.log
Prajwel
16

Доказательство.

nohup yourprocess 1>&2  | tee nohup.out &
Jhonathan
источник