Centos

永久禁用初始化服務

  • August 5, 2013

我剛剛配置了一個執行 CentOS 6 的新 VPS,它帶有 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仍在執行!對此感到困惑,我決定通過執行檢查 upstart 是 init 服務

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

好吧,這不是我期望看到的。也許我畢竟不是暴發戶。有確定的檢查方法嗎?如果我正在執行 init,永久禁用服務的推薦方法是什麼?我對這一切都很陌生,而且似乎有很多相互矛盾的意見。

感謝大家的幫助。

在幾乎任何 RedHat 派生的發行版下禁用服務的方法是使用以下chkconfig命令:

# chkconfig httpd off

並停止正在執行的服務:

# service httpd stop

無論您的系統是執行、還是 vanilla,這些命令都會做正確systemdupstartSysVInit

值得一提的是,儘管upstart在 CentOS 6 中執行大多數服務實際上使用的是遺留init.d腳本,位於/etc/rc.d/rc<RUNLEVEL>.d. 對於這些服務,chkconfig管理/etc/rc.d/init.d.

引用自:https://serverfault.com/questions/528737