Запустите команду в оболочке и продолжайте выполнение команды при закрытии сеанса
Я использую Putty для подключения к удаленному серверу. Я хочу знать, есть ли способ написать мои команды и позволить им продолжать работать после закрытия сеанса с помощью Putty. Причина этого в том, что я не хочу постоянно держать компьютер включенным. Есть ли способ сделать это?
Обновить с помощью решения
Для моего вопроса, как представляется, лучшим решением является использование одной из команд, таких как nohup, потому что вам не нужно устанавливать какое-либо дополнительное программное обеспечение. Но если вы используете одну и ту же проблему, используйте экран, установите его и используйте. Удивительно.
Я выбрал ответ Нормана Рэмси как фаворит, потому что предлагаю несколько решений с помощью команд и экрана. Но, пожалуйста, проверьте другие ответы, особенно на PEZ, затем вы получите представление о том, что экран способен делать.
Ответы
Ответ 1
nohup
, disown
и screen
все хороши, но screen
является лучшим, потому что в отличие от двух других screen
позволяет вам отключиться от удаленного сервера, сохранить все работает, а затем снова подключиться позже, чтобы увидеть, что происходит. С nohup
и disown
вы не можете возобновить взаимодействие.
Ответ 2
экран! Это лучшая вещь, поскольку нарезанный хлеб. (Да, я знаю, что другие уже предложили это, но это так хорошо, что весь мир должен присоединиться и предложить его тоже.)
экран похож на, например, ummmm... например, используя 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. Очень нравится экран, но имеет некоторые уникальные функции, разбивая окна, которые являются наиболее заметными.
Ответ 3
Попробуйте использовать экран GNU. Это позволяет сразу открыть несколько оболочек. И вы можете отключиться от тех запущенных оболочек (т.е. Закрыть сеанс с Putty), и они будут продолжать делать свое дело.
Ответ 4
То, что вы ищете, это nohup.
См. ссылку на wiki, как ее использовать.
Ответ 5
лучший экран.
Try:
screen -dmS "MyTail" tail -f/var/log/syslog
Эта команда запуска в фоновом режиме.
Используйте экран -r для отображения и/или экрана -r Mytail для входа в сеанс.
Если пользователям больше требуется доступ к одному сеансу, используйте: screen -rx MyTail, и обе или более пользователи используют сеанс.
Ответ 6
Если вы не можете использовать screen
(потому что, например, ваш сеанс SSH программируется), вы также можете использовать daemonize для запуска программы в качестве демона.
Ответ 7
Один из способов, который хорошо работает для меня, - at
.
at
работает как cron, но для одноразовой работы. Я использовал его сегодня, чтобы загрузить большой файл без необходимости поддерживать сеанс.
например:
$ at 23:55
at> wget http://file.to.download.com/bigfile.iso
at> ^D
Вы передаете at
время (в будущем), и оно дает вам подсказку. Вы вводите команды, которые хотите запустить в это время, и нажмите ctrl + d. Вы можете выйти из сеанса и запустить команды в указанное время.
Wikipedia имеет дополнительную информацию о at
.
Ответ 8
./command & disown
Ответ 9
ssh localhost && ./command && exit