使用 chkconfig 和 systemctl 命令启用或禁用 Linux 服务的方法
对于Linux管理员来说这是一个重要(美妙)的话题,所以每个人都必须知道,并练习怎样才能更高效的使用它们。
在Linux中,无论何时当你安装任何带有服务和守护进程的包,系统默认会把这些服务的初始化及systemd脚本添加进去,不过此时它们并没有被启用。
我们需要手动的开启或者关闭那些服务。Linux中有三个著名的且一直在被使用的初始化系统。
什么是初始化系统?
在以Linux/Unix为基础的操作系统上,init(初始化的简称)是内核引导系统启动过程中第一个启动的进程。
init的进程id(pid)是1,除非系统关机否则它将会一直在后台运行。
init首先根据/etc/inittab文件决定Linux运行的级别,然后根据运行级别在后台启动所有其他进程和应用程序。
BIOS、MBR、GRUB和内核程序在启动init之前就作为Linux的引导程序的一部分开始工作了。
下面是Linux中可以使用的运行级别(从0~6总共七个运行级别):
0:关机
1:单用户模式
2:多用户模式(没有NFS)
3:完全的多用户模式
4:系统未使用
5:图形界面模式
6:重启
下面是Linux系统中最常用的三个初始化系统:
- SystemV(SysV)
- Upstart
- systemd
什么是SystemV(SysV)?
SystemV(SysV)是类Unix系统第一个也是传统的初始化系统。init是内核引导系统启动过程中第一支启动的程序,它是所有程序的父进程。
大部分Linux发行版最开始使用的是叫作SystemV(SysV)的传统的初始化系统。在过去的几年中,已经发布了好几个初始化系统以解决标准版本中的设计限制,例如:launchd、ServiceManagementFacility、systemd和Upstart。
但是systemd已经被几个主要的Linux发行版所采用,以取代传统的SysV初始化系统。
什么是Upstart?
Upstart是一个基于事件的/sbin/init守护进程的替代品,它在系统启动过程中处理任务和服务的启动,在系统运行期间监视它们,在系统关机的时候关闭它们。
它最初是为Ubuntu而设计,但是它也能够完美的部署在其他所有Linux系统中,用来代替古老的System-V。
Upstart被用于Ubuntu从9.10到Ubuntu14.10和基于RHEL6的系统,之后它被systemd取代。
什么是systemd?
systemd是一个新的初始化系统和系统管理器,它被用于所有主要的Linux发行版,以取代传统的SysV初始化系统。
systemd兼容SysV和LSB初始化脚本。它可以直接替代SysV初始化系统。systemd是被内核启动的第一个程序,它的PID是1。
systemd是所有程序的父进程,Fedora15是第一个用systemd取代upstart的发行版。systemctl用于命令行,它是管理systemd的守护进程/服务的主要工具,例如:(开启、重启、关闭、启用、禁用、重载和状态)
systemd使用.service文件而不是bash脚本(SysVinit使用的)。systemd将所有守护进程添加到cgroups中排序,你可以通过浏览/cgroup/systemd文件查看系统等级。
如何使用chkconfig命令启用或禁用引导服务?
chkconfig实用程序是一个命令行工具,允许你在指定运行级别下启动所选服务,以及列出所有可用服务及其当前设置。
此外,它还允许我们从启动中启用或禁用服务。前提是你有超级管理员权限(root或者sudo)运行这个命令。
所有的服务脚本位于/etc/rd.d/init.d文件中
如何列出运行级别中所有的服务
--list参数会展示所有的服务及其当前状态(启用或禁用服务的运行级别):
#chkconfig--list
NetworkManager 0:off 1:off 2:on 3:on 4:on 5:on 6:off
abrt-ccpp 0:off 1:off 2:off 3:on 4:off 5:on 6:off
abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
.
.
如何查看指定服务的状态
如果你想查看运行级别下某个服务的状态,你可以使用下面的格式匹配出需要的服务。
比如说我想查看运行级别中auditd服务的状态
#chkconfig--list|grepauditd auditd0:off1:off2:on3:on4:on5:on6:off
如何在指定运行级别中启用服务
使用--level参数启用指定运行级别下的某个服务,下面展示如何在运行级别3和运行级别5下启用httpd服务。
#chkconfig--level35httpdon
如何在指定运行级别下禁用服务
同样使用--level参数禁用指定运行级别下的服务,下面展示的是在运行级别3和运行级别5中禁用httpd服务。
#chkconfig--level35httpdoff
如何将一个新服务添加到启动列表中
-–add参数允许我们添加任何新的服务到启动列表中,默认情况下,新添加的服务会在运行级别2、3、4、5下自动开启。
#chkconfig--addnagios
如何从启动列表中删除服务
可以使用--del参数从启动列表中删除服务,下面展示的是如何从启动列表中删除Nagios服务。
#chkconfig--delnagios
如何使用systemctl命令启用或禁用开机自启服务?
systemctl用于命令行,它是一个用来管理systemd的守护进程/服务的基础工具,例如:(开启、重启、关闭、启用、禁用、重载和状态)。
所有服务创建的unit文件位与/etc/systemd/system/。
如何列出全部的服务
使用下面的命令列出全部的服务(包括启用的和禁用的)。
#systemctllist-unit-files--type=service UNITFILESTATE arp-ethers.servicedisabled auditd.serviceenabled autovt@.serviceenabled blk-availability.servicedisabled brandbot.servicestatic chrony-dnssrv@.servicestatic chrony-wait.servicedisabled chronyd.serviceenabled cloud-config.serviceenabled cloud-final.serviceenabled cloud-init-local.serviceenabled cloud-init.serviceenabled console-getty.servicedisabled console-shell.servicedisabled container-getty@.servicestatic cpupower.servicedisabled crond.serviceenabled . . 150unitfileslisted.
使用下面的格式通过正则表达式匹配出你想要查看的服务的当前状态。下面是使用systemctl命令查看httpd服务的状态。
#systemctllist-unit-files--type=service|grephttpd httpd.servicedisabled
如何让指定的服务开机自启
使用下面格式的systemctl命令启用一个指定的服务。启用服务将会创建一个符号链接,如下可见:
#systemctlenablehttpd Createdsymlinkfrom/etc/systemd/system/multi-user.target.wants/httpd.serviceto/usr/lib/systemd/system/httpd.service.
运行下列命令再次确认服务是否被启用。
#systemctlis-enabledhttpd enabled
如何禁用指定的服务
运行下面的命令禁用服务将会移除你启用服务时所创建的符号链接。
#systemctldisablehttpd Removedsymlink/etc/systemd/system/multi-user.target.wants/httpd.service.
运行下面的命令再次确认服务是否被禁用。
#systemctlis-enabledhttpd disabled
如何查看系统当前的运行级别
使用systemctl命令确认你系统当前的运行级别,runlevel命令仍然可在systemd下工作,不过,运行级别对于systemd来说是一个历史遗留的概念。所以我建议你全部使用systemctl命令。
我们当前处于运行级别3,它等同于下面显示的multi-user.target。
#systemctllist-units--type=target UNITLOADACTIVESUBDESCRIPTION basic.targetloadedactiveactiveBasicSystem cloud-config.targetloadedactiveactiveCloud-configavailability cryptsetup.targetloadedactiveactiveLocalEncryptedVolumes getty.targetloadedactiveactiveLoginPrompts local-fs-pre.targetloadedactiveactiveLocalFileSystems(Pre) local-fs.targetloadedactiveactiveLocalFileSystems multi-user.targetloadedactiveactiveMulti-UserSystem network-online.targetloadedactiveactiveNetworkisOnline network-pre.targetloadedactiveactiveNetwork(Pre) network.targetloadedactiveactiveNetwork paths.targetloadedactiveactivePaths remote-fs.targetloadedactiveactiveRemoteFileSystems slices.targetloadedactiveactiveSlices sockets.targetloadedactiveactiveSockets swap.targetloadedactiveactiveSwap sysinit.targetloadedactiveactiveSystemInitialization timers.targetloadedactiveactiveTimers
总结
以上所述是小编给大家介绍的使用chkconfig和systemctl命令启用或禁用Linux服务的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!