Как отправить процесс на задний план и на передний план?
Если я сделаю ping google.com &, процесс уходит в фон и продолжает показывать мне детали пинга. Я все еще могу использовать терминал с другими командами, но вывод команды ping и вывод других команд перепутаны (что не является проблемой), но я не могу завершить этот процесс ping вообще.
Для этого я хочу вывести его на передний план, а затем нажать Ctrl + C или что-то. Я пытался с помощью fg, но это тоже не сработало. Так как мне сделать ping google.com & вернуться на передний план после того, как я нажал клавишу возврата в конце команды ping?
2 ответа
fg является правильной командой для приоритетного задания, но если выполняется более одного задания, вам следует указать номер задания. Если вы печатаете только fgпоследняя заданная работа (рассматриваемая оболочкой как текущая) будет выведена на передний план.
Получить текущие вакансии:
$ jobs
[1]+ ping google.com &
Передний план задания, указав номер:
fg %1
Команда может быть разбита по выходным данным запущенного процесса, но она все равно будет работать, вы можете игнорировать прерывание.
Затем нажмите Ctrl+C, чтобы прервать и остановить процесс
Как уже упоминалось в комментарии, вы также можете отправлять сигналы по номеру работы, например kill %1
Для полноты, если вы не использовали & во время вызова процесса вы можете отправить его в фоновый режим, сначала заморозив Ctrl+Z, а затем набрав bg
Чтобы ответить на заданный вопрос, а именно: Как отправить вывод процесса на задний план и на передний план?, tee команда сделает:
В вычислениях tee - это команда в интерпретаторах (оболочках) командной строки, использующих стандартные потоки, которые считывают стандартный ввод и записывают его как в стандартный вывод, так и в один или несколько файлов, эффективно дублируя его ввод. https://en.wikipedia.org/wiki/Tee_(command)