อะไรคือความแตกต่างระหว่าง“ บริการ” และ“ /etc/init.d/”


113

ฉันได้จัดการการติดตั้งเซิร์ฟเวอร์ทั้งในและนอกรสชาติอูบุนตูมาระยะหนึ่งแล้ว - ฉันได้รับการปรับเปลี่ยนให้/etc/init.d/เริ่มต้น servcies ใหม่ ตอนนี้ฉันได้รับข้อความนี้:

root@tatooine:~# /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
mysql start/running, process 14048

สิ่งนี้ดูเหมือนจะถูกนำมาเกี่ยวกับ LTS ล่าสุดของ Ubuntu - ทำไม? มีอะไรเลวร้ายเกี่ยวกับ/etc/init.d/อะไรและมีความแตกต่างระหว่างserviceและ/etc/init.d/?


3
พุ่งพรวดตำรามีคำอธิบายที่ดีของเหตุผลสำหรับการเปลี่ยน
ændrük

คำตอบ:


103

/etc/init.dสคริปต์เป็นวิธีการทำสิ่งเก่า พวกเขามาจากมาตรฐาน System V อย่างไรก็ตามสคริปต์เหล่านั้นใช้งานตามลำดับเฉพาะเท่านั้นจึงไม่สามารถสร้างการอ้างอิงที่แท้จริงได้

ดังนั้นการพุ่งพรวดได้รับการพัฒนาโดยมีวัตถุประสงค์เพื่อแทนที่/etc/init.dสคริปต์ทั้งหมดด้วยสคริปต์พุ่งพรวด (ใน/etc/init)

serviceช่วยให้การเปลี่ยนจาก/etc/init.dสคริปต์เป็นสคริปต์เริ่มต้นได้อย่างราบรื่น ในอนาคตเมื่อสคริปต์มากขึ้นและถูกถ่ายโอนไปยังพุ่งพรวดบริการจะยังคงทำงานได้เพราะพบว่าเป็นไปได้ทั้ง


6
พุ่งพรวดกำลังจะถูกยุติในตอนนี้ใช่มั้ย
ผิด

6
systemd จะแทนที่พุ่งพรวดเมื่อมีแผนในสถานที่ - 14.04 LTS จะใช้พุ่งพรวด สิ่งนี้ถูกประกาศโดยMark Shuttleworthในบทความชื่อLosing graciously
ไม่ใช่ patch

28

ตรวจสอบ man page สำหรับคำสั่ง service: man service

serviceเรียกใช้สคริปต์ในสภาพแวดล้อมที่คาดการณ์ได้ (ไดเรกทอรีทำงานคือ / และมีการตั้งค่าตัวแปรสภาพแวดล้อมเพียง 2 ตัว: LANG และ TERM) --full-restartนอกจากนี้ยังเพิ่มความสามารถในการทำ ดังนั้นเพื่อสรุป:

  1. service อาจเรียกใช้สคริปต์จาก / etc / init หรือ /etc/init.d (พุ่งพรวดหรือ System V)
  2. service รันสคริปต์ในสภาพแวดล้อมที่คาดการณ์ได้

ด้าน "สภาพแวดล้อมที่คาดการณ์ได้" อาจทำให้คุณเกิดปัญหาหากสคริปต์ของคุณขึ้นอยู่กับตัวแปรสภาพแวดล้อมด้วยเหตุผลบางประการ อาจมีวิธีการแก้ไข แต่ฉันไม่รู้ว่ามันคืออะไรและอยู่นอกเหนือขอบเขตของคำถามนี้ :)


2
สวัสดี @Joe Marty นี่เป็นปัญหาที่ฉันกำลังทดลองอยู่ ฉันมีบริการที่ถ่ายทอดตัวแปรสภาพแวดล้อม "DISPLAY" ที่ไม่ปรากฏเมื่อเริ่ม daemon ด้วย "service myservice start" แต่มีอยู่เมื่อเริ่มด้วย "/etc/init.d/myservice start" มีความคิดเกี่ยวกับวิธีการให้ตัวแปรนี้พร้อมใช้งานอย่างไร
frandevel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.