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


11

ฉันเพิ่งย้ายจาก Windows ไปเป็น Linux (xubuntu)

ฉันเป็นนักพัฒนาและติดตั้งทุกอย่างที่ฉันต้องการ LAMP ใน Windows ฉันเคยปิดบริการที่ไม่จำเป็นทั้งหมด - ฉันไม่ต้องการบริการ Apache หรือ MySQL ที่ทำงานอยู่ตลอดเวลา เมื่อใดก็ตามที่ฉันต้องการ MySQL ฉันเคยใช้:

net start mysql

ฉันจะทำสิ่งเดียวกันใน Linux ได้อย่างไร

  1. ปิดใช้งาน daemons ที่ไม่จำเป็นจากการเริ่มอัตโนมัติหรือไม่
  2. เริ่มต้นได้เมื่อฉันต้องการ

3
ฉันคิดว่าคุณควรรวมรุ่นที่แน่นอนของ Ubuntu ที่คุณใช้อยู่ อูบุนตูเวอร์ชันใหม่ใช้พุ่งพรวดซึ่งมี gotchas เป็นของตัวเอง
vtest

แก้ไข: ฉันใช้ Xubuntu รุ่นล่าสุด 10.04 แต่ id ไม่ต้องการใช้และ GUI สำหรับสิ่งนี้เฉพาะจากเทอร์มินัล ดูเหมือน @prhq ได้คำตอบของเขา พุ่งพรวดคืออะไร?
Aviv

อยู่ที่อื่นไม่ว่าจะใน Server Fault หรือ Unix ยังคงมีประโยชน์แม้ว่า
ripper234

คำตอบ:


11

ในการกระจาย linux ส่วนใหญ่คุณสามารถเริ่ม / หยุดบริการด้วยตนเองโดย (เป็น root หรือใช้ sudo) ที่รันคำสั่งต่อไปนี้:

# /etc/init.d/apache2 start
# /etc/init.d/mysqld start

# /etc/init.d/apache2 stop
# /etc/init.d/mysqld stop

บริการใดที่เริ่มโดยอัตโนมัติจะถูกควบคุมโดยลิงก์ไฟล์ใน /etc/rcutyrunlevellike.d/ ค้นหา runlevel ปัจจุบันของคุณโดยใช้คำสั่ง "runlevel" เป็นรูต

# runlevel
N 2

สิ่งที่ระบุที่นี่ runlevel 2 ตอนนี้คุณเพียงแค่ลบไฟล์เหล่านั้นใน /etc/rc2.d/ ซึ่งคุณไม่ต้องการเริ่มต้น

การลบ apache และ Mysql บนเดสก์ท็อปมักจะใช้ได้ แต่ระวังการลบบริการอื่น


3
สิ่งนี้ค่อนข้างทำให้เข้าใจผิดแม้ว่าคุณจะพูดว่า "การแจกแจงส่วนใหญ่" ฉันจะมีคุณสมบัติสูตรของคุณเป็น distro เฉพาะ
vtest

ท่านใดที่มีในใจ? ฉันนึกถึง ArchLinux เท่านั้น (แต่ผู้ใช้เหล่านั้นควรรู้แล้วว่ากำลังทำอะไรอยู่) แน่นอน distros บางอันมีเครื่องมือเฉพาะ แต่เทคนิคดังกล่าวใช้งานได้ดีเช่นกัน
hultqvist

ค่อนข้างแปลกฉันเห็นไฟล์ชื่อ S91apache2 ในไดเรกทอรี /etc/rc2.d ฉันเดาว่ามันจะเริ่ม apache2 ... แต่ฉันไม่พบไฟล์ใด ๆ ที่เกี่ยวข้องกับ MySQL ฉันจะเรียนรู้เกี่ยวกับ daemons เริ่มต้นอัตโนมัตินี้ได้ที่ไหน
Aviv

จากนั้นเซิร์ฟเวอร์ mysql อาจไม่ได้รับการกำหนดค่าให้เริ่มโดยอัตโนมัติ เว็บไซต์นี้ดูเหมือนจะมีคำอธิบายที่ดี: yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
hultqvist

ทราบว่าภายใต้ * BSD และต้นไม้ Slackware, /etc/rc.d/ไดเรกทอรี
new123456

15

สำหรับ Ubuntu รุ่นที่ใช้ systemd (15.04 ขึ้นไป) ให้ใช้:

systemctl disable service

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

เพื่อค้นหาชื่อบริการที่ใช้

service --status-all

คำสั่งอื่น ๆ :

systemctl start service- ใช้เพื่อเริ่มบริการ ไม่คงอยู่หลังจากรีบูต

systemctl stop service- ใช้เพื่อหยุดบริการ ไม่คงอยู่หลังจากรีบูต

