Как запустить программу на python в фоновом режиме даже после закрытия терминала?

Я запускаю программу на python с терминала на моей машине Ubuntu как,

$ python test.py

Но вся моя программа будет остановлена, если я закрою терминал, есть ли какой-нибудь способ запустить эту программу на python в фоновом режиме, чтобы, если я закрою свой терминал, он все равно продолжал работать?

А также после запуска этой программы в фоновом режиме, как мне узнать, работает ли моя фактическая программа по-прежнему или нет, если я снова войду в этот терминал?

Используйте линию shebang в вашем python скрипт. Сделайте его исполняемым с помощью команды,

chmod +x test.py

Используйте no hangup для запуска программы в фоновом режиме, даже если вы закроете свой терминал,

nohup /path/to/test.py &

или просто (без внесения каких-либо изменений в вашу программу)

nohup python /path/to/test.py &

Не забывайте использовать & чтобы отодвинуть это на задний план.

Роль nohup: nohup заставляет ваш скрипт игнорировать SIGHUP, и перенаправляет stdout/stderr в файл нет.вон, чтобы команда могла продолжать выполняться в фоновом режиме после выхода из системы. Если вы закроете оболочку / терминал или выйдете из системы, ваша команда больше не будет ребенок из этой скорлупы. Он принадлежит в этом процесс. Если вы ищете в pstree вы увидите, что теперь он принадлежит процессу 1 (инициализация).

Чтобы снова увидеть процесс, используйте в терминале,

ps ax | grep test.py

Это не может быть возвращено на передний план, потому что передний план (поскольку терминал уже закрыт) больше не существует. Таким образом, нет никакого способа вернуть этот терминал обратно, как только он будет закрыт.

python test.py &

будет запущен файл в фоновом режиме.

Для того, чтобы найти запущенную программу, вы можете использовать ps -e чтобы перечислить все запущенные программы. Вы можете использовать grep чтобы найти вашу конкретную программу из списка.

Смотрите здесь: command line - Running programs in the background from terminal - Ask Ubuntu должен ответить на ваш вопрос. Также возможный дубликат.

И когда вы запускаете программу в фоновом режиме с помощью &, она выводит PID, который вы можете искать с помощью чего-то вроде ps aux | grep PID.

@Seth Да, это переводит его в фоновый режим, но когда терминал закрывается, программа тоже исчезает…

@Seth: Каждый раз, когда мне нужно запоминать PID, чтобы искать процесс?

@TechGeeky Да.

@TechGeeky Вы могли бы использовать название вашей программы (test.py ), но PID обычно более надежен.