Запустите команду в командной строке и продолжайте выполнять команду при закрытии сеанса

StackOverflow https://stackoverflow.com/questions/431521

  •  08-07-2019
  •  | 
  •  

Вопрос

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

Обновление с помощью решения

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

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

Это было полезно?

Решение

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

Другие советы

экран! Это лучшее блюдо после нарезанного хлеба.(Да, я знаю, что другие уже предлагали это, но это так здорово, что весь мир должен присоединиться и тоже предложить это.)

экран такой, ну, типа, ммммм ...например, использовать VNC или что-то подобное для подключения к графическому интерфейсу destop, но для командной оболочки Windows.У вас может быть открыто сразу несколько "окон" оболочки в одном сеансе экрана.Вы можете делать такие вещи, как:

  1. Запустите сеанс просмотра с помощью "screen -dR" (привыкайте использовать -dR)
    • запустите несколько команд в одном окне
    • Пресса CTRL-A,C чтобы создать новое окно, откройте там файл в vim
    • Пресса CTRL-A,0 чтобы вернуться к первому окну и выполнить какую-либо команду для файла, который вы только что отредактировали
    • CTRL-A, 1 чтобы вернуться к вашему сеансу vim
    • CTRL-A, C для еще одного окна и, возможно, выполните "sudo - su" (потому что вам просто нужна полная корневая оболочка)
    • CTRL-A, 0 и запустите фоновый процесс
    • CTRL-A, C чтобы создать еще одно окно, "завершите" журнал этого фонового процесса
    • CTRL-A, d затем отключите свой экран CTRL-D для отключения от сервера
    • Отправляйся в отпуск на три недели
    • Снова войдите на сервер и выполните команду "screen -dR", чтобы подключиться к вашему существующему сеансу screen
    • проверьте журнал в четвертом окне с помощью CTRL-A, 3 (такое ощущение, что ты был там и наблюдал за этим все время)
    • CTRL-A, 1 чтобы снова возобновить этот сеанс vim
    • Полагаю, теперь вы начинаете понимать картину?=)

Это похоже на волшебство.Я пользуюсь screen дольше, чем могу вспомнить, и до сих пор поражен тем, насколько это чертовски здорово.

Редактировать:Просто хочу упомянуть, что сейчас также есть tmux.Очень похоже экран, но имеет некоторые уникальные особенности, наиболее заметной из которых является разделение окон.

Попробуйте использовать экран GNU . Это позволяет вам иметь несколько открытых оболочек одновременно. И вы можете отключиться от этих запущенных оболочек (то есть закрыть сеанс с Putty), и они будут продолжать делать свое дело.

Вы ищете nohup .

См. ссылку на вики, чтобы узнать, как ее использовать.

экран - самый лучший.

Попробуй:

экран -dmS "MyTail", хвост -f /var/log/ системный журнал

Эта команда запускается в фоновом режиме.

Используйте screen -r для отображения списка и / или screen -r Mytail для входа в сеанс.

Если нескольким пользователям требуется доступ к одному и тому же сеансу, используйте:screen -rx MyTail, и оба или несколько пользователей совместно используют сеанс.

Если вы не можете использовать screen (потому что, например, ваш SSH-сеанс управляется программно), вы также можете использовать daemonize для запуска программы в качестве демона.

Один из способов, который мне подходит, это at .

at работает как cron, но для одноразовой работы. Я использовал его сегодня, чтобы загрузить большой файл, не поддерживая мою сессию.

например:

$ at 23:55
at> wget http://file.to.download.com/bigfile.iso
at> ^D  

Вы передаете at время (в будущем), и оно дает вам подсказку. Вы вводите команды, которые хотите запустить в это время, и нажимаете Ctrl + D. Вы можете выйти из сеанса, и он будет запускать команды в указанное время.

Википедия содержит дополнительную информацию о в .

./command & disown
ssh localhost && ./command && exit
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top