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

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

Обновление с решением

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

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

9 ответов

Решение

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

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

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

  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, чтобы создать еще одно окно, "tail -f" - журнал для этого фонового процесса.
    • CTRL-A, d - отключить экран, затем CTRL-D - отключить от сервера.
    • Уехать в отпуск на три недели
    • Войдите на сервер снова и введите "screen -dR", чтобы подключиться к существующему сеансу экрана.
    • проверьте журнал в четвертом окне с помощью CTRL-A, 3 (как будто вы там постоянно смотрите его)
    • CTRL-A, 1, чтобы снова взять этот сеанс VIM
    • Я полагаю, вы начинаете понимать картину сейчас? знак равно

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

РЕДАКТИРОВАТЬ: Просто хочу отметить, что теперь есть и Tmux. Очень похоже на экран, но имеет некоторые уникальные особенности, разделяющие окна, являющиеся наиболее выдающимися.

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

То, что вы ищете, это nohup.

Смотрите вики-ссылку о том, как его использовать.

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

Пытаться:

screen -dmS "MyTail" tail -f / var / log / syslog

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

Используйте screen -r для отображения списка или экран -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. Вы можете выйти из сеанса, и он будет запускать команды в указанное время.

Википедия имеет больше информации о at,

./command & disown
ssh localhost && ./command && exit
Другие вопросы по тегам