Как запустить процесс в фоновом режиме с выводом в файл после некоторых действий ввода / вывода на переднем плане на Linux?

Я запускаю процесс и взаимодействую с ним (некоторые действия ввода) на переднем плане, затем он работает в течение длительного времени, поэтому я включил его в bg и вышел из системы. Я хочу перенаправить сообщения об ошибках в текстовый файл, в то время как процесс в фоновом режиме, и я не подключен к машине. Как я могу это реализовать?

UPD: мне нужно перенаправить вывод, когда процесс уже запущен, потому что изначально мне нужен вывод на консоль.

3 ответа

Решение

Вы можете запустить процесс в интерактивном режиме, но перенаправить сообщения об ошибках через

  my_program 2> output.txt

и теперь вы можете дождаться его вывода, взаимодействовать с ним, а затем поместить его в фоновый режим, сохраняя перенаправление стандартной ошибки.

SSH в, запустить процесс, а потом забыть об этом? Это звучит как работа для Tmux или экрана. Вы можете оставить процесс запущенным, отсоединиться от tmux и выйти из него без выхода.

Вы все еще можете перенаправить стандартную ошибку в текстовый файл, используя 2> log.txt когда вы запускаете свою команду, и даже tail -f файл в другом окне tmux.

Вы хотите начать с сообщений об ошибках, поступающих (без буферизации) в текстовый файл, затем вы можете смотреть на них как хотите (см. "Tail -f"). Предполагая, что оболочка с управлением заданиями, вы можете приостановить текущее задание с помощью Ctrl-Z, а затем "bg", чтобы поместить его в фоновый режим.

Другие вопросы по тегам