ปิดการใช้งานบริการจากการเริ่มต้นในทุกระดับ


61

ฉันมีบริการfooซึ่งขณะนี้เริ่มต้นที่ระดับการทำงาน3ปีขึ้นไป ฉันจะหยุดมันจากการทำเช่นนั้นได้อย่างไรโดยไม่ใช้update-rc.d foo stop 3 .ซึ่ง (ถ้าฉันเข้าใจถูกต้อง) จะปิดบริการในการเปลี่ยนแปลง runlevel แต่ละครั้ง

(เช่นถ้าฉันอยู่ที่ runlevel 1และเปิดใช้งานfooแล้วเมื่อฉันเปลี่ยนเป็น runlevel 3มันจะถูกปิดใช้งานไม่ใช่หรือไม่)

ใช้ Debian GNU / Linux Lenny

คำตอบ:


57

คำว่า "หยุด" ไม่ได้ป้องกัน daemon จากการเริ่มต้น แต่จะปิดมันลงในขณะที่เข้าสู่ runlevel ที่ระบุ

หากคุณเพียงแค่ต้องการลบบริการ / daemon จาก runlevel เดียวupdate-rc.dตามที่ระบุไว้ใน bei freiheitหรือเพียงแค่ลบ symlinkจาก/etc/rcX.d/ที่ X คือ runlevel ของคุณ หากคุณไม่ต้องการให้บริการเริ่มต้นโดยอัตโนมัติupdate-rc.d -f foo removeจะทำเคล็ดลับ


2
ความคิดใด ๆ ที่จะทำใน Debian 8? sudo update-rc.d -f sunrpc removeไม่สำเร็จ; มันยังคงอยู่หลังจากรีบูต

Debian 9 มันไม่ได้ผลสำหรับฉันแล้วฉันก็รู้ว่าโอ้ derp ต้องการ sudo update-rc.d ไม่แสดงความคิดเห็นหากคุณลืม sudo ฉันยืนยันการเชื่อมโยงที่หายไปด้วยls /etc/rc*.d
Jason Dunkelberger

คำสั่งล้มเหลวบน Ubuntu16.04
Stephane

ตรวจสอบให้แน่ใจว่าคุณส่งชื่อบริการที่ถูกต้อง update-rc.d ไม่ได้ให้ความคิดเห็นใด ๆ แก่คุณหากไม่มีอยู่
marcovtwout

ถ้าคุณต้องการเปิดใช้งานอีกครั้งในภายหลัง ด้านล่าง @ คำตอบของ "ไม่ใช่ตอนนี้" จะดีกว่าเนื่องจากคุณสามารถปิดใช้งานและเปิดใช้งานอีกครั้งหลังจาก update-rc.d apache2 disable
Wadih M.

54

กำหนดค่าแอพพลิเคชั่น Linux Startup ด้วย sysv-rc-conf :

apt-get install sysv-rc-conf

ตามที่คนอื่น ๆ ได้ชี้ให้เห็นนี่คือupdate-rc.dสำหรับบรรทัด cmd

ตัวอย่างเช่นเรียกใช้

update-rc.d apache2 disable

เพื่อปิดใช้งาน apache2 จากระดับการทำงานทั้งหมด


เครื่องมือที่ยอดเยี่ยม - ไม่รู้เกี่ยวกับมัน ขอบคุณ!
PEra

1
โปรดทราบว่าสิ่งนี้จะไม่หยุดบริการที่ทำงานอยู่เพื่อให้คุณสามารถเพิ่มได้: service foo stopหรือรีบูตเซิร์ฟเวอร์
rubo77

15

สั้น:

ไม่มีวิธีที่เชื่อถือได้ในการทำเช่นนี้อย่างรวดเร็ว

ยาว:

