Score:1

systemd ฆ่าเซสชัน ngrok ของฉันที่เริ่มต้นจาก python

ธง in

ฉันมีสคริปต์ที่ฉันเขียนที่ฟังบน mqtt เมื่อรหัสบางอย่างมาถึงเซิร์ฟเวอร์ mqtt เซสชัน ngrok จะเริ่มต้นดังนี้:

subprocess.Popen(['/tmp/ngrok','http' ,'8080'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)

สแครปทำงานใน virtualenv และมีเชลล์สคริปต์เพื่อเปิดใช้งาน env เสมือนและรัน:

#!/bin/bash
. ./venv/bin/เปิดใช้งาน
หลาม mqtt_listener.py

เมื่อเรียกใช้สคริปต์นี้ในเชลล์ของฉันด้วย & ในตอนท้ายเซสชัน ngrok จะเปิดขึ้นและเปิดทิ้งไว้จนกว่าฉันจะฆ่ามันเอง อย่างไรก็ตามเมื่อทำงานใน systemd โดยใช้ไฟล์ระบบต่อไปนี้ (ไฟล์ผู้ใช้) /home/myuser/.config/systemd/user/mqtt_listener.service

[หน่วย]
Description=mqtt เรียกใช้บริการ
หลังจาก=default.target

[บริการ]
ประเภท=ผู้บริหาร
ExecStart=/home/myuser/mqtt_listener/run_mqtt_service.sh
KillMode=กระบวนการ

[ติดตั้ง]
ต้องการโดย=default.target

เมื่อบริการได้รับคำสั่ง mqtt ฉันสามารถเห็นบันทึกประจำวันที่บริการได้รับข้อความของฉันและแยกเป็นกระบวนการ ngrok แต่ฉันก็เห็น

บริการ "ปิดใช้งานสำเร็จ" แล้วเริ่มต้นใหม่ สิ่งที่แปลกคือมันมักจะเกิดขึ้นเมื่อฉันไม่ได้เข้าสู่ระบบโดยใช้ ssh กับเซิร์ฟเวอร์ ถ้าฉันเข้าสู่ระบบกระบวนการจะไม่ตาย มีความคิดอะไรที่ฉันทำผิด? type=exec เกิดจากข้อเท็จจริงที่ว่าอันอื่นไม่พอดี ฉันไม่สามารถเข้าใจได้ว่าเหตุใด systemd จึงพิจารณาว่าบริการ python ของฉันเสร็จสิ้นและด้วยเหตุนี้จึงฆ่ามันหลังจากแยกหลาน (ส้อมแรกคือสคริปต์เรียกใช้ ฉันสามารถกำจัดได้)

Score:1
ธง cz

ตามค่าเริ่มต้น บริการผู้ใช้จะไม่ทำงานหากผู้ใช้ไม่ได้เข้าสู่ระบบ

คุณสามารถอนุญาตให้ผู้ใช้เรียกใช้บริการในขณะที่ไม่ได้เข้าสู่ระบบได้โดยการเปิดใช้ เอ้อระเหย สำหรับบัญชีผู้ใช้นั้น เช่น:

sudo loginctl enable-linger <ชื่อผู้ใช้>

เมื่อเปิดใช้งาน lingering บริการผู้ใช้จะทำงานในขณะที่ผู้ใช้ไม่ได้เข้าสู่ระบบ และยังสามารถเปิดใช้งานเพื่อเริ่มต้นในเวลาบูต

codeScriber avatar
in flag
แน่นอนคุณพูดถูก! ครั้งแรกที่ฉันใช้บริการผู้ใช้ systemd และถูกใช้แบบนั้นด้วยเหตุผลด้านความปลอดภัย ไม่ต้องสงสัยเลยว่ามันแก้ไขได้ ขอบคุณ!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา