Принесите nohup задание к переднему плану

Рассмотрите следующее nohup выполнение:

nohup script.sh > script.out &

Существует ли способ выйти из системы терминал, снова соединиться, возвратить процесс переднему плану и взаимодействовать с ним с помощью клавиатуры?

14
задан 19 January 2016 в 10:49

5 ответов

Если бы Вы хотели запустить сценарий, иметь выполненный без вывода, беспокоящего Ваш терминал и затем поднять его позже для взаимодействия с ним, то Вы могли бы хотеть смотреть на оконечный мультиплексор. В зависимости от Вашей системы я рекомендовал бы tmux или screen. Можно найти некоторую информацию о том, как использовать их в ссылках ниже:

tmux:

экран:

править: добавленные ссылки для tmux капсюлей

7
ответ дан 23 November 2019 в 02:55

Я буду второй использование оконечного мультиплексора, но tmux, не экранируют. Экран, во всех отношениях, не сохраняется. Его конфигурация является темным искусством, вероятно, сначала зарегистрированным в приложении Necronomicon. Попытка записать Вашу собственную конфигурацию как проблеск Cthulu. Серьезно. Озирайтесь в .screenrc файлах людей. Безусловно, существуют способы добиться отвращения экрана конфигурации flle. Byobu делает замечательное задание как завесу между смертными пользователями и безобразным кодом. Это идет с разумными цветами, интерфейсом меню, и возможно самое главное, строка состояния.

Но поскольку я сказал, я рекомендую tmux вместо этого. Все еще требуется некоторая незначительная конфигурация, но это хорошо документируется, и Ваш файл конфигурации не будет похож на мусор. Кроме того, Вы начинаете с цветами и строкой состояния. Сравните мой screenrc и tmux.conf файлы:

4
ответ дан 23 November 2019 в 02:55

Если Вы просто интересуетесь выглядящей живой шляпой вывод, это могло бы подойти Вам:

nohup script.sh 2>&1 script.out &
# later:
tail -f script.out
0
ответ дан 23 November 2019 в 02:55

nohup не разъединяет команду от терминала, он заставляет Ваш сценарий проигнорировать SIGHUP, и перенаправления stdout/stderr в файл nohup.out, так, чтобы команда могла продолжить работать в фоновом режиме после того, как Вы выйдете из системы.

nohup автоматически не помещает команду, которую это выполняет в фоновом режиме. Нужно сделать это явно путем окончания командной строки &.

$ nohup ./script.sh &
[1] 3390
$ nohup: ignoring input and appending output to ‘nohup.out’

jobs может распечатать в настоящее время рабочие задания и их состояние. Если команда jobs не может найти его, затем это больше не дочерний процесс той оболочки.

$ jobs 
[1]+  Running                 nohup ./script.sh &

Можно быть, возвращают фоновое задание переднему плану в использовании удара fg даже если это выполняется с nohup. Но это не изменит перенаправление вывода, которое будет все еще идти в файл nohup.out.

$ fg
nohup ./script.sh

При закрытии оболочки/терминала или выхода команда больше не является ребенком той оболочки. Это принадлежит init процесс. Если Вы ищете в pstree Вы будете видеть, что это теперь принадлежит процессу 1 (init). Это не может быть возвращено переднему плану, потому что передний план больше не существует.

19
ответ дан 23 November 2019 в 02:55

Любая команда Linux может быть отправлена в фон с'&'добавленный в последнем.

Для просмотра всех фоновых заданий можно выйти jobs

jobs
[1]  + suspended  nohup sh zookeeper-server-start.sh ../config/zookeeper.properties
[2]    running    nohup sh kafka-server-start.sh ../config/server.properties
[3]  - running    nohup sudo mongod --dbpath=/var/lib/mongodb

Здесь я выполняю 3 задания в фоне: служитель зоопарка, kafka и демон монго. [1], [2] и [3] соответствующие числа задания для этих задач.

Можно принести им задачу к приоритетному использованию fg %$taskNumber.

0
ответ дан 23 November 2019 в 02:55

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

Похожие вопросы: