Score:1

รับ PID ของการพึ่งพาใน systemd หรือไม่

ธง us
eof

ฉันต้องการเขียนไฟล์หน่วย systemd ที่ต้องส่งผ่านไปยังคำสั่ง exec PID ของการพึ่งพาอย่างใดอย่างหนึ่ง ในไฟล์หน่วยฉันต้องการ:

ExecStart=bar -p <PID ของ foo.service>
ต้องการ=foo.service
After=foo.service

มีวิธีรับ PID ของการพึ่งพาที่จำเป็นด้วยวิธีง่ายๆ หรือไม่? ไม่พบสิ่งใดในคู่มือหรือตัวอย่างในไฟล์หน่วยใดๆ บนเดสก์ท็อป Ubuntu

กรณีการใช้งานคือการสร้างไฟล์หน่วยอย่างง่ายที่สามารถใช้เพื่อแนบ JProfiler daemon กับบริการที่ใช้ Java เพื่อทำการดีบักประสิทธิภาพระยะไกล คำสั่งเพื่อแนบตัวสร้างโปรไฟล์จำเป็นต้องมี PID ของ JVM

Score:0
ธง cl
A.B

จาก ระบบมนุษย์ctl:

-หน้า, --ทรัพย์สิน=

เมื่อแสดงคุณสมบัติหน่วย/งาน/ผู้จัดการด้วย แสดง คำสั่งจำกัด แสดงคุณสมบัติที่ระบุในอาร์กิวเมนต์ ข้อโต้แย้งควร เป็นรายการชื่อคุณสมบัติที่คั่นด้วยเครื่องหมายจุลภาค เช่น "PID หลัก". [...]

ดังนั้น systemctl แสดง -p MainPID foo จะแสดง MainPID=<pid> (แทนที่จะเป็นเพียง pid)

ดังนั้นหากบริการ ฟู สามารถระบุได้ด้วย Main PID (เช่น: กระบวนการเป้าหมายไม่ใช่กระบวนการย่อยของ main pid) ซึ่งสามารถใช้:

/bin/bash -c 'ประกาศ -i $(systemctl แสดง -p MainPID foo); [ "$MainPID" -ne 0 ] && exec bar -p $MainPID || ทางออก 1'

หากไม่ได้อยู่ในสคริปต์ของตัวเอง ด้วยคำสั่งอ้างอิงของ systemd ทำให้สับสนเล็กน้อย สิ่งนี้จะกลายเป็น:

ExecStart=/bin/bash -c 'ประกาศ -i $$(systemctl แสดง -p MainPID foo); [ \"$$MainPID\" -ne 0 ] && exec bar -p $$MainPID || ทางออก 1'

สคริปต์นี้สามารถปรับปรุงได้ แต่คุณได้รับแนวคิด

โพสต์คำตอบ

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