Запустите команду в оболочке и продолжайте выполнять команду при закрытии сеанса
Я использую Putty для подключения к удаленному серверу. Я хочу знать, есть ли способ написать мои команды и позволить им продолжать работать после того, как я закрою сеанс с Putty. Причина этого в том, что я не хочу постоянно включать компьютер. Есть какой-либо способ сделать это?.
Обновление с решением
На мой вопрос, поскольку он представлен, лучшее решение - использовать одну из предоставленных команд, например nohup, потому что вам не нужно устанавливать никакого дополнительного программного обеспечения. Но если вы столкнулись с той же проблемой, используйте экран, установите его и используйте. Это удивительно.
Я выбрал ответ Нормана Рэмси как любимый, потому что предлагаю несколько решений, используя команды и экран. Но, пожалуйста, проверьте другие ответы, в частности, один из PEZ, тогда вы получите представление о том, что экран может сделать.
9 ответов
nohup
, disown
, а также screen
все хорошо, но screen
лучший, потому что в отличие от двух других, screen
позволяет отключиться от удаленного сервера, сохранить все работоспособным, а затем подключиться позже, чтобы увидеть, что происходит. С nohup
а также disown
Вы не можете возобновить взаимодействие.
экран! Это лучшее, что есть нарезанный хлеб. (Да, я знаю, что другие уже предложили это, но это так хорошо, что весь мир должен присоединиться и предложить это тоже.)
Экран похож на... ммм... как на VNC и т. п. для подключения к графическому интерфейсу, но для окон командной оболочки. Вы можете открыть несколько окон оболочки одновременно в одном сеансе экрана. Вы можете делать такие вещи, как:
- Начните сессию экранов, используя "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
,