заставить nohup писать кроме nohup.out

Я использовал приведенную ниже команду, чтобы хвост написать nohup.out, а также распечатать вывод на терминале.

nohup train.py & tail -f nohup.out

Однако мне не нужно использовать nohup для использования других имен файлов.

Когда я пытаюсь

nohup python train.py & tail -F vanila_v1.out

Я получаю следующее сообщение об ошибке.

tail: cannot open 'vanila_v1.out' for readingnohup: ignoring input and appending output to 'nohup.out': No such file or directory

Я также пробовал nohup python train.py & tail -F nohup.out > vanila_v1.txt

Тогда он не записывает вывод на стандартный вывод.

Как заставить nohup писать кроме nohup.out? Я не против одновременного написания двух разных файлов. Но чтобы отслеживать разные процессы, мне нужно, чтобы имя было другим. Спасибо.


person Aerin    schedule 09.08.2018    source источник


Ответы (1)


Вам нужно передать STDOUT и STDERR для команды nohup, например:

$ nohup python train.py > vanila_v1.out 2>&1 & tail -F vanila_v1.out

В этот момент процесс перейдет в фоновый режим и вы сможете использовать tail -f vanila_v1.out. Это один из способов сделать это.

Немного больше информации доступно здесь для STDOUT и STDERR ссылки. Вот еще один вопрос который использует команду tee, а не > для достижения того же за один раз.

person darthsidious    schedule 09.08.2018
comment
Привет. Спасибо за комментарий, но когда я пробую вашу команду, она не выводится на стандартный вывод. - person Aerin; 10.08.2018
comment
Причина, по которой я использовал tail, заключалась в том, чтобы распечатать на стандартный вывод. - person Aerin; 10.08.2018
comment
@Aaron Полная командная строка будет nohup python train.py > vanila_v1.out 2>&1 & tail -F vanila_v1.out. Здесь есть важный момент, который, я думаю, вы упускаете: части до и после & являются полностью независимыми командами (причем первая выполняется в фоновом режиме). Таким образом, вы выполняете перенаправления для первой команды как часть первой команды, а вторая (tail) команда считывается оттуда, куда была перенаправлена ​​первая. - person Gordon Davisson; 10.08.2018