รายการบริการทั้งหมดเริ่มต้นที่บูต


15

ฉันกำลังมองหาวิธีรับรายการบริการทั้งหมด (/etc/init.d หรือ upstart หรือ systemd) ซึ่งควรจะเริ่มต้นการบูต (หรือเริ่มทำงานเมื่อ) บูต

คุณจะรับรายการบริการเริ่มต้นทั้งหมดได้อย่างไร - service --status-allฉันรู้ว่าคำถามนั้นและมันแสดงให้เห็นถึงการใช้

แต่นั่นไม่ได้แสดงให้ฉันเห็นว่าบริการใดบ้างที่ถูกเรียกใช้เพื่อให้ทำงานได้ มันเรียกสคริปต์เริ่มต้นทั้งหมดด้วยstatusอาร์กิวเมนต์ "" นี่คือรายการบริการทั้งหมดที่อาจใช้งานได้

แต่ฉันอยากรู้ว่าบริการใดที่เริ่มทำงานตั้งแต่เริ่มระบบยังทำงานอยู่

ตัวอย่าง…

ฉันติดตั้ง webfs แล้ว แต่ฉันไม่ต้องการให้มันทำงานตอนบูท ดังนั้นฉันจึงปิดการใช้งาน: sudo update-rc.d webfs disable. และฉันก็ติดตั้ง samba แล้วและมันควรจะทำงานตอนบูต แต่มันก็หยุด (ด้วยเหตุผลอะไรก็ตาม) sudo service --status-allไม่ได้ช่วยฉันที่นี่:

$ sudo service --status-all 2>/dev/null | grep -E 'samba$|webfs'
 [ - ]  samba
 [ - ]  webfs

ทั้งคู่ออกไป แต่ฉันก็ไม่ได้รู้อะไรเลยว่าควรจะอยู่บน (samba)

ดังนั้น…

ฉันจะรับรายการบริการทั้งหมดที่เริ่มต้นเมื่อเริ่มระบบได้อย่างไร และในฐานะที่เป็นส่วนขยายจะมีวิธีที่ง่ายในการรับ "สถานะ" ของบริการเหล่านี้ (ถ้าไม่ฉันจะวนรอบรายการนี้และเรียกใช้ "บริการ $ บริการสถานะ" หรืออะไรทำนองนี้)

ขอบคุณอเล็กซานเดอร์

แก้ไข 2015-05-04: ฉันใช้งาน Ubuntu 14.04

จุดสนใจหลักของคำถามนี้คือ:

แต่ฉันอยากรู้ว่าบริการใดที่เริ่มทำงานตั้งแต่เริ่มระบบยังทำงานอยู่

ด้วยเหตุนี้initctl listไม่ได้ช่วยอะไรมาก ไม่ได้คำนึงถึงบริการที่เริ่มต้นโดย/etc/init.dสคริปต์ (เทียบกับสคริปต์ upstart ใน/etc/init)

รายการของ/etc/rc?.d/S*ยังไม่ช่วย มันจะสร้างรายการของบริการซึ่งอาจได้รับการเริ่มต้นใน runlevel ที่กำหนด ไม่แสดงให้ฉันเห็นถ้าบริการที่ควรจะเริ่มต้นยังคงทำงานอยู่

โดยทั่วไปฉันกำลังมองหาบางอย่างเช่นsvcs -xจาก Solaris สำหรับ Ubuntu ด้วยsvcs -xฉันจะส่งออกถ้าบริการซึ่งเริ่มต้นทำงานไม่ได้อีกต่อไป สิ่งนี้ฉันต้องการ Ubuntu เช่นกัน

เหตุผล: ฉันต้องการตรวจสอบทั่วไป (มากกว่าหรือน้อยกว่า ... ) สำหรับระบบตรวจสอบ Icinga / Nagios ของเราซึ่งจะแจ้งเตือนฉันหากบริการไม่ทำงานอีกต่อไปซึ่งควรจะทำงานอยู่ เนื่องจากเรามีเซิร์ฟเวอร์ที่แตกต่างกันสำหรับลูกค้าที่แตกต่างกันจำนวนมากจึงไม่ได้ปรับขนาดเพื่อกำหนดรายการบริการ "สำคัญ"


