Странный вопрос, но я играю с комбо сервер / клиент чата 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
"
Простой способ сохранить процесс в рабочем состоянии после выхода из системы - использовать экран.
Вы хотите использовать Руководитель. Он сделан именно для этой цели, плюс он будет делать такие вещи, как перезапуск процесса в случае его смерти, предоставление графического веб-интерфейса для управления им и т. Д.