ใน Ubuntu มีคำสั่งให้แสดงรายการบริการ autostart ทั้งหมดหรือไม่


22

ใน Ubuntu

  1. มีคำสั่งให้แสดงรายการบริการ autostart ทั้งหมดหรือไม่?
  2. มีคำสั่งให้ตรวจสอบว่ามีการเริ่มบริการอัตโนมัติเมื่อบูตหรือไม่?

ฉันทำ Google และ IRC ฉันไม่พบคำตอบ อาจไม่มีคำสั่งดังกล่าวใน Ubuntu ในการเริ่มต้นผมคิดว่าบริการ autostarted ทั้งหมดจะอยู่ภายใต้/etc/rc2.d/แต่ผมผิดเกี่ยวกับว่า /etc/init/*.confคนบางคนมีการกำหนดค่าเฉพาะภายใต้ จากนั้นฉันลองchkconfigเครื่องมือ (ติดตั้งด้วยตนเอง) มันไม่ทำงานตลอดเวลา ยกตัวอย่างเช่นมันให้ผลผิดmongodbซึ่งเป็น autostarted /etc/init/mongodb.confจาก

service --status-allและinitctl listสามารถบอกสถานะปัจจุบันของบริการแทนสถานะเริ่มต้นอัตโนมัติ update-rc.dเป็นคำสั่งให้เปลี่ยนสถานะเริ่มอัตโนมัติแทนการแสดงสถานะ

หากไม่มีคำตอบสำหรับคำถามของฉันฉันแค่สงสัยว่าทำไมมันจึงยากที่จะตรวจสอบบริการ autostart ใน Ubuntu


ฉันคิดว่าchkconfig --listจะทำงานใช่ไหม onหมายความว่าบริการกำลังทำงานอยู่บน runlevel นั้นและบริการนั้นจะเริ่มต้นโดยอัตโนมัติเมื่อบูตระบบ
สูงสุด

1
ตามที่ฉันโพสต์ในคำถามของฉัน chkconfig ไม่ทำงานเสมอไป ตัวอย่างเช่นมันจะให้ผลที่ไม่ถูกต้องสำหรับ mongodb ฉันคิดว่าอาจเป็นเพราะ mongodb ใช้ /etc/init/mongodb.conf เพื่อทำ autostart
SSS

แล้วไงls /etc/rc?.dล่ะ
toxaq

คำตอบ:


11

Ubuntu ใช้Upstartแทนinitระบบดั้งเดิม พุ่งพรวดแข็งแกร่งกว่า init แต่มันซับซ้อนกว่าinitเล็กน้อย

ตรงกันข้ามพุ่งพรวดเป็นไปตามเหตุการณ์ "เหตุการณ์" อาจเป็นอะไรบางอย่างเช่น "การบูท" ... หรืออาจเฉพาะเจาะจงมากขึ้นเช่น "เครือข่ายพร้อมใช้งานทันที" คุณสามารถระบุสคริปต์ที่ขึ้นอยู่กับเหตุการณ์ใด สิ่งใดก็ตามที่ไม่รอเหตุการณ์สามารถเรียกใช้เมื่อใดก็ตามที่มี CPU

ระบบที่อิงกับเหตุการณ์นี้มีข้อดีอีกประการหนึ่งคือคุณสามารถใช้ตามหลักวิชาได้แม้ว่าระบบจะเริ่มทำงาน พุ่งพรวดในที่สุดก็มีกำหนดที่จะผ่านงานเช่นหรือเสียบอุปกรณ์ภายนอกเช่นไดรฟ์หัวแม่มือ (ปัจจุบันจัดการโดย udev และฮาล) หรือเรียกใช้โปรแกรมในเวลาที่กำหนด (cron จัดการในปัจจุบัน)

อย่างที่คุณควรรู้ในตอนนี้เดมอนที่ตายแล้ว (ที่ไม่ได้ทำงานเมื่อเริ่มต้น) อาจยังมีชีวิตอยู่และเริ่มต้นเนื่องจากเหตุการณ์

Ubuntu มีทั้ง / etc / init สำหรับ Upstart และ /etc/init.d สำหรับไฟล์ SysV เก่า ไฟล์บางส่วนในนั้นเป็นสคริปต์ SysV Init ปกติที่ยังไม่ได้ย้ายข้อมูล แต่บริการบางอย่างที่โอนย้ายดูแลรักษาลิงก์จาก /etc/init.d เป็น / lib / init / upstart-job หากคุณเรียกใช้หนึ่งในนั้นมันใช้งานได้ แต่มันจะพิมพ์คำเตือนก่อน:

แทนที่จะเรียกใช้สคริปต์เริ่มต้นผ่าน /etc/init.d ให้ใช้ยูทิลิตี service (8) เช่น service mysql restart

เนื่องจากสคริปต์ที่คุณพยายามเรียกใช้ถูกแปลงเป็นงานพุ่งพรวดคุณอาจใช้ยูทิลิตี้รีสตาร์ท (8) เช่นเริ่ม mysql

บนเครื่องพุ่งพรวด init มาจากการพุ่งพรวด แทนที่จะเรียกใช้สคริปต์ rc หลักที่เรียกใช้สคริปต์สำหรับ runlevel เฉพาะเจาะจง init ของ Upstart จะรับงานจากไดเรกทอรีงานของตน

ตอนนี้เรารู้แล้วว่าไม่มีวิธีง่ายๆในการแสดงรายการ autostart daemons คุณควรทำรายการ daemons ทั้งหมดและตรวจสอบทีละรายการ ภูตอาจเริ่มต้นโดยinitหรือโดยupstartหรือแม้กระทั่งโดยเหตุการณ์ในภายหลัง วิธีที่ง่ายที่สุดในการรับรายการนี้คือการรันคำสั่งนี้ในเชลล์:

initctl show-config

ผลลัพธ์มีลักษณะดังนี้:

...
hostname
  start on startup
udevtrigger
  start on ((startup and started udev) and not-container)
tty2
  start on (runlevel [23] and ((not-container or container CONTAINER=lxc) or container CONTAINER=lxc-libvirt))
...

รายการบางอย่างเช่นรายการแรกนั้นเรียบง่ายhostnameเริ่มต้นเมื่อเริ่มต้น แต่รายการอื่น ๆ อาจดูซับซ้อนกว่านี้ (แต่โชคดีที่มนุษย์อ่านได้ :-))


ฉันรู้ว่าส่วนใหญ่ของสิ่งที่คุณโพสต์ แม้ว่าจะมีสิ่งใหม่ที่ฉันไม่รู้พวกเขาก็ยังไม่สามารถแก้ปัญหาของฉันได้ ฉันแค่อยากจะรู้ว่ามีคำสั่งที่สามารถทำงานได้อย่างง่ายดาย (ทั้งบริการพุ่งพรวดและบริการเริ่มต้น) ดูเหมือนว่าอูบุนตูจะไม่มีเลย น่าเสียดายมาก! โดยวิธีการ "initctl" สามารถจัดการบริการพุ่งพรวดเท่านั้นแทนที่จะเป็นระบบเริ่มต้นแบบดั้งเดิม หากไม่มีวิธีง่ายๆฉันก็ต้องใช้วิธีที่ยากลำบาก ... ขอบคุณ
SSS

ฉันทราบว่าในขณะที่อูบุนตูเวอร์ชันปัจจุบันไม่ถูกต้องได้ย้ายไปยัง systemd แล้ว กลุ่มคำตอบที่น่าประหลาดใจนี้ยังคงใช้ได้
Journeyman Geek

อูบุนตูเวอร์ชันใหม่ไม่ใช้ upstart แต่ systemd unix.stackexchange.com/a/287282/147671
João Pimentel Ferreira

5

จริงๆแล้วบริการทั้งหมดอยู่ภายใต้ /etc/init.d เท่านั้น:

rc0.d contains the services which runs in runlevel 0
rc1.d contains the services which runs in runlevel 1
rc2.d contains the services which runs in runlevel 2
rc3.d contains the services which runs in runlevel 3
rc4.d contains the services which runs in runlevel 4
rc5.d contains the services which runs in runlevel 5
rc6.d contains the services which runs in runlevel 6

อีกอย่างหนึ่งบริการทั้งหมดอยู่ภายใต้rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.dเช่นกัน แต่เป็นลิงก์สัญลักษณ์ไป/etc/init.dเท่านั้น

ดูที่นี่นี่คือเนื้อหาของrc1.dไดเรกทอรี:

lrwxrwxrwx 1 root root  20 Aug 17 14:54 K15pulseaudio -> ../init.d/pulseaudio
lrwxrwxrwx 1 root root  22 Nov 28 18:47 K20acpi-support -> ../init.d/acpi-support
lrwxrwxrwx 1 root root  20 Aug 17 14:54 K20kerneloops -> ../init.d/kerneloops
lrwxrwxrwx 1 root root  23 Nov  7 15:24 K20openbsd-inetd -> ../init.d/openbsd-inetd
lrwxrwxrwx 1 root root  15 Aug 17 14:54 K20saned -> ../init.d/saned
lrwxrwxrwx 1 root root  27 Aug 17 14:54 K20speech-dispatcher -> ../init.d/speech-dispatcher
-rw-r--r-- 1 root root 369 Apr 14  2012 README
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S30killprocs -> ../init.d/killprocs
lrwxrwxrwx 1 root root  19 Aug 17 14:54 S70dns-clean -> ../init.d/dns-clean

ที่นี่คุณสามารถสังเกตเห็นลิงก์สัญลักษณ์เพื่อ init.d (K15pulseaudio -> ../init.d/pulseaudio)

แต่ที่นี่ทุกบริการเชื่อมโยงกับ init.d ใช่มั้ย แต่บริการทุกอย่างจะไม่เริ่มต้น เหตุผลก็คือสองสคริปต์

อันแรกคือสคริปต์S (S30killprocs) ---> start

อันที่สองคือk script (K15pulseaudio) ---> kill

บริการสคริปต์ K ทั้งหมดฆ่าบริการและบริการสคริปต์ S ทั้งหมดเริ่มต้นบริการสำหรับ runlevel นั้น

โดยสังเขป

S70dns-clean -> ../init.d/dns-cleanเริ่มdns-cleanบริการใน runlevel 1

K15pulseaudio -> ../init.d/pulseaudiopulseaudioบริการฆ่าใน runlevel 1


ไม่เป็นความจริงสำหรับบริการพุ่งพรวดซึ่งอาจไม่ปรากฏที่นี่เลย
ไวด์การ์ด

2

คุณสามารถติดตั้ง sysv-rc-conf ที่เป็นโปรแกรม ncurses เพื่อกำหนดค่า / แสดงระดับ rc แบบกราฟิก


0

มีคำสั่งให้แสดงรายการบริการ autostart ทั้งหมดหรือไม่?

ดูที่นี่: update-rc-d-cheat-sheet

มีคำสั่งให้ตรวจสอบว่ามีการเริ่มบริการอัตโนมัติเมื่อบูตหรือไม่?

ไม่มีฉันรู้ว่า (ซึ่งไม่ได้หมายความว่าอะไร;) แต่คุณสามารถเริ่มอ่านได้ที่นี่: ฟอรั่ม Askubuntu - การพึ่งพาบริการ

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