ปิดใช้งานบริการเริ่มต้นอย่างถาวร


10

ฉันเพิ่งเตรียม VPS ใหม่ที่รัน CentOS 6 และมาพร้อมกับ Apache

ฉันต้องการปิดการใช้งาน Apache เพราะฉันจะใช้ Nginx แทน

ฉันรู้ว่าฉันสามารถลบสคริปต์ใน /etc/init.d/ แต่ฉันไม่ต้องการทำเช่นนั้นเพราะมันเป็นเรื่องของหุ้นที่มาพร้อมกับระบบ ฉันอยากจะปิดการใช้งานบริการอย่างสง่างาม

ฉันคิดว่าฉันจะสามารถใส่บางสิ่งใน / etc / inittab แต่ inittab ประกอบด้วย:

# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:3:initdefault:

สิ่งนี้ทำให้ฉันเชื่อว่าระบบกำลังพุ่งพรวด ฉันดูแล้ววิธีที่ถูกต้องในการปิดการใช้งานบริการในการเริ่มต้นคือการเพิ่มไฟล์แทนที่ ดังนั้นฉันวิ่ง:

% 'manual' > /etc/init/httpd.override

และรีบูตเซิร์ฟเวอร์ของฉัน แต่ httpd ยังคงทำงานอยู่! ด้วยความสับสนนี้ฉันตัดสินใจที่จะตรวจสอบว่าการพุ่งพรวดเป็นบริการ init โดยการเรียกใช้

% readlink /proc/1/exe
/sbin/init

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

ขอบคุณทุกท่านสำหรับความช่วยเหลือของคุณ


ทำไมไม่เพียงลบ apache ออกหากคุณไม่ต้องการใช้มัน
Frederik Nielsen

เพราะฉันอาจต้องการใช้ในอนาคตสำหรับแอปพลิเคชัน Python ที่ใช้ proxying ด้วย mod_wsgi หรือใช้งาน PHP สำหรับตอนนี้ฉันไม่ต้องการใช้ และนี่เป็นปัญหาที่ฉันอาจมีอีกในอนาคตด้วยบริการที่แตกต่างเช่นกัน
Max Bucknell

คำตอบ:


16

วิธีที่คุณปิดใช้งานบริการภายใต้การแจกจ่าย RedHat ที่ได้รับคือการใช้chkconfigคำสั่ง:

# chkconfig httpd off

และเพื่อหยุดบริการที่กำลังทำงานอยู่:

# service httpd stop

คำสั่งเหล่านี้จะทำสิ่งที่ถูกต้องโดยไม่คำนึงถึงว่าระบบของคุณทำงานsystemd, หรือวานิลลาupstartSysVInit

สำหรับสิ่งที่คุ้มค่าแม้จะมีการเรียกใช้upstartบริการมากที่สุดใน CentOS 6 จริงใช้มรดกสคริปต์ที่ตั้งอยู่ในinit.d /etc/rc.d/rc<RUNLEVEL>.dสำหรับบริการเหล่านี้chkconfigจัดการ symlinks /etc/rc.d/init.dใน


ฉันพบสิ่งนี้โดยค้นหาสิ่งที่เทียบเท่ากับ update-rc.d จากคำตอบของ trillan กำลังจะตอบคำถามของฉันเอง แต่คุณก็เอาชนะฉันได้ ขอบคุณมาก larsks
Max Bucknell

4

ปิดการใช้งานบริการที่คุณไม่ต้องการที่จะเริ่มต้นในระหว่างการบูตระบบโดยใช้chkconfig

รายการบริการที่มีอยู่กับรัฐของพวกเขา

chkconfig --list

ปิดการใช้งานบริการ htttpd ใน runlevel 2345

chkconfig --level 2345 httpd off

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