#google-cloud-platform
#google-cloud-platform
Вопрос:
У меня есть скрипт, запуск которого на экземпляре виртуальной машины GCP с 8 процессорами должен занять около 8 часов или около того. Я немного новичок в облачных вычислениях и немного нервничаю, настраивая ssh, запуская свой файл python и уходя.
Если я подключусь по ssh к экземпляру виртуальной машины GCP, запущу скрипт python и уйду, продолжит ли он выполняться, даже если мой компьютер перейдет в спящий режим? Моя интуиция говорит «нет», поскольку, похоже, в этом весь смысл облачных вычислений, но я хочу быть уверен. Спасибо.
Ответ №1:
Вы правы, если ваш компьютер перейдет в спящий режим и ваш сеанс ssh закроется, ваш скрипт остановится.
Чтобы предотвратить это, вы можете использовать amp;
а затем disown
перевести свой скрипт в фоновый режим и удалить процесс из управления заданиями командной строки, но при этом он все равно останется подключенным к терминалу.
Например:
- Я запустил свой скрипт
./script.sh amp;
- Мы получим идентификатор задания, потому что оно начнет выполняться в фоновом режиме:
[1] 7812
- С помощью этого JobID я могу запустить
disown
команду для удаления процесса из управления заданиями командной строки:
disown 7812
На этом этапе вы можете закрыть свой сеанс ssh, и скрипт продолжит работу.
В качестве альтернативы вы также можете использовать Screen
. При вызове screen создается единственное окно с оболочкой в нем (или указанной командой), а затем удаляется с вашего пути, чтобы вы могли использовать программу как обычно.
Экран будет продолжать работать, даже если ваш сеанс будет отключен. При повторном подключении к серверу вы можете повторно подключиться к сеансу screen, и все будет так, как будто ничего не произошло, это хороший вариант, если вы хотите увидеть результаты вашего скрипта в стандартном выводе.
Вы можете ознакомиться с официальной документацией по следующей ссылке. Кроме того, вы можете воспользоваться следующим руководством, чтобы узнать, как использовать screen.
Кроме того, вы можете посмотреть следующий пост, где сообщество объясняет разницу между nohup
, disown
и amp;
.
Я надеюсь, вы найдете эту информацию полезной.
Комментарии:
1. Я начал использовать
screen
сегодня. Это делает именно то, что мне нужно.2. Я думаю, что Screen — очень хороший вариант, я нашел другое руководство. Вы можете проверить это на случай, если вам понадобятся дополнительные примеры для экрана. Остаюсь живым с помощью Screen
Ответ №2:
Да, если вы закроете сеанс SSH, ваш скрипт остановится. Обычно я использую nohup
command для этого
nohup <command param> amp;
Я предполагаю, что вы работаете под Linux
Комментарии:
1. Ну, я на Windows, но когда я подключаюсь к своему экземпляру по ssh, он выдает мне терминал на базе Linux (я думаю). Я проведу исследование
nohup
, попробую и сообщу об этом. Спасибо.2. будет
nohup
работать и для облачной консоли Google IOS? т. Е., если я выполню команду с помощьюnohup
, а затем закрою приложение, оно все равно будет запущено?3. nohup — это команда Linux, не зависящая от IOS.