Ubuntu รุ่นใด
AB


@Parto คำตอบที่ยอมรับในคำถามนั้นคือinitctl listรายการกระบวนการที่เริ่มต้น / ทำงาน แต่รายการนั้นจะรวมถึงกระบวนการที่เริ่มด้วยตนเอง
Sergiy Kolodyazhnyy

@AB ฉันใช้ Ubuntu 14.04
Alexander Skwar

@Parto askubuntu.com/questions/218/…ไม่ได้ให้คำตอบเลย ในฐานะที่เป็น @Serg initctl listเขียนคำตอบที่มีคือการใช้งาน แต่นั่นไม่ได้ตอบคำถามจริงๆเพราะมันจะแสดงบริการที่เริ่มด้วยตนเอง และจะไม่แสดงบริการที่ไม่ได้ทำงานอยู่
Alexander Skwar

คำตอบ:


19

บริการทั้งหมดเริ่มต้นเมื่อเริ่มต้น:

initctl list

รายการบริการทั้งหมดที่มีอยู่ในระบบ:

service --status-all

ไม่ถูกต้อง. ไม่ให้รายการบริการที่เปิดใช้งาน (เริ่มเมื่อเริ่มต้น) พวกเขาแสดงบริการที่รู้จักกันทั้งหมด (บางส่วนอาจถูกปิดใช้งาน) และไม่ว่าพวกเขากำลังทำงานอยู่หรือไม่ (ซึ่งไม่ได้หมายความว่าพวกเขาจะเริ่มต้นโดยอัตโนมัติ)
Reinier Post

2

