Рассмотрите следующее nohup
выполнение:
nohup script.sh > script.out &
Существует ли способ выйти из системы терминал, снова соединиться, возвратить процесс переднему плану и взаимодействовать с ним с помощью клавиатуры?
Если бы Вы хотели запустить сценарий, иметь выполненный без вывода, беспокоящего Ваш терминал и затем поднять его позже для взаимодействия с ним, то Вы могли бы хотеть смотреть на оконечный мультиплексор. В зависимости от Вашей системы я рекомендовал бы tmux
или screen
. Можно найти некоторую информацию о том, как использовать их в ссылках ниже:
tmux:
экран:
править: добавленные ссылки для tmux капсюлей
Я буду второй использование оконечного мультиплексора, но tmux, не экранируют. Экран, во всех отношениях, не сохраняется. Его конфигурация является темным искусством, вероятно, сначала зарегистрированным в приложении Necronomicon. Попытка записать Вашу собственную конфигурацию как проблеск Cthulu. Серьезно. Озирайтесь в .screenrc файлах людей. Безусловно, существуют способы добиться отвращения экрана конфигурации flle. Byobu делает замечательное задание как завесу между смертными пользователями и безобразным кодом. Это идет с разумными цветами, интерфейсом меню, и возможно самое главное, строка состояния.
Но поскольку я сказал, я рекомендую tmux вместо этого. Все еще требуется некоторая незначительная конфигурация, но это хорошо документируется, и Ваш файл конфигурации не будет похож на мусор. Кроме того, Вы начинаете с цветами и строкой состояния. Сравните мой screenrc и tmux.conf файлы:
Если Вы просто интересуетесь выглядящей живой шляпой вывод, это могло бы подойти Вам:
nohup script.sh 2>&1 script.out &
# later:
tail -f script.out
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
). Это не может быть возвращено переднему плану, потому что передний план больше не существует.
Любая команда 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.