1

У меня есть пара программ на python, например, одна, которая проверяет, применима ли гипотеза Коллатца для заданного числа или нет, и записывает вывод в файл (он работает на Raspberry Pi).

Хотя я знаю, что он не был опровергнут до квадриллиона или чего-то подобного, я просто хочу использовать его для практики программирования. Хотя я могу настроить его запуск при загрузке RPi и запустить его через сеанс ssh, основная причина, по которой я использую Pi, заключается в том, что он может доходить до 1 миллиарда, при этом не потребляя много энергии, даже если производительность не практично

Когда я запускаю его через сеанс SSH, набирая python col.py , он прекращает работу, если я прекращаю сеанс. Как я могу запустить сценарий, используя SSH, чтобы он не останавливался, когда я прекращаю сеанс (продолжается до его завершения или выключения RPi)?

2 ответа2

5

Использование screen хорошо, но nohup с & должно работать.

Так что в вашем случае просто запустите команду так:

nohup python col.py &

Просто чтобы вы понимали, как работает каждый элемент:

  • nohup: это означает «без зависания», что означает, что даже если ваш терминальный сеанс отключен, процесс, связанный с этой командой nohup будет продолжать работать.
  • &: Этот амперсанд в этом контексте говорит оболочке выполнить команду, которая предшествует ему, как фоновый процесс.

Если бы вы просто запустили это:

nohup python col.py

python col.py будет работать, но не как фоновый процесс; это был бы процесс переднего плана, запирающий вас в терминал. И если вы запустили это:

python col.py &

python col.py будет работать в фоновом режиме, но как только вы выйдете из системы, команда python col.py прекратит работу.

Выполнение nohup и & combo является самым простым и наиболее часто используемым методом запуска необслуживаемых задач в качестве независимого фонового процесса.

1

Есть несколько способов сделать это на самом деле.

Первый вопрос, который я задам себе: «Нужно ли мне видеть / взаимодействовать с этой задачей позже?»

Если да, я бы использовал screen или tmux - это пример того, как htop - ctrl a - d отключает сеанс экрана, а screen -r присоединяет его снова. Сеанс отдельного экрана работает даже после того, как вы закрыли терминал, но мне было лень это делать здесь.

Иначе я бы использовал nohup python col.py & чтобы просто запустить задачу в фоновом режиме.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .