От man nohup:
Если стандартный ввод является терминалом, перенаправьте его из / dev / null. Если стандартный вывод является терминалом, добавьте вывод, nohup.out если возможно, в $HOME/nohup.outпротивном случае. Если стандартной ошибкой является терминал, перенаправьте его на стандартный вывод. Чтобы сохранить вывод в файл, используйте nohup COMMAND > FILE.
(полностью пересмотрено на основе комментариев)
При выходе из оболочки или закрытии терминала дочерние процессы будут отправлены SIGHUP (зависание, имя происходит со времени, когда терминалы будут подключаться к компьютеру UNIX), чтобы сообщить им, что терминал не больше подключен Кроме того, когда завершится процесс оболочки, потоки stdin, stdout и stderr дочернего процесса будут закрыты. Обычно это приводит к смерти детского процесса. Обычно это хорошо, потому что позволяет избежать запуска процессов без пользователя.
Цель nohupпрограммы - сохранить процесс работоспособным даже после завершения оболочки и отключения терминала. Таким образом, направление его вывода на терминал полностью противоречит цели. Мой первоначальный ответ ( nohup COMMAND | cat) не помог, потому что: когда терминал закрыт, вывод cat закрывается, и cat умирает, что разрывает канал и отправляет SIGPIPE процессу nohup, что приводит к его смерти. Я ответил на вопрос, не думая о цели.
Для достижения цели запустите, nohup COMMAND > FILEчтобы выбрать имя файла для прямого вывода. Затем используйте tail -f FILEдля просмотра вывода на терминале.
Точно так же можно использовать следующую конструкцию оболочки: COMMAND >FILE 2>&1 </dev/null &для запуска команды, чьи потоки stdio не подключены к терминалу и могут продолжать работать после закрытия терминала. Кроме того, в zsh запустите встроенную оболочку, disownчтобы сказать zsh, что нужно покинуть процесс, а не убивать его по окончании оболочки.