Debian ปัจจุบัน (Debian ไม่เสถียร ณ วันที่ 2012-06-01) ไม่มีวิธีลัดที่เชื่อถือได้ในการปิดใช้งานบริการ / daemon อย่างสม่ำเสมอ - เนื่องจากการอัปเกรดแพคเกจ daemon จะรัน“ /etc/init.d/package restart” โดยไม่มีเงื่อนไขเพราะปิดการใช้งานสำหรับ runlevel นี้หรือไม่

เพื่อให้แน่ใจว่า daemon ไม่เริ่มทำงานคุณสามารถ:

  • ถอนการติดตั้ง
  • ทำการโอนโลคัลของสคริปต์ /etc/init.d/xyz (ด้วยวิธีนี้ไม่มีเครื่องมือใดที่จะค้นหาได้)
  • ใช้ / ละเมิดไฟล์ปรับแต่งของแพ็คเกจที่เกี่ยวข้องเพื่อกระตุ้นการออกเร็วของสคริปต์นั้น (เช่นใส่“ exit” แต่เนิ่น ๆ ใน / etc / default / xyz ในกรณีที่มันมาจากสคริปต์ init)
  • ดูในสคริปต์เริ่มต้นเพื่อหาวิธี "ทางการ" ที่กำหนดไว้ล่วงหน้าเพื่อไม่ให้เริ่มดีมอนนั้น

มี / คือ (?) บางขั้นตอนนโยบายเริ่มต้น - บางอย่างสำหรับสคริปต์ init ใน Debian ซึ่งควรจะเติมฟังก์ชันการทำงานที่ขาดหายไปนี้ - ฉันพยายามใช้มันพบว่ามันซับซ้อนพบข้อบกพร่องและไม่เคยแตะต้องมันอีกเลย

ปรับปรุง:

สลับไปที่ "systemd" ทางเลือกแทน "initd" มีแพ็คเกจเดเบียนอยู่และคุณสามารถปิดใช้งานบริการด้วยสิ่งนี้:

cd /etc/systemd/system
ln -s /dev/null xyz.service

1
+1 นี่คือคำตอบที่เป็นประโยชน์ - และถ้าฉันไม่ได้เกิดขึ้นกับมันฉันจะต้องต่อยในภายหลัง - ขอบคุณ!

คุณสามารถunlink xyz.serviceเช่นกัน?
jaggedsoft

@NextLocal ฉันลืมว่าทำไมฉันถึงเขียน แต่ฉันเชื่อว่าบริการที่มีสคริปต์ System V init systemdจะใช้งานได้ - ดังนั้นลิงก์บอกว่าอย่ามองหามัน
Robert Siemer

โปรดทราบว่าการแก้ไข/etc/default/xyzไฟล์เพื่อเพิ่มexitจะไม่ป้องกันผู้ทำแพ็กเกจที่จะเขียนทับไฟล์ด้วยเวอร์ชั่นที่ถูกต้องในการอัพเกรดครั้งต่อไป (แพคเกจจะบันทึกไฟล์การกำหนดค่าและในกรณีส่วนใหญ่สคริปต์ init จะไม่ถูกมองเช่นนี้) ดังนั้นในกรณีส่วนใหญ่ที่จะไม่ช่วย
Alexis Wilke

Devuan มาเพื่อช่วยเหลือ: แทนที่จะ systemd มันรวบรวมระบบ SysV rc.d / init.d แบบคลาสสิก (หรือ openrc เช่นกันหากมีคนเลือกสำหรับสิ่งนั้น)
Csaba Toth

5

เรียกใช้คำสั่งนี้

apt-get install rcconf

เมื่อติดตั้งแล้วให้รัน rcconf ใน SSH และคุณจะได้รับกล่องโต้ตอบแสดงบริการทั้งหมดที่ตั้งค่าให้ทำงานในการบูต เลือกสิ่งที่ต้องการโดยกด Space เพื่อปิด / เปิดใช้งานสิ่งที่คุณทำเสร็จแล้วคลิกที่ตกลงและบริการนั้นจะไม่เริ่มต้นใหม่ในการบูตครั้งถัดไป ใช้สิ่งนี้มานานหลายปี เครื่องมือที่มีประโยชน์มากสำหรับผู้ใช้ Debian / Ubuntu อย่างฉัน


