Вот готовые простые команды развертывания оболочки для вашего случая, вы можете изменить каталоги, имя, описание службы или скрипта и т. Д., Описание приведено ниже:
Сделать директорию и сам скрипт
mkdir /usr/src/python-сокет -p
кошка > /usr/src/python-socket/python-socket.py << 'EOL'
импортный сокет
хост = '127.0.0.1'
порт = 9999
BUFFER_SIZE = 1024
с socket.socket(socket.AF_INET, socket.SOCK_STREAM) как socket_tcp:
socket_tcp.bind((хост, порт))
socket_tcp.listen(5) # Уведомление о соединении с клиентом
conn, addr = socket_tcp.accept() # Стабильное соединение с клиентом
с подключением:
print('[*] Conexión establecida')
пока верно:
# Recibimos bytes, convertimos en str
данные = conn.recv (BUFFER_SIZE)
# Verificamos que hemos recibido datos
если не данные:
сломать
еще:
print('[*] Datos recibidos: {}'.format(data.decode('utf-8')))
conn.send(data) # Hacemos echo convirtiendo de nuevo a bytes
EOL
Настройте переменные для создания службы systemd
SERVICE_NAME=python-сокет
SERVICE_DESCRIPTION="Тестовый сервис Python"
SERVICE_COMMAND="/usr/bin/python3 /usr/src/python-socket/python-socket.py"
SERVICE_WORK_DIR=/usr/src/python-сокет/
SERVICE_USER=корень
Развернуть конфигурацию службы systemd
кошка > /etc/systemd/system/${ИМЯ_СЛУЖБЫ}.service << EOL
[Ед. изм]
Описание=${SERVICE_DESCRIPTION}
After=multi-user.target
[Оказание услуг]
Среда = "ОТ = СИСТЕМА"
Рабочий каталог=${SERVICE_WORK_DIR}
Тип=простой
Пользователь=${SERVICE_USER}
ExecStart=${SERVICE_COMMAND}
RemainAfterExit=нет
Перезапустить = всегда
Рестартсек=2
StartLimitBurst=999999
Стартлимитинтервал=0
KillMode=процесс
[Установить]
WantedBy=многопользовательская.цель
EOL
Примените новый сервис, запустите его и проверьте
systemctl демон-перезагрузка
systemctl включить ${SERVICE_NAME}
systemctl остановить ${SERVICE_NAME}
systemctl запустить ${SERVICE_NAME}
статус systemctl ${SERVICE_NAME}
В результате ваша конфигурация службы systemd будет выглядеть так:
[Ед. изм]
Description=Тестовый сервис Python
After=multi-user.target
[Оказание услуг]
Среда = "ОТ = СИСТЕМА"
Рабочий каталог=/usr/src/python-сокет/
Тип=простой
Пользователь=корень
ExecStart=/usr/bin/python3 /usr/src/python-socket/python-socket.py
RemainAfterExit=нет
Перезапустить = всегда
Рестартсек=2
StartLimitBurst=999999
Стартлимитинтервал=0
KillMode=процесс
[Установить]
WantedBy=многопользовательская.цель
Где:
Среда = "ОТ = СИСТЕМА"
- некоторая переменная env, если вы хотите перейти к вашему скрипту Python
Тип=простой
- простой сервис systemd, он будет работать, пока скрипт работает
RemainAfterExit=нет
Перезапустить = всегда
Рестартсек=2
StartLimitBurst=999999
Стартлимитинтервал=0
Эти параметры не позволят вашему скрипту не работать ни при каких условиях, он будет постоянно запускаться при сбое.
KillMode=процесс
- Вот как ваш скрипт остановится, если у вас нет специальных событий SIG в вашем скрипте Python, он универсальный