当前位置: 首页 > 科技观察

如何使用chkconfig和systemctl命令启用或禁用Linux服务

时间:2023-03-20 15:28:50 科技观察

是Linux管理员的重要(也是精彩)话题,因此每个人都必须知道并练习如何有效地使用它们。在Linux中,每当你安装任何带有服务和守护进程的包时,系统都会默认添加这些服务的初始化和systemd脚本,但此时并没有启用。我们需要手动启用或禁用这些服务。Linux中有三个著名的和使用过的init系统。什么是初始化系统?在基于Linux/Unix的操作系统上,init(initialization的缩写)是内核引导系统启动过程中第一个启动的进程。init的进程id(pid)为1,它会在后台运行,直到系统关机。init首先根据/etc/inittab文件判断Linux运行的级别,然后根据运行级别在后台启动所有其他进程和应用程序。BIOS、MBR、GRUB和内核程序在启动init之前作为Linux引导加载程序的一部分开始工作。以下是Linux可以使用的操作级别(0到6共7个操作级别):0:关机1:单用户模式??2:多用户模式(无NFS)3:完全多用户模式4:系统未使用5:图形界面模式6:重启以下是Linux系统中最常用的三种初始化系统:系统V(SysV)Upstartsystemd什么是系统V(SysV)?系统V(SysV)是一个类Unix系统**首先也是一个传统的初始化系统。init是内核引导系统启动过程中第一个启动的程序,是所有程序的父进程。大多数Linux发行版都从称为SystemV(SysV)的传统初始化系统开始。在过去的几年里,已经发布了几个init系统来解决标准发行版中的设计限制,例如:launchd、ServiceManagementFacility、systemd和Upstart。但systemd已被几个主要的Linux发行版采用,以取代传统的SysVinit系统。什么是暴发户?Upstart是/sbin/init守护进程的基于事件的替代品,它在系统启动期间处理启动任务和服务,在系统运行时监视它们,并在系统关闭时关闭它们。它最初是为Ubuntu设计的,但它也可以安全地部署在所有其他Linux系统中,以取代古老的System-V。Upstart在Ubuntu9.10到Ubuntu14.10和基于RHEL6的系统中使用,之后被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--listNetworkManager0:off1:off2:on3:on4:on5:on6:offabrt-ccpp0:off1:off2:off3:on4:off5:on6:offabrtd0:关闭1:关闭2:关闭3:开启4:关闭5:开启6:offacpid0:关闭1:关闭2:开启3:开启4:开启5:开启6:offatd0:关闭1:关闭2:off3:on4:on5:on6:offauditd0:off1:off2:on3:on4:on5:on6:off..如何查看指定服务的状态如果要查看运行级别下的一个服务,可以使用下面的格式来匹配需要的服务。比如我想在运行级别查看auditd服务的状态#chkconfig--list|grepauditdauditd0: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的daemons/services的基本工具,例如:(start,restart,shutdown,enable,disable,reloadandstatus)。所有服务创建的单元文件位于/etc/systemd/system/。如何列出所有服务使用以下命令列出所有服务(启用和禁用)。#systemctllist-unit-files--type=serviceUNIT文件状态arp-ethers.servicedisabledauditd.serviceenabledautovt@.serviceenabledblk-availability.servicedisabledbrandbot.servicestaticchrony-dnssrv@.servicestaticchrony-wait.servicedisabledchronyd.serviceenabledcloud-config.serviceenabledcloud-final.serviceenabledcloud-init-local.serviceenabledcloud-init.serviceenabledconsole-getty.servicedisabledconsole-shell.servicedisabledcontainer-getty@.servicestaticcpupower.servicedisabledcrond.service已启用..列出了150个单元文件。使用如下格式通过正则表达式匹配你想查看的服务的当前状态。下面是使用systemctl命令查看httpd服务的状态。#systemctllist-unit-files--type=服务|grephttpdhttpd.servicedisabled如何使指定服务开机自动启动使用如下格式的systemctl命令来启用指定服务。启用该服务将创建一个符号链接,如下所示:#systemctlenablehttpdCreatedsymlinkfrom/etc/systemd/system/multi-user.target.wants/httpd.serviceto/usr/lib/systemd/system/httpd.service。运行以下命令以仔细检查该服务是否已启用。#systemctlis-enabledhttpenabled如何禁用指定服务运行以下命令禁用服务将删除您在启用该服务时创建的符号链接。#systemctl禁用httpdRemoved符号链接/etc/systemd/system/multi-user.target.wants/httpd.service。运行以下命令确认服务是否再次被禁用。#systemctlis-enabledhttpddisabled如何查看系统当前的运行级别使用systemctl命令可以确认您的系统当前的运行级别。runlevel命令在systemd下仍然可以工作,但是运行级别是systemd的一个历史概念。所以我建议你全部使用systemctl命令。我们目前处于运行级别3,相当于下面所示的multi-user.target。#systemctllist-units--type=targetUNITLOADACTIVESUBDESCRIPTIONbasic.targetloadedactiveactiveBasicSystemcloud-config.targetloadedactivecloud-configavailabilitycryptsetup.targetloadedactive本地加密卷getty.targetloadedactiveactiveLoginPromptslocal-fs-pre.targetloadedactiveactive本地文件系统(Pre)local-fs.targetloadedactivelocalFileSystemsmulti-user.targetloadedactiveMulti-UserSystemnetwork-online.targetloadedactiveactive网络在线network-pre.targetloadedactive活动网络(预)network.target加载活动活动Networkpaths.target加载活动活动Pathsremote-fs.target加载活动活动远程文件系统slices.target加载活动活动Slicessockets.target加载活动活动Socketsswap.target加载活动活动活动Swapsysinit.targetloadedactiveactiveSystemInitializationtimers.targetloadedactive活动计时器