ฉันจะกำหนดค่าบริการให้ทำงานเมื่อเริ่มต้นได้อย่างไร


244

ฉันมีภูตที่ทำงานได้ดีถ้าฉันเริ่มด้วยตนเองด้วยserviceคำสั่ง:

ricardo@ricardo-laptop:~$ sudo service minidlna start                   
 * Starting minidlna minidlna                                                              [ OK ] 

แต่ไม่ได้กำหนดค่าให้เริ่มโดยอัตโนมัติเมื่อพีซีรีบูต

ฉันจะกำหนดค่าให้เริ่มโดยอัตโนมัติได้อย่างไรแม้ว่าจะไม่มีใครลงชื่อเข้าใช้พีซี


@ user154721 ข้อโต้แย้งอะไรที่คุณให้ update-rc.d เพื่อให้ระบบเริ่มทำงานอัตโนมัติ ฉันได้ลองตัวเลือกต่าง ๆ แล้ว แต่ยังไม่มีโชค
BennyTheBen

โปรแกรม Auto เริ่มต้นมีการกำหนดค่าในการautostartแสดงออกหรือ*.serviceไฟล์ในหลายสถานที่เช่นเดียวกับในหรือinit.d crontabดู: unix.stackexchange.com/a/525845/43233
Noam Manos

คำตอบ:


281
sudo update-rc.d minidlna defaults

สิ่งนี้ควรเพิ่มบริการลงในระบบเริ่มต้นอัตโนมัติ แต่ถ้าคุณได้รับ:

System start/stop links for /etc/init.d/minidlna already exist.

ทำคำสั่ง

sudo update-rc.d minidlna enable

PS : สำหรับรายละเอียดเพิ่มเติมดูที่หน้า man สำหรับ update-rc.d โดยพิมพ์คำสั่งman update-rc.d


7
ขอบคุณ แต่ถ้าฉันได้รับผลลัพธ์นี้เมื่อใช้คำสั่งนั้น:System start/stop links for /etc/init.d/minidlna already exist.
Ricardo Reyes

1
ถ้า minidlna ไม่เขียนไฟล์บันทึกใด ๆ คุณจะไม่พบมันที่ไหน มันอาจจะล้มเหลวเพราะไม่มีการเชื่อมต่อเครือข่ายเมื่อมันเริ่ม? ลองดูที่การกำหนดค่าหากเป็นไปได้ให้เปิดการดีบั๊กและ / หรือการบันทึกเพื่อค้นหาว่ามีอะไรผิดปกติ
LassePoulsen

8
@RicardoReyes ใช้sudo update-rc.d -f minidlna removeเพื่อลบลิงก์ที่มีอยู่
Dogweather

5
ฉันได้รับข้อผิดพลาดด้านล่าง update-rc.d: /etc/init.d/usermanage: ไม่มีไฟล์
Rizwan Patel

2
update-rc.d: /etc/init.d/mongod: file does not existนอกจากนี้ผมยังได้ข้อผิดพลาดเดียวกัน จากนั้นsudo systemctl enable mongod.serviceทำงานให้ฉัน
นักสำรวจ

36

บางครั้งคุณต้องเรียกใช้สคริปต์ในกระบวนการบู๊ตตัวอย่างเช่นเรียกใช้ iptables config ที่กระบวนการบู๊ต ดังนั้นคุณไม่จำเป็นต้องเรียกใช้สคริปต์ด้วยตนเองทุกครั้งที่ทำการรีบูตเครื่อง

คุณสามารถเรียกใช้สคริปต์ของคุณในกระบวนการบูตใน Ubuntu โดยเพิ่มลงใน/etc/init.d/rc.localไฟล์ ดูขั้นตอนด้านล่าง

  1. เปิด/etc/rc.localไฟล์ด้วยคำสั่งนี้:

    vim /etc/rc.local
    
  2. เพิ่มสคริปต์ของคุณที่คุณต้องการเรียกใช้ในกระบวนการบู๊ตที่นั่นตัวอย่างเช่น:

    sh /home/ivan/iptables.sh 
    echo 'Iptable Configured!'
    
  3. ตรวจสอบความคิดเห็นที่รวมอยู่ในไฟล์นั้นและตรวจสอบให้แน่ใจว่าการออก 0 นั้นสิ้นสุดแล้ว

  4. บันทึกไฟล์ และสคริปต์ของคุณจะทำงานในกระบวนการบูต


2
ความคิดเห็นของ /etc/init.d/rc.local ใน Ubuntu 12.04 กล่าวว่า "คำอธิบายสั้น ๆ : เรียกใช้ /etc/rc.local หากมี" ดังนั้นอาจเพิ่มสคริปต์ใน /etc/rc.local จะเป็นความคิดที่ดีขึ้นหรือไม่
Sanghyun Lee

วิธีการนี้จะออกคำสั่ง "ปิดระบบ" ไปที่บริการหรือเพียงแค่ฆ่ากระบวนการเมื่อปิดระบบปฏิบัติการหรือไม่
Vadim Chekan

Vadim, rc.local เพิ่งรันตอนบูท, ไม่มีอะไรสำเร็จเมื่อปิดเครื่อง กระบวนการน่าจะถูกฆ่าโดยระบบปฏิบัติการเมื่อปิด
Weboide

1
FYI: ความแตกต่างระหว่างrc.localvs เพิ่มลงใน init คือ rc.local จะถูกดำเนินการในตอนท้ายของลำดับการเริ่มต้น init แทนที่จะเป็นส่วนหนึ่งของมัน
BobTuckerman

35
  • วิธีเริ่ม daemon เมื่อเริ่มต้น:

    update-rc.d service_name defaults
    
  • เพื่อลบ:

    update-rc.d -f service_name remove
    

defaults => ระดับการเริ่มต้นที่ 2,3,4 และ 5

ตัวอย่าง:

update-rc.d tomcat7 defaults

1
เมื่อฉันทำคำสั่งนี้ฉันจะได้รับ "ระบบเริ่ม / หยุดการเชื่อมโยงสำหรับ /etc/init.d/tomcat7 มีอยู่แล้ว" อย่างไรก็ตามเมื่อฉันรีบูทมันไม่ได้เริ่มต้น Tomcat ฉันมักจะต้องทำ "service tomcat7 start"
John Little

ในกรณีของฉันsudo update-rc.d myserviceค่าเริ่มต้นจะเสร็จสมบูรณ์โดยไม่ต้องมีเอาท์พุทและบริการจะไม่เริ่มต้นการบูทเครื่องหรือด้วยบริการ sudo myservice startซึ่งจะทำงานอย่างเงียบ ๆ sudo /etc/init.d/myservice startทำงานอย่างไรก็ตาม
axk

13

ตั้งแต่ Ubuntu 15.10 (ตอบรับ Debian 8 "jessie") คุณต้องใช้คำสั่งต่อไปนี้เพื่อกำหนดค่าบริการของคุณให้minidlnaทำงานเมื่อเริ่มต้น:

sudo systemctl enable minidlna.service

และหากต้องการปิดใช้งานอีกครั้งตั้งแต่เริ่มต้นตอนบูต:

sudo systemctl disable minidlna.service

สิ่งนี้ใช้ได้กับการอ้างอิงชื่อบริการทั้งหมดที่คุณสามารถหาls /lib/systemd/system/*.serviceได้

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