Рассмотрим следующее nohup
выполнение:
nohup script.sh > script.out &
Есть ли способ выйти из терминала, восстановить соединение, вернуть процесс на передний план и взаимодействовать с ним с помощью клавиатуры?
command-line
process
background
nohup
Адам Матан
источник
источник
nohup не отключает команду от терминала, он игнорирует ваш скрипт
SIGHUP
и перенаправляетstdout/stderr
его в файлnohup.out
, чтобы команда могла продолжить работу в фоновом режиме после выхода из системы.nohup
не ставит автоматически команду, выполняемую в фоновом режиме. Это нужно делать явно, заканчивая командную строку символом&
.jobs
Можно распечатать текущие задания и их статус. Если командаjobs
не может найти ее, она больше не является дочерним процессом этой оболочки.В bash можно вернуть фоновое задание на передний план,
fg
даже если оно запущено с помощьюnohup
. Но это не изменит перенаправление вывода, которое все равно будет идти к файлуnohup.out
.Если вы закрываете оболочку / терминал или выходите из системы, ваша команда больше не является дочерней для этой оболочки. Это относится к
init
процессу. Если вы выполните поиск,pstree
вы увидите, что теперь он принадлежит процессу 1 (init
). Это не может быть возвращено на передний план, потому что передний план больше не существует.источник
If the command jobs cannot find it, then it is no longer a child process of that shell.
Это неправильно: попробуйте эту последовательность , чтобы увидеть , как:sleep 100 & disown ; echo Jobs:; jobs; echo Tree:; pstree -ap $$
. После этой команды вы все равно увидитеsleep
работу с тем же PID, распечатанным, когда вы его породили, покаjobs
ничего не напечатаете. Единственный способ, которым дочерний процесс может перестать быть дочерним, - это потерять своего родителя (тогда сирота становится потомкомinit
) или разветвиться + выйти (но тогда PID изменяется, поэтому это не первоначальный потомок).Я поддержу использование терминального мультиплексора, но tmux , а не screen. Экран, по сути, не поддерживается. Его конфигурация - темное искусство, вероятно, впервые записанное в приложении к Некрономикону. Попытка написать собственный конфиг - это проблеск Cthulu. Шутки в сторону. Посмотрите на файлы .screenrc людей . Чтобы быть уверенным, есть способы опосредовать мерзость экрана конфигурации. Бёбу делает замечательную работу как завеса между смертными пользователями и нечестивым кодом. Он поставляется с разумными цветами, интерфейсом меню и, возможно, самое главное, строкой состояния.
Но, как я уже сказал, я рекомендую tmux . Это все еще требует некоторой незначительной конфигурации, но это хорошо задокументировано , и ваш файл конфигурации не будет выглядеть как бред. Кроме того, вы начинаете с цветов и строки состояния. Сравните мои файлы screenrc и tmux.conf:
источник
Если вы просто хотите посмотреть вживую, что может подойти вам:
источник
Любая команда Linux может быть отправлена в фоновом режиме с
&
добавлением ' ' в конце.Для просмотра всех фоновых заданий вы можете выполнить
jobs
Здесь я выполняю 3 задания в фоновом режиме: zookeeper, kafka и mongo daemon. [1], [2] и [3] являются соответствующими номерами заданий для этих задач.
Вы можете вывести эту задачу на передний план, используя
fg %$taskNumber.
источник