Если я запущу скрипт через ssh на GCP, будет ли он прерван, если мой локальный компьютер перейдет в спящий режим?

#google-cloud-platform

#google-cloud-platform

Вопрос:

У меня есть скрипт, запуск которого на экземпляре виртуальной машины GCP с 8 процессорами должен занять около 8 часов или около того. Я немного новичок в облачных вычислениях и немного нервничаю, настраивая ssh, запуская свой файл python и уходя.

Если я подключусь по ssh к экземпляру виртуальной машины GCP, запущу скрипт python и уйду, продолжит ли он выполняться, даже если мой компьютер перейдет в спящий режим? Моя интуиция говорит «нет», поскольку, похоже, в этом весь смысл облачных вычислений, но я хочу быть уверен. Спасибо.

Ответ №1:

Вы правы, если ваш компьютер перейдет в спящий режим и ваш сеанс ssh закроется, ваш скрипт остановится.

Чтобы предотвратить это, вы можете использовать amp; а затем disown перевести свой скрипт в фоновый режим и удалить процесс из управления заданиями командной строки, но при этом он все равно останется подключенным к терминалу.

Например:

  1. Я запустил свой скрипт

./script.sh amp;

  1. Мы получим идентификатор задания, потому что оно начнет выполняться в фоновом режиме:

[1] 7812

  1. С помощью этого 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.