วิธีที่ถูกต้องในการติดตั้งบริการพุ่งพรวดที่กำหนดเอง


51

ฉันใช้บริการพุ่งพรวดบนเซิร์ฟเวอร์ของฉัน การเขียนไฟล์ conf และวางไว้ใน/etc/initนั้นง่ายพอ แต่ดูเหมือนจะไม่ติดตั้งอย่างสมบูรณ์ หนึ่งservice --status-allรายการไม่ได้แสดงบริการใหม่ของฉัน ฉันจะตรวจสอบและถ้าฉันทำให้การเชื่อมโยงใน/etc/init.dการ/lib/init/ubstart-jobมันจะแสดงขึ้นมาในสถานะ แต่การทำเช่นนี้ทำให้ฉันคิดว่าฉันไม่ได้ทำถูกต้องและอาจมีขั้นตอนการกำหนดค่าอื่น ๆ ที่ยังไม่เสร็จ

เป็นวิธีที่ถูกต้องในการติดตั้งบริการพุ่งพรวดเช่นนั้นมันมีการลงทะเบียนอย่างถูกต้องในเครื่องมือทั้งหมดที่เกี่ยวข้องกับบริการคืออะไร?


2
ผู้ชายคนนี้ตอบคำถามหนึ่งข้อของฉันโดยใช้บริการพุ่งพรวดและให้คำอธิบายโดยละเอียดมันอาจชี้ให้เห็นถึงขั้นตอนที่อาจพลาดaskubuntu.com/a/278128/75967
Meer Borg

1
คุณหมายถึง/lib/init/upstart-jobอะไร
dalore

คำตอบ:


46

เมื่อคุณเริ่มคัดลอกไฟล์ conf ใหม่ไปยังโฟลเดอร์ / etc / init คุณต้องโทร:

initctl reload-configuration

โดยการพุ่งพรวดของคุณควรลงทะเบียนอย่างถูกต้อง


8
ดังนั้นการตั้งค่างานอย่างถูกต้อง (เช่นstartและการstopทำงาน) แต่มันไม่ได้ทำให้งานปรากฏในสถานะทั้งหมด ฉันยังต้องเพิ่มด้วยตนเองเพื่อ/etc/init.d/ที่จะเกิดขึ้น
James McMahon

1
@JamesMcMahon คุณจำเป็นต้องใช้initctl listคำสั่ง sudo sudo initctl listกับ: ด้วยวิธีนี้คุณจะเห็นรายการบริการที่สมบูรณ์
Shahriyar Imanov

ทำไม sudo มันไม่ปรากฏว่าจะเปลี่ยนผลลัพธ์ของรายการ initctl เลย
LovesTha

I still had to manually add it to /etc/init.d@JamesMcMahon, คุณยังต้องเพิ่มอะไรอีก ซึ่งหมายความว่านอกเหนือจากการX.confเพิ่มไฟล์/etc/initแล้วยังจำเป็นต้องเพิ่มไฟล์/etc/init.dหรือไม่
เควินเมเรดิ ธ

@KevinMeredith ขออภัยฉันไม่มีรายละเอียดเพิ่มเติม เป็นเวลา 2 ปีแล้วและฉันจำไม่ได้ว่าเฉพาะเจาะจง หากคุณดูเอกสารคู่มือ init.d บางรายการหวังว่าจะมีความชัดเจน
James McMahon

18

ชำระเงินคู่มือบริการ:

บริการ - สถานะทั้งหมดทำงานสคริปต์เริ่มต้นทั้งหมดตามลำดับตัวอักษรด้วยคำสั่งสถานะ ตัวเลือกนี้เรียกสถานะเท่านั้นสำหรับงาน sysvinit งานพุ่งพรวดสามารถสอบถามในลักษณะที่คล้ายกันกับรายการ initctl

(เน้นเพิ่ม)

นั่นเป็นสาเหตุที่การเพิ่มลงใน /etc/init.d (ตำแหน่งงาน sysvinit) ทำให้งานนั้น ดังนั้น: ลองเรียกใช้รายการ initctlแทน :)


That's why adding it กำลังเพิ่มอะไร นอกจากmy_service.confไฟล์ใน/etc/initแล้วยังจำเป็นต้องมี/etc/init.dไฟล์ด้วยหรือไม่
เควินเมเรดิ ธ

ไม่ทำงานกับ Ubuntu 16.04.4 รายการ LTS \\ $ initctl รายการ initctl: ชื่อ "com.ubuntu.Upstart" ไม่มีอยู่ $ sudo รายการเริ่มต้น initctl initctl: ไม่สามารถเชื่อมต่อกับพุ่งพรวด: ไม่สามารถเชื่อมต่อกับ socket / com / ubuntu / upstart: การเชื่อมต่อถูกปฏิเสธ
nine9five

13

สำหรับบริการ SysV

ตรวจสอบให้แน่ใจว่าคุณทำตามขั้นตอนต่อไปนี้ในขณะที่เพิ่ม / สร้างบริการใหม่ใน Ubuntu

  1. สร้างไฟล์บริการใน /etc/init.d/<service name>
  2. chmod 700 /etc/init.d/<service name>
  3. update-rc.d <service name> defaults
  4. update-rc.d <service name> enable

ตอนนี้เห็นคุณบริการใน

service --status-all

15
คำตอบของคุณเกี่ยวข้องกับ sysv และไม่พุ่งพรวด คุณอาจต้องการลบ
jcomeau_ictx

3
มันเป็นคำตอบที่มีประโยชน์อย่างแน่นอน
ATorras

มันเกี่ยวข้องกับ serivice อื่นมันเป็นประโยชน์อย่างแน่นอน
wuppi

1

ฉันพบว่าข้อผิดพลาดในไฟล์. conf สามารถทำให้งานไม่เป็นที่รู้จักในการเริ่มต้น ตัวอย่างเช่นมีsetuidบรรทัดในพุ่งพรวดรุ่น 1.3 หรือก่อนหน้า


1

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

####Test the new config - resolving any issues before continuing:
ERROR: File /etc/init/test.conf: syntax invalid:
test.conf:35: Unterminated quoted string

####then fix and recheck:
# init-checkconf /etc/init/test.conf
File /etc/init/test.conf: syntax ok

####then reload:
# initctl reload-configuration

#### and start:
# start test
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.