นี่คือรายการของฉันเอง grep -i 'runlevel' /etc/init/* | awk '!/#/ && /start on/ && /2/ {gsub("/"," "); print $0 }' | cut -d ' ' -f4-

สามารถทำความสะอาดเอาต์พุตได้เล็กน้อยด้วย grep -i 'runlevel' /etc/init/* | awk '/start on/ && /2/ {gsub("/"," "); gsub(":", " ");gsub(".conf"," "); print $3 }'

ตอนนี้ขอรายละเอียด งานพุ่งพรวดทั้งหมดถูกจัดเก็บใน/etc/init/ใช่มั้ย งานที่นั่นทั้งหมดมีเส้นที่ระบุที่ runlevel พวกเขาเริ่มต้น Runlevel 2 เป็นการบูตปกติโดยปกติแล้ว runlevel เริ่มต้น ดังนั้นหากเรา grep ทุกบรรทัดที่พูดrunlevelและล้างเอาต์พุตของ grep ด้วย awk เพื่อจับคู่เฉพาะบรรทัดกับstart onและ runlevel # 2 เราจะได้รับรายการงานพุ่งพรวด ส่วนที่เหลือเป็นเพียงการจัดรูปแบบความต้องการเปลี่ยน / ในชื่อไฟล์ไปยังพื้นที่และตัดเส้นทางไปยังไฟล์เหล่านั้นโดยปล่อยชื่อไฟล์เอง

!/#/ส่วนหนึ่งคือการอยู่อาจจะออกความเห็นสั่งเริ่มต้นที่ฉันได้เพิ่มเองด้วยตนเอง

เหนือสิ่งอื่นใดมี/etc/rc2.dที่ (ถ้าฉันเข้าใจถูกต้อง) คุณมีสคริปต์ลำดับความสำคัญน้อยกว่า

น้ำมันดิบหนึ่งซับสำหรับที่: ls /etc/rc2.d/* | grep S | awk '{sub("S"," "); print $2}

สคริปต์ที่อยู่ในโฟลเดอร์นั้นที่ทำงานบน runlevel 2 นั้นมีชื่อขึ้นต้นด้วย S และตามด้วยหมายเลขลำดับความสำคัญ ตอนนี้โดยพื้นฐานแล้วเราได้ไฟล์ทั้งหมดที่เริ่มต้นด้วย S และเพียงแค่แสดงรายการพวกเขาด้วยชื่อลำดับความสำคัญเท่านั้น (ยังคงต้องคิดวิธีล้างข้อมูลนั้น)

เนื่องจาก muru ชี้ให้เห็นอย่างถูกต้องในความคิดเห็นนอกจากนี้ยังมี/etc/init/*.overrideไฟล์ซึ่งอาจ ".. .modify ว่างานจะทำงานอย่างไรโดยไม่ต้องแก้ไขไฟล์การกำหนดค่าโดยตรง" ( init manpage )

ในช่วงเวลาปัจจุบันเนื่องจากฉันไม่เคยมีประสบการณ์กับไฟล์เหล่านี้มากนักฉันสามารถแนะนำให้คุณดูไฟล์. แทนที่เท่านั้นโดยใช้ 'grep' manual '/etc/init/*.override' เพื่อแสดงรายการบริการที่บอกให้เริ่มต้น ด้วยตนเองด้วยinitctlหรือservicesคำสั่ง


โปรดทราบว่าเนื่องจากการขึ้นต่อกันของเหตุการณ์จึงไม่สามารถกำหนดได้อย่างง่ายดายหากบริการที่กำหนดจะส่งผลให้บริการอื่น ๆ เริ่มต้นขึ้น นอกจากนี้ยังมี.overrideไฟล์เล็ก ๆ
muru

@Serg ขอบคุณ แต่นั่นเกี่ยวข้องกับสิ่งที่พุ่งพรวดเท่านั้น นอกจากนี้ "ls /etc/rc2.d/* ... " ก็ไม่ได้ช่วยอะไรมาก มันจะแสดงว่าบริการใดบ้างที่อาจเริ่มทำงาน แต่มันไม่แสดงซึ่งยังคงให้บริการอยู่ ฉันเดาว่าประเด็นหลักของโพสต์ของฉันยังไม่ชัดเจน ฉันกำลังมองหา: แต่ฉันอยากจะรู้ว่าถ้าบริการที่ได้รับการเริ่มต้นที่บูตยังคงทำงานอยู่ ไม่ทราบว่าคุณรู้จักโซลาริสหรือไม่ ที่นั่นฉันแค่ทำ "svcs -x" และถ้ามันคืนบางอย่างฉันรู้ว่ามีบางอย่างไม่ทำงาน ฉันต้องการสิ่งนี้สำหรับ Ubuntu
Alexander Skwar

เราสามารถเขียนสคริปต์หรือฟังก์ชั่น bashrc เพื่อเปรียบเทียบผลลัพธ์ของสายการบินหนึ่งของฉันที่นั่นและของรายการ initctl ต้องการให้ฉันโพสต์นั้น?
Sergiy Kolodyazhnyy

@Serg well - หากคุณเสนอ;)
Alexander Skwar

2

รายการบริการทั้งหมดและสถานะ runlevel ตามลำดับ - สไตล์ chkconfig:

# sysv-rc-conf --list

acpid        2:on       3:on    4:on    5:on
apache-htcac 0:off      1:off   2:off   3:off   4:off   5:off   6:off
apache2      0:off      1:off   2:on    3:on    4:on    5:on    6:off

การแก้ไขข้อความแบบโต้ตอบตามรายการทั้งหมด:

# sysv-rc-conf

l SysV Runlevel Config   -: stop service  =/+: start service  h: help  q: quit qk
x 
x service      1       2       3       4       5       0       6       S 
x ----------------------------------------------------------------------------
x acpid       [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x apache-ht$  [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]
x apache2     [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x
x Use the arrow keys or mouse to move around.      ^n: next pg     ^p: prev pg
x                        space: toggle service on / off

อาจต้องติดตั้งหากไม่มี:

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