我刚刚配置了一个运行 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:
这让我相信系统正在运行 upstart。好吧,我查看了一下,在 upstart 中禁用服务的正确方法是添加覆盖文件。所以我运行:
% 'manual' > /etc/init/httpd.override
然后重启我的服务器。但是 httpd 仍在运行!对此感到困惑,我决定通过运行来检查 upstart 是否是 init 服务
% readlink /proc/1/exe
/sbin/init
嗯,这不是我期望看到的。也许我根本没有运行 upstart。有没有确定的方法来检查?如果我正在运行 init,永久禁用服务的推荐方法是什么?我对这一切都很陌生,而且似乎有很多相互矛盾的观点。
感谢大家的帮助。
答案1
在几乎任何 RedHat 派生发行版下禁用服务的方法是使用以下chkconfig
命令:
# chkconfig httpd off
停止正在运行的服务:
# service httpd stop
无论您的系统运行的是、还是 vanilla,这些命令都会执行正确systemd
的upstart
事情SysVInit
。
值得一提的是,尽管upstart
在 CentOS 6 中运行大多数服务,但实际上使用的是init.d
位于 中的旧脚本/etc/rc.d/rc<RUNLEVEL>.d
。对于这些服务,chkconfig
管理 中的符号链接/etc/rc.d/init.d
。
答案2
使用以下方法禁用您不想在系统启动期间启动的服务查配置。
列出可用服务及其状态
chkconfig --list
在运行级别 2345 中禁用服务 htttpd
chkconfig --level 2345 httpd off