พร้อมแล้วสำหรับคำสั่งปรับใช้เชลล์อย่างง่ายสำหรับกรณีของคุณ คุณสามารถเปลี่ยนไดเร็กทอรี ชื่อ คำอธิบายของบริการหรือสคริปต์ และอื่นๆ คำอธิบายอยู่ด้านล่าง:
สร้างไดเร็กทอรีและสคริปต์เอง
mkdir /usr/src/python-socket -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) # Esperamos la conexión del cliente
conn, addr = socket_tcp.accept() # Establecemos la conexión กับลูกค้า
พร้อมคอนเน็กเตอร์:
พิมพ์ ('[*] Conexión establecida')
ในขณะที่ทรู:
# Recibimos ไบต์, converterimos และ str
ข้อมูล = conn.recv (BUFFER_SIZE)
# Verificamos que hemos recibido datos
ถ้าไม่ใช่ข้อมูล:
หยุดพัก
อื่น:
พิมพ์ ('[*] Datos recibidos: {}'.format (data.decode ('utf-8')))
conn.send(data) # Hacemos echo convirtiendo de nuevo a ไบต์
EOL
ตั้งค่าตัวแปรสำหรับสร้างบริการ systemd
SERVICE_NAME=python-socket
SERVICE_DESCRIPTION="ทดสอบบริการไพธอน"
SERVICE_COMMAND="/usr/bin/python3 /usr/src/python-socket/python-socket.py"
SERVICE_WORK_DIR=/usr/src/python-socket/
SERVICE_USER=ราก
ปรับใช้การกำหนดค่าบริการ systemd
cat > /etc/systemd/system/${SERVICE_NAME}.service << EOL
[หน่วย]
คำอธิบาย=${SERVICE_DESCRIPTION}
After=multi-user.target
[บริการ]
สภาพแวดล้อม = "จาก = ระบบ"
WorkingDirectory=${SERVICE_WORK_DIR}
ประเภท = ง่าย
ผู้ใช้=${SERVICE_USER}
ExecStart=${SERVICE_COMMAND}
RemainAfterExit=ไม่
เริ่มใหม่ = เสมอ
รีสตาร์ทวินาที = 2
StartLimitBurst=999999
StartLimitInterval=0
KillMode=กระบวนการ
[ติดตั้ง]
WantedBy=multi-user.target
EOL
สมัครบริการใหม่ เริ่มต้นและตรวจสอบ
systemctl daemon-โหลดซ้ำ
systemctl เปิดใช้งาน ${SERVICE_NAME}
systemctl หยุด ${SERVICE_NAME}
systemctl เริ่มต้น ${SERVICE_NAME}
สถานะ systemctl ${SERVICE_NAME}
ดังนั้นการกำหนดค่าบริการ systemd ของคุณจะมีลักษณะดังนี้
[หน่วย]
Description=ทดสอบบริการหลาม
After=multi-user.target
[บริการ]
สภาพแวดล้อม = "จาก = ระบบ"
WorkingDirectory=/usr/src/python-socket/
ประเภท = ง่าย
ผู้ใช้ = ราก
ExecStart=/usr/bin/python3 /usr/src/python-socket/python-socket.py
RemainAfterExit=ไม่
เริ่มใหม่ = เสมอ
รีสตาร์ทวินาที = 2
StartLimitBurst=999999
StartLimitInterval=0
KillMode=กระบวนการ
[ติดตั้ง]
WantedBy=multi-user.target
ที่ไหน:
สภาพแวดล้อม = "จาก = ระบบ"
- ตัวแปร env บางตัวถ้าคุณต้องการส่งไปยังสคริปต์ไพ ธ อนของคุณ
ประเภท = ง่าย
- บริการ systemd อย่างง่ายจะทำงานในขณะที่สคริปต์ทำงาน
RemainAfterExit=ไม่
เริ่มใหม่ = เสมอ
รีสตาร์ทวินาที = 2
StartLimitBurst=999999
StartLimitInterval=0
พารามิเตอร์เหล่านี้จะไม่อนุญาตให้สคริปต์ของคุณหยุดทำงานในเงื่อนไขใด ๆ ที่จะเริ่มล้มเหลวอย่างต่อเนื่อง
KillMode=กระบวนการ
- นี่คือวิธีที่สคริปต์ของคุณจะหยุดทำงาน หากคุณไม่มีเหตุการณ์ SIG พิเศษในสคริปต์ไพธอนของคุณ มันจะเป็นสากล