ง่ายเหมือน 1,2,3! ขอบคุณสำหรับเครื่องมือบรรทัดคำสั่งเล็ก ๆ นี้
DanielaWaranie

2

ฉันสับสนในสิ่งที่คุณพยายามทำให้สำเร็จ

คุณต้องการให้ foo วิ่งระดับใด

หากคุณต้องการให้มันทำงานอยู่เสมอให้ใช้update-rc.d foo defaults; ที่จะหยุดมันใน 0, 1 และ 6 ในขณะที่ปล่อยให้มันรันใน 2, 3, 4 และ 5 (1 ไม่ควรรันอะไรเลยยกเว้นกระสุน 0 และ 6 หยุดและรีบูต)

หากคุณต้องการระบุระดับการรันที่จะทำงาน:

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .


1

เริ่มใช้งาน insserv จาก Debian7

เอาท์พุทบริการทั้งหมดและมันก็เรียกใช้ข้อมูล

insserv --showall

ลบสคริปต์ที่ระบุไว้ออกจาก runlevels ทั้งหมด

insserv --remove [specify_script]

0

Bootup Manager ของ Ubuntu นั้นเป็น sysv-rc-conf light , เป็นมิตรกว่า, เป็นเวอร์ชั่น GUI, และผู้คนจำนวนมากที่อ่านหัวข้อนี้จะขอบคุณ

http://www.marzocca.net/linux/bum.html


0

ในระบบที่ใช้หมวกสีแดงคุณสามารถใช้

chkconfig httpd off
chkconfig httpd --del

เพื่อลบเซิร์ฟเวอร์ออกจาก runlevels

ในระบบที่ใช้เดเบียนบริการทั้งหมดควรจะเริ่มโดยไฟล์ที่พบในไดเร็กทอรี /etc/rc?.d/ ไฟล์เหล่านี้จะมีลิงก์สัญลักษณ์ไปยังไฟล์ที่เกี่ยวข้องในไดเร็กทอรี /etc/init.d/ หากคุณต้องการให้บริการไม่เริ่มโดยค่าเริ่มต้นคุณสามารถเปลี่ยนชื่อ / ลบออกจากไดเรกทอรี /etc/rc?.d และการเปลี่ยนแปลงของคุณจะถูกเก็บไว้ในการอัพเกรดแพ็คเกจตราบใดที่ลิงก์เริ่มต้นหนึ่งยังคงปรากฏใน ไดเรกทอรีอื่น (3,4 และ 5) หรือคุณสามารถใช้คำสั่ง update-rc.d เพื่อเปลี่ยนลิงค์และถ้าคุณต้องการเริ่มบริการหลังจากนั้นคุณสามารถใช้ /etc/init.d/service_name start หากคุณไม่ได้เริ่มต้นเลย ให้ตัวเลือกที่สามารถใช้งานได้เช่นหยุดรีสตาร์ทโหลดซ้ำ ...

ฉันคิดว่าคุณสามารถใช้ sysv-rc-conf เพื่อปิดการใช้งานได้


คำถามถูกติดแท็ก Debian ไม่ใช่ Fedora หรือ Red Hat

0
sudo update-rc.d SERVICE disable

หากคุณต้องการระบุระดับการวิ่ง

sudo update-rc.d SERVICE disable|enable [S|2|3|4|5]

อย่าลืมเปลี่ยนบริการเป็นชื่อของโปรแกรม

sudo service SERVICE restart

0

ทำไมคุณไม่สำรองข้อมูลสคริปต์เริ่มต้นไว้ที่อื่นแล้วลบออกใน /etc/init.d/ หาก update-rc.d ไม่ทำงาน

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