Как я могу сохранить процесс после закрытия сессии замазки?


41

Я использую замазку для взаимодействия с сервером Linux. Я начал процесс, используя замазку. Процесс запущен и займет 5-6 часов. Я хочу, чтобы этот процесс продолжался после закрытия сессии замазки. Как я могу сохранить этот процесс после закрытия сессии замазки? Я не хочу постоянно держать компьютер включенным. Есть какой-либо способ сделать это?.

Ответы:


32

Я использую экран для такого рода вещей. На самом деле иногда я просто оставляю это на некоторое время, чтобы вернуться к тому, что я делал.


Сейчас процесс запущен, работает ли он для этого процесса? Я спрашиваю, потому что процесс находится в середине, и я не хочу перезапускать его сейчас

+1 за упоминание моего бесспорного любимого инструмента командной строки. Это драгоценный камень в подобных ситуациях.
Нуфал Ибрагим

@ Нуфал, полностью! @prakash, вам нужно запустить экран, прежде чем вы сможете запустить какие-либо процессы
ziya

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

ссылка больше не работает
Malky.Kid

31
^Z
bg %1
disown -h %1

'-H' делает процесс невосприимчивым к SIGHUP после завершения сеанса.


3
Обратите внимание, что нет способа «переучитать» или «принять» процесс - как только вы это сделаете, вы никогда не сможете вернуть его на передний план. Если процесс представляет собой пакетное задание, работающее для создания некоторых файлов, это не должно иметь значения.

19

Используйте nohupкоманду. Просто добавьте к вашей команде префикс, и он демонизирует их, чтобы они не останавливались, когда вы выходите из системы / завершаете сеанс оболочки. Стандартный вывод по умолчанию будет в файле с именем nohup.out. Проверьте страницу руководства для nohup(1)получения дополнительной информации.


процесс запущен, работает ли он для этого процесса? Я спрашиваю, потому что процесс находится в середине, и я не хочу перезапускать его сейчас?

Слишком поздно ... по крайней мере, для нормальной работы. Неудивительно, что если вы присоедините к процессу отладчик, а затем настроите его с помощью соответствующего набора системных вызовов, то, возможно, вы сможете поместить его в фоновый режим. Но это не то, что можно было бы рекомендовать - я бы не стал беспокоиться, например, и у меня есть хоть какое-то представление о том, что может быть связано. Теперь у вас есть два варианта ... либо оставаться на связи, пока он не завершится, либо остановить текущий процесс и перезапустить новый, используя nohup.
Джонатан Леффлер

1
Если вы используете bash (и я думаю, что zsh), вы можете использовать решение Тома Андерсона и disownпроцесс, чтобы он продолжал работать даже после вашего отключения.
Нуфал Ибрагим

Да, отречение выглядит как способ пойти на уже запущенную работу. Это выполнимо, потому что оболочка, которая запустила задание, может манипулировать необходимыми свойствами.
Джонатан Леффлер

5

Начать процесс с nohup "processname" &. Вы также можете отсоединить его с помощью screenили tmux.


3

Вышеуказанные решения достаточно хорошо описаны, однако ни одно из них не сработало для меня, пока я также не отредактировал конфигурацию PuTTY так:

Включить поддержку активности TCP (опция SO_KEEPALIVE)

Я не видел этого нигде, а просто нашел методом проб и ошибок.


1

Ctrl + z Отправить текущий процесс в фоновом режиме.

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


4
Обычно, control-z переводит процесс в состояние приостановленной анимации; команда bg переводит его в фоновый режим. Однако это также сохраняет процесс подключенным к терминалу, тогда как nohup отсоединяет его от терминала и, следовательно, позволяет замазке отключаться, а процесс переживает отключение.
Джонатан Леффлер

Я обнаружил, что использование '&' для отправки в фоновый режим работает с putty, но когда я подключаюсь напрямую через ssh из оболочки, если я закрываю соединение, фоновый процесс уничтожается. Есть идеи почему?
Zardoz89

0

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

Это долгосрочное решение, конечно, не для текущего процесса.


0

Вы можете использовать &после ссылки.

Пример:

[localhost ~ ]# wget http://www.link.com/download/download.zip &

Вопрос был не о ссылке, вы имеете в виду добавить &знак после командной строки?
Дэнни

0

Как сохранить работу weblogic после закрытия окна замазки:

Простые шаги: после авторизации через putty выполните следующие шаги:

  1. Перейдите в каталог на сервере, где расположена startWebLogic.shкоманда.
  2. Введите команду screenи нажмите Enter(откроется новый экран).
  3. На новом экране введите команду запуска ./startWebLogic.sh.
  4. Нажмите Ctrl+ aзатем нажмите d(не удерживая Ctrl); Вы вернетесь к предыдущему экрану.
  5. Если вы хотите вернуться на экран журнала сервера, введите команду screen -r.

0

если это процесс для nodejs, и это может быть вашим намерением, поскольку вы изначально разместили это в stackoverflow. Я изначально искал этот вопрос сам. Я нашел pm2, и это удивительно. Другие ответы могут помочь для общей замазки, но если это зависит от конкретного узла, это, безусловно, лучший ответ, так как имеется встроенный мониторинг, а настройка просто

$ npm install pm2 -g
$ cd yourappdirectory

«PM2 - это менеджер производственных процессов для приложений Node.js со встроенным балансировщиком нагрузки. Он позволяет вам поддерживать приложения в актуальном состоянии, перезагружать их без простоев и облегчать общие задачи системного администратора.

Запустить приложение в производственном режиме так же просто, как:

$ pm2 start yourappname.js

«используя команду save and freeze, вы разрешаете процессам запускаться автоматически при перезагрузке»

$ pm2 save
$ pm2 freeze

для мониторинга его

$ pm2 monit

и перезапускает

$ pm2 restart yourappname

также для прямой регистрации информации

$ pm2 logs

Теперь я могу легко запустить два окна замазки вместо того, чтобы использовать окно браузера digialocean (которое я не мог прокрутить вверх); Для получения дополнительной информации см основной GitHub

https://github.com/Unitech/pm2

это удивительно.


Можете ли вы объяснить немного больше о том, какой PM2 является и то , что команды , которые вы показать делать? Пожалуйста, не отвечайте в комментариях; отредактируйте  свой ответ, чтобы сделать его более понятным и полным.
G-Man говорит «Восстановить Монику»

Добавлено немного больше документации для сообщества. Я хотел бы найти pm2 лет назад.
Sasy решений
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.