使用 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 系统中最常用的三个初始化系统:

  • System V(Sys V)
  • Upstart
  • systemd

什么是 System V(Sys V)?

System V(Sys V)是类 Unix 系统第一个也是传统的初始化系统。init 是内核引导系统启动过程中第一支启动的程序,它是所有程序的父进程。

大部分 Linux 发行版最开始使用的是叫作 System V(Sys V)的传统的初始化系统。在过去的几年中,已经发布了好几个初始化系统以解决标准版本中的设计限制,例如:launchd、Service Management Facility、systemd 和 Upstart。

但是 systemd 已经被几个主要的 Linux 发行版所采用,以取代传统的 SysV 初始化系统。

什么是 Upstart?

Upstart 是一个基于事件的 /sbin/init 守护进程的替代品,它在系统启动过程中处理任务和服务的启动,在系统运行期间监视它们,在系统关机的时候关闭它们。

它最初是为 Ubuntu 而设计,但是它也能够完美的部署在其他所有 Linux系统中,用来代替古老的 System-V。

Upstart 被用于 Ubuntu 从 9.10 到 Ubuntu 14.10 和基于 RHEL 6 的系统,之后它被 systemd 取代。

什么是 systemd?

systemd 是一个新的初始化系统和系统管理器,它被用于所有主要的 Linux 发行版,以取代传统的 SysV 初始化系统。

systemd 兼容 SysV 和 LSB 初始化脚本。它可以直接替代 SysV 初始化系统。systemd 是被内核启动的第一个程序,它的 PID 是 1。

systemd 是所有程序的父进程,Fedora 15 是第一个用 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| grep auditd
auditd    0:off 1:off 2:on 3:on 4:on 5:on 6:off

如何在指定运行级别中启用服务

使用 --level 参数启用指定运行级别下的某个服务,下面展示如何在运行级别 3 和运行级别 5 下启用 httpd 服务。

# chkconfig --level 35 httpd on

如何在指定运行级别下禁用服务

同样使用 --level 参数禁用指定运行级别下的服务,下面展示的是在运行级别 3 和运行级别 5 中禁用 httpd 服务。

# chkconfig --level 35 httpd off

如何将一个新服务添加到启动列表中

-–add 参数允许我们添加任何新的服务到启动列表中,默认情况下,新添加的服务会在运行级别 2、3、4、5 下自动开启。

# chkconfig --add nagios

如何从启动列表中删除服务

可以使用 --del 参数从启动列表中删除服务,下面展示的是如何从启动列表中删除 Nagios 服务。

# chkconfig --del nagios

如何使用 systemctl 命令启用或禁用开机自启服务?

systemctl 用于命令行,它是一个用来管理 systemd 的守护进程/服务的基础工具,例如:(开启、重启、关闭、启用、禁用、重载和状态)。

所有服务创建的 unit 文件位与 /etc/systemd/system/。

如何列出全部的服务

使用下面的命令列出全部的服务(包括启用的和禁用的)。

# systemctl list-unit-files --type=service
UNIT FILE          STATE
arp-ethers.service       disabled
auditd.service        enabled
autovt@.service        enabled
blk-availability.service      disabled
brandbot.service        static
chrony-dnssrv@.service      static
chrony-wait.service       disabled
chronyd.service        enabled
cloud-config.service       enabled
cloud-final.service       enabled
cloud-init-local.service      enabled
cloud-init.service       enabled
console-getty.service       disabled
console-shell.service       disabled
container-getty@.service      static
cpupower.service        disabled
crond.service         enabled
.
.
150 unit files listed.

使用下面的格式通过正则表达式匹配出你想要查看的服务的当前状态。下面是使用 systemctl 命令查看 httpd 服务的状态。

# systemctl list-unit-files --type=service | grep httpd
httpd.service disabled

如何让指定的服务开机自启

使用下面格式的 systemctl 命令启用一个指定的服务。启用服务将会创建一个符号链接,如下可见:

# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

运行下列命令再次确认服务是否被启用。

# systemctl is-enabled httpd
enabled

如何禁用指定的服务

运行下面的命令禁用服务将会移除你启用服务时所创建的符号链接。

# systemctl disable httpd
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.

运行下面的命令再次确认服务是否被禁用。

# systemctl is-enabled httpd
disabled

如何查看系统当前的运行级别

使用 systemctl 命令确认你系统当前的运行级别,runlevel 命令仍然可在 systemd 下工作,不过,运行级别对于 systemd 来说是一个历史遗留的概念。所以我建议你全部使用 systemctl 命令。

我们当前处于运行级别 3, 它等同于下面显示的 multi-user.target。

# systemctl list-units --type=target
UNIT     LOAD ACTIVE SUB DESCRIPTION
basic.target   loaded active active Basic System
cloud-config.target loaded active active Cloud-config availability
cryptsetup.target  loaded active active Local Encrypted Volumes
getty.target   loaded active active Login Prompts
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target  loaded active active Local File Systems
multi-user.target  loaded active active Multi-User System
network-online.target loaded active active Network is Online
network-pre.target loaded active active Network (Pre)
network.target  loaded active active Network
paths.target   loaded active active Paths
remote-fs.target  loaded active active Remote File Systems
slices.target   loaded active active Slices
sockets.target  loaded active active Sockets
swap.target   loaded active active Swap
sysinit.target  loaded active active System Initialization
timers.target   loaded active active Timers

总结