systemctl restart service - ใช้เพื่อรีสตาร์ทบริการ

systemctl status service- แสดงสถานะของบริการ บอกว่าบริการกำลังทำงานอยู่หรือไม่

systemctl enable service- เปิดบริการในการรีบูตครั้งต่อไปหรือในเหตุการณ์เริ่มต้นครั้งถัดไป ยังคงมีอยู่หลังจากรีบูต

systemctl disable service- ปิดบริการเมื่อรีบูตครั้งถัดไปหรือในเหตุการณ์หยุดถัดไป ยังคงมีอยู่หลังจากรีบูต


2
น่าเสียดายที่มันไม่ใช่คำตอบที่ได้รับการยอมรับ :) ขอบคุณฉันลืมคำสั่งนั้นโดยสิ้นเชิง
Nordes

8

Ubuntu 10.04 อยู่ในช่วงกลางของการเปลี่ยนแปลงระหว่างสองระบบการจัดการบริการ: SysVinit (ระบบดั้งเดิมที่ใช้โดย Linux ดิสทริบิวชันส่วนใหญ่) และ Upstart (ระบบใหม่ที่ผลักดันโดย Ubuntu และมีให้ใช้มากขึ้นเรื่อย ๆ )

sysvinit /etc/init.dสคริปต์การจัดการบริการอยู่ใน คุณสามารถเริ่มให้บริการกับและหยุดมันด้วย/etc/init.d/SERVICENAME start /etc/init.d/SERVICENAME stopการให้บริการเริ่มต้นโดยอัตโนมัติเมื่อบู๊ตขึ้นอยู่กับว่ามีการเชื่อมโยงสัญลักษณ์ใน/etc/rc?.dตำแหน่งที่?เป็นตัวเลขจาก2ถึง5(ระดับrunlevel ) update-rc.d SERVICENAME disableวิธีที่ง่ายที่สุดในการป้องกันการบริการเริ่มต้นโดยอัตโนมัติในการบูตคือการใช้งาน

ไฟล์คอนฟิกูเรชันการจัดการเซอร์วิสพุ่งพรวดกำลังเข้า/etc/initมา คุณสามารถเริ่มให้บริการกับและหยุดมันด้วยstart SERVICENAME stop SERVICENAMEแฟ้มการกำหนดค่าที่มีเส้นแสดงให้เห็นเมื่อเริ่มต้นการให้บริการ:/etc/init/SERVICENAME.conf start on …วิธีที่ง่ายที่สุดในการปิดใช้งานบริการเหล่านี้คือเปลี่ยนบรรทัดstart on never and (…)นั้นเป็น .confหากคุณไม่ต้องการที่จะแก้ไขไฟล์คุณสามารถครบถ้วนปิดการใช้บริการโดยไม่ทำให้เกิดความสับสนระบบบรรจุภัณฑ์โดยการเปลี่ยนชื่อมันจะไม่จบใน

dpkg-divert --add --local --divert /etc/init/foo.conf.disabled --rename /etc/init/foo.conf

ในฐานะของ Ubuntu 10.04, Apache มาพร้อมกับสคริปต์ SysVinit และ Mysql มาพร้อมกับสคริปต์พุ่งพรวด


การแก้ไข servicename.conf เป็นวิธีที่ต้องการจริงๆหรือไม่? โดยเฉพาะอย่างยิ่งเมื่อการอัปเดตสามารถอัปเดตไฟล์การกำหนดค่าเหล่านั้นในทางทฤษฎีและแทนที่การเปลี่ยนแปลงของคุณ
Mass

@Masse: มันไม่ได้เป็นวิธีที่ต้องการเสมอไป แต่มีข้อได้เปรียบในการทำงานอยู่เสมอ บริการบางอย่างอ่านไฟล์/etc/defaultและมีSTART_FOOตัวเลือกที่คุณสามารถปิดได้ แต่หลายคนคาดหวังให้ทำงานหากติดตั้งอยู่ การอัปเดตจะไม่เขียนทับการเปลี่ยนแปลงของคุณโดยไม่ต้องแจ้งให้ทราบเนื่องจากสิ่งเหล่านี้ล้วน แต่มีค่า
Gilles 'หยุดความชั่วร้าย'

ว้าว. ดูเหมือนว่าจะเป็นก้าวสำคัญไปข้างหลัง
Masse

@Masse: Conffiles มีไว้เพื่อแก้ไขโดยผู้ดูแลระบบ แต่ถ้าคุณไม่ต้องการทำเช่นนั้นคุณสามารถใช้dpkg-divertเพื่อเปลี่ยนชื่อไฟล์บริการ อย่างไรก็ตามหากคุณทำเช่นนั้นคุณจะไม่สามารถเริ่มบริการได้อย่างชัดเจน
Gilles 'หยุดชั่วร้าย'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.