如何使用 chkconfig 和 systemctl 命令启用或禁用 Linux 服务
发布网友
发布时间:2024-10-03 16:16
我来回答
共1个回答
热心网友
时间:2024-10-03 16:38
在Linux系统中,管理员经常需要管理服务的启动和停止。这篇文章将介绍如何使用chkconfig和systemctl命令来启用或禁用Linux服务。
在Linux中,当安装带有服务和守护进程的包时,系统默认会添加初始化和systemd脚本,但这些服务并未被启用。我们需要手动开启或关闭这些服务。Linux有三个著名的且一直在使用的初始化系统。
初始化系统的作用是内核引导系统启动过程中第一个启动的进程,进程id是1,除非系统关机否则它一直在后台运行。init首先根据/etc/inittab文件决定Linux运行的级别,然后根据运行级别在后台启动所有其他进程和应用程序。
下面是Linux中常用的运行级别(从0到6共七个运行级别):0 - 关机;1 - 单用户模式;2 - 系统模式;3 - 多用户模式;4 - 保留;5 - X11图形模式;6 - 重新启动。
接下来是Linux系统中最常用的三个初始化系统:
System V(Sys V)是类Unix系统的第一个也是传统的初始化系统,init是内核引导系统启动过程中第一个启动的程序,它是所有程序的父进程。大部分Linux发行版最初使用的是Sys V初始化系统。在过去的几年中,已发布多个初始化系统以解决标准版本中的设计限制,例如:launchd、Service Management Facility、systemd和Upstart。
然而,systemd已被多个主要的Linux发行版采用以取代传统的SysV初始化系统。
Upstart是一个基于事件的/sbin/init守护进程的替代品,它在系统启动过程中处理任务和服务的启动,在系统运行期间监视它们,在系统关机时关闭它们。它最初是为Ubuntu设计的,但也可以完美部署在所有Linux系统中,用来代替古老的SysV。
Upstart被用于Ubuntu从9.10到Ubuntu 14.10和基于RHEL6的系统中,之后它被systemd取代。
systemd是一个新的初始化系统和系统管理器,被所有主要的Linux发行版采用以取代传统的SysV初始化系统。它兼容SysV和LSB初始化脚本,并可以直接替代SysV初始化系统。systemd是第一个被内核启动的程序,它的PID是1。它所有程序的父进程,Fedora15是第一个用systemd取代Upstart的发行版。systemctl用于命令行,它是管理systemd守护进程/服务的主要工具,例如:(开启、重启、关闭、启用、禁用、重载和状态)
systemd使用.service文件而不是bash脚本(SysVinit使用的)。systemd将所有守护进程添加到cgroups中排序,你可以通过浏览/cgroup/systemd文件查看系统等级。
如何使用chkconfig命令启用或禁用引导服务?chkconfig是一个命令行工具,允许你在指定运行级别下启动所选服务,以及列出所有可用服务及其当前设置。它还需要超级管理员权限(root或sudo)来运行这个命令。所有的服务脚本位于/etc/rd.d/init.d文件中。
如何列出运行级别中的所有服务?使用--list参数会展示所有的服务及其当前状态(启用或禁用服务的运行级别)。
如何查看指定服务的状态?如果你想查看运行级别下某个服务的状态,你可以使用下面的格式匹配出需要的服务。例如,我想查看运行级别中auditd服务的状态。
如何在指定运行级别中启用服务?使用--level参数启用指定运行级别下的某个服务,例如在运行级别3和运行级别5下启用httpd服务。
如何在指定运行级别下禁用服务?同样使用--level参数禁用指定运行级别下的服务,例如在运行级别3和运行级别5中禁用httpd服务。
如何将一个新服务添加到启动列表中?-–add参数允许我们添加任何新的服务到启动列表中,默认情况下,新添加的服务会在运行级别2、3、4、5下自动开启。
如何从启动列表中删除服务?可以使用--del参数从启动列表中删除服务,例如如何从启动列表中删除Nagios服务。
如何使用systemctl命令启用或禁用开机自启服务?systemctl用于命令行,它是一个用来管理systemd守护进程/服务的基础工具,例如:(开启、重启、关闭、启用、禁用、重载和状态)。
所有服务创建的unit文件位于/etc/systemd/system/。
如何列出全部的服务?使用下面的命令列出全部的服务(包括启用的和禁用的)。
使用下面的格式通过正则表达式匹配出你想要查看的服务的当前状态。下面是使用systemctl命令查看httpd服务的状态。
如何让指定的服务开机自启?使用下面格式的systemctl命令启用一个指定的服务。启用服务将会创建一个符号链接,如下可见:
运行下列命令再次确认服务是否被启用。
如何禁用指定的服务?运行下面的命令禁用服务将会移除你启用服务时所创建的符号链接。
运行下面的命令再次确认服务是否被禁用。
如何查看系统当前的运行级别?使用systemctl命令确认你系统当前的运行级别。runlevel命令仍然可在systemd下工作,不过运行级别对于systemd来说是一个历史遗留的概念。所以我建议你全部使用systemctl命令。
我们当前处于运行级别3,它等同于下面显示的multi-user.target。