Назад | Перейти на главную страницу

Запуск приложения python в фоновом режиме в linux

Странный вопрос, но я играю с комбо сервер / клиент чата python на моем сервере Linux. В настоящее время, если я сделаю это:

$: cd /path/to/chat/server
$: sudo python ChatServer_Listen.py

Это запускает цикл выполнения приложения python, и сервер прослушивает входящие TCP-соединения.

Моя проблема в том, что если я закрою окно терминала, сеанс ssh завершится, а приложение python перестанет работать, и клиенты больше не смогут подключиться. Я бы предпочел не запускать экземпляр терминала 24/7 локально. Могу ли я настроить это приложение Python как нечто, что может работать в фоновом режиме в Linux? Если да, то как? В идеале это был бы что-то вроде Apache, который просто работает как служба.

Спасибо, что помогли мне!

Ты можешь использовать nohup python ChatServer_Listen.py &

nohup запишет вывод вашей программы в nohup.out файл.

Чтобы остановить вашу программу, вы должны использовать kill your_pid команда.

Правильный способ сделать это - изменить код, чтобы правильно демонизировать процесс. Один из способов сделать это - использовать daeminize модуль.

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

nohup python ChatServer_Listen.py >logfile.txt 2>&1 </dev/null &

Обратите внимание, что я не использовал sudo. Это потому, что вы должны поместить указанную выше строку в сценарий оболочки и запустить сценарий оболочки с помощью sudo.

Как объяснено здесь:

https://stackoverflow.com/questions/625409/how-do-i-put-an-already-running-process-under-nohup

"

Использование управления заданиями bash для отправки процесса в фоновый режим:

[crtl] + z

bg

И, как упомянул Сэм / Ян, вы должны выполнить disown, чтобы не убить процесс после закрытия терминала.

отречься -h

"

Простой способ сохранить процесс в рабочем состоянии после выхода из системы - использовать экран.

Вы хотите использовать Руководитель. Он сделан именно для этой цели, плюс он будет делать такие вещи, как перезапуск процесса в случае его смерти, предоставление графического веб-интерфейса для управления им и т. Д.