我刚configuration了一个运行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仍在运行! 困惑于此,我决定通过运行来检查新贵是否是init服务
% readlink /proc/1/exe /sbin/init
那么这不是我期待看到的。 也许我没有跑起来, 有没有确定的方法来检查? 如果我正在运行init,build议永久禁用服务的方式是什么? 我对这一切都是陌生的,在那里似乎有许多相互矛盾的观点。
感谢大家的帮助。
在基于任何RedHat派生的分发下禁用服务的方式是使用chkconfig命令:
# chkconfig httpd off
并停止正在运行的服务:
# service httpd stop
无论您的系统是否正在运行systemd , upstart或vanilla SysVInit ,这些命令都会执行正确的SysVInit 。
值得一提的是,尽pipe运行得很好,CentOS 6中的大多数服务实际上都使用了传统的init.d脚本,位于/etc/rc.d/rc<RUNLEVEL>.d 。 对于这些服务, chkconfigpipe理/etc/rc.d/init.d的符号链接。
使用chkconfig在系统引导期间禁用您不想启动的服务。
列出可用的服务及其状态
chkconfig --list
在运行级别2345中禁用服务htttpd
chkconfig --level 2345 httpd off