สิ่งนี้อาจมีอะไรเพิ่มเติมเกี่ยวกับการตรวจจับระบบปฏิบัติการ แต่ฉันต้องการระบบเริ่มต้นที่ใช้อยู่ในระบบเป็นพิเศษ
Fedora 15 และ Ubuntu ตอนนี้ใช้ systemd, Ubuntu เคยใช้ Upstart (เริ่มต้นนานจนถึง 15.04), ในขณะที่คนอื่นใช้รูปแบบของ System V
ฉันมีแอปพลิเคชันที่ฉันเขียนเพื่อเป็นภูตข้ามแพลตฟอร์ม สคริปต์ init กำลังถูกสร้างแบบไดนามิกขึ้นอยู่กับพารามิเตอร์ที่สามารถส่งผ่านไปยังการกำหนดค่า
สิ่งที่ฉันต้องการทำคือสร้างสคริปต์สำหรับระบบเริ่มต้นเฉพาะที่ใช้ วิธีนี้สคริปต์การติดตั้งสามารถรันได้อย่างสมเหตุสมผลโดยไม่มีพารามิเตอร์เนื่องจากรูทและ daemon สามารถ "ติดตั้ง" โดยอัตโนมัติ
นี่คือสิ่งที่ฉันเกิดขึ้น:
- ค้นหา systemd, พุ่งพรวด, ฯลฯ ใน / bin
- เปรียบเทียบ / proc / 1 / comm กับ systemd, พุ่งพรวด, ฯลฯ
- ถามผู้ใช้
สิ่งที่จะเป็นวิธีที่ข้าม / แพลตฟอร์มที่ดีที่สุดในการทำเช่นนี้?
ประเภทที่เกี่ยวข้องฉันสามารถพึ่งพาการทุบตีเป็นส่วนใหญ่ของ * ระวังหรือมันขึ้นอยู่กับการกระจาย / ระบบปฏิบัติการ?
แพลตฟอร์มเป้าหมาย:
- Mac OS
- Linux (ดิสทริบิวชันทั้งหมด)
- BSD (ทุกรุ่น)
- Solaris, Minix และอื่น ๆ * ระวัง
ps -p 1 -o command
(พิมพ์เส้นทางสู่ปัจจุบันinit
) บน Arch Linux และ Fedora (IIRC) มันเป็น symlink ไปยังsystemd
ไบนารี (อาจเหมือนกันในทุกsystemd
ระบบ) เมื่อวันที่upstart
, init --help
จะพิมพ์ข้อมูลการใช้งานและในกล่องของฉันupstart
เป็นที่กล่าวถึงที่จะกล่าวว่าผู้ที่จะส่งอีเมล บน FreeBSD (sysV) สิ่งนี้จะส่งคืนข้อผิดพลาด อาจมีเงื่อนงำที่คล้ายกันในระบบอื่น ๆ แต่เมื่อถามคำถามนี้ฉันตัดสินใจที่จะสร้างพวกมันสำหรับทุกแพลตฟอร์มและสร้างแพ็คเกจแยกต่างหากสำหรับแต่ละระบบ
sudo lsof -a -p 1 -d txt
อาจให้ผลลัพธ์ที่แม่นยำยิ่งขึ้น ps
อาจพิมพ์ชื่อโดยพลการในขณะที่lsof
คุณจะได้รับเส้นทางปฏิบัติการจริง (ดูคำถามของฉันunix.stackexchange.com/questions/102453/… )