永久禁用 Init 服务

永久禁用 Init 服务

我刚刚配置了一个运行 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,这些命令都会执行正确systemdupstart事情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

相关内容