以上所述是小编给大家介绍的使用 chkconfig 和 systemctl 命令启用或禁用 Linux 服务的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • linux systemctl命令详解

    笔者在前文中概要的介绍了 systemd 的基本概念和主要特点.由于 systemd 相关的绝大多数任务都是通过 systemctl 命令管理的,所以本文将集中的介绍 systemctl 命令的用法.注意,本文以 ubuntu 16.04 进行介绍,文中所有的 demo 都在 ubuntu 16.04 中完成. systemctl 命令有两大类功能: 控制 systemd 系统 管理系统上运行的服务 在介绍这些功能前让我们先来热个身,了解些 systemctl 命令自身相关的信息. 预热 检查

  • linux命令详解之chkconfig命令使用方法

    使用语法:chkconfig[--add][--del][--list][系统服务] 或chkconfig[--level < 等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返回true,否则返回false.如果在服务名后面指定了on,off或者reset,那么chkconfi 会改变指定服务的启动信息.on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有

  • Linux下的chkconfig命令详解

    chkconfig命令 Linux下的chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法 chkconfig [–add][–del][–list][系统服务] 或 chkconfig [–level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返回true

  • Linux系统中systemctl命令详解

    Linux Systemctl是一个系统管理守护进程.工具和库的集合,用于取代System V.service和chkconfig命令,初始进程主要负责控制systemd系统和服务管理器.通过Systemctl –help可以看到该命令主要分为:查询或发送控制命令给systemd服务,管理单元服务的命令,服务文件的相关命令,任务.环境.快照相关命令,systemd服务的配置重载,系统开机关机相关的命令. 1. 列出所有可用单元 # systemctl list-unit-files 2. 列出所

  • 使用 chkconfig 和 systemctl 命令启用或禁用 Linux 服务的方法

    对于 Linux 管理员来说这是一个重要(美妙)的话题,所以每个人都必须知道,并练习怎样才能更高效的使用它们. 在 Linux 中,无论何时当你安装任何带有服务和守护进程的包,系统默认会把这些服务的初始化及 systemd 脚本添加进去,不过此时它们并没有被启用. 我们需要手动的开启或者关闭那些服务.Linux 中有三个著名的且一直在被使用的初始化系统. 什么是初始化系统? 在以 Linux/Unix 为基础的操作系统上,init (初始化的简称) 是内核引导系统启动过程中第一个启动的进程. i

  • Linux 为特定的用户或用户组启用或禁用 SSH的方法

    由于你的公司标准规定,你可能只能允许部分人访问 Linux 系统.或者你可能只能够允许几个用户组中的用户访问 Linux 系统.那么如何实现这样的要求呢?最好的方法是什么呢?如何使用一个简单的方法去实现呢? 是的,我们会有很多种方法去实现它.但是我们应该使用简单轻松的方法.为了简单轻松的完成目的,我们可以通过对 /etc/ssh/sshd_config 文件做必要的修改来实现.在这篇文章中我们将会向你展示实现要求的详细步骤. 为什么我们要这样做呢?是出于安全的原因.你可以访问这个链接来获取更多关

  • linux 系统进程管理工具systemd详解(systemctl命令、创建自己的systemd服务)

    目录 linux systemd 什么是 systemd systemd 特点 unit(单元) systemd unit目录 Unit 和 Target Unit 文件结构 Linux命令——systemctl 参考 linux systemd 什么是 systemd Linux 系统在启动过程中,内核完成初始化以后,由内核第一个启动的程序便是 init 程序,路径为 /sbin/init(为一个软连接,链接到真实的 init 进程),其 PID 为1,它为系统里所有进程的“祖先”,Linux

  • C#实现启用与禁用本地网络的方式小结【3种方式】

    本文实例总结了C#实现启用与禁用本地网络的方式.分享给大家供大家参考,具体如下: 1) 使用Hnetcfg.dll 使用Add Reference,把Hnetcfg.dll导入到工程中,会生成3个引用,主要使用NETCONLib. 在工程中要using NETCONLib; 下面是实现的代码: NetSharingManagerClass netSharingMgr = new NetSharingManagerClass(); INetSharingEveryConnectionCollect

  • 使用 iisext.vbs 禁用 Web 服务扩展的方法

    应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 可以使用命令行脚本 iisext.vbs(存储于 systemroot\system32 中),通过禁用所有具有特定 Web 服务扩展 ID 的文件来禁用 Web 服务扩展.该命令可在运行带有 IIS 6.0 的 Windows Server 2003 家族的成员的本地或远程计算机上执行. Iisext.vbs 执行可用于 IIS 管理器的

  • php启用sphinx全文搜索的实现方法

    本文实例讲述了php启用sphinx全文搜索的实现方法.分享给大家供大家参考.具体分析如下: 在编译安装 sphinx 的时候出现很多中文乱码,最后抛出错误卡住了,我去到官方直接下载一个 rpm 包,安装就很爽,具体错误不想研究了,忙开发呢. 安装两个包,一个是 mmseg 这个是生成中文字典的程序,一个是  csft 也就是中国版的sphinx . rpm -ivh 安装完以后,很顺利~~不到半分钟就装完了. 中文字典库,我直接去 csft 官方下载了,挺好的想得很周到. unigram.tx

  • 详解Linux 服务管理两种方式service和systemctl

    1.service命令 service命令其实是去/etc/init.d目录下,去执行相关程序 # service命令启动redis脚本 service redis start # 直接启动redis脚本 /etc/init.d/redis start # 开机自启动 update-rc.d redis defaults 其中脚本需要我们自己编写 2.systemctl命令 systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程

  • Thinkpad VMware 安装虚拟机出现此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态(问题解决方法)

    今天在使用VMware打算在机器中安装新的虚拟机时,出现"此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态"错误如下: 提示信息: 此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态. 如果已在 BIOS/固件设置中禁用 Intel VT-x,或主机自更改此设置后从未重新启动,则 Intel VT-x 可能被禁用. (1) 确认 BIOS/固件设置中启用了 Intel VT-x 并禁用了"可信执行". (2) 如果这两项

随机推荐