众所周知,chkconfig是类Unix操作系统中使用的命令行实用程序,用于管理系统启动时自动启动哪些服务。chkconfig工具广泛用于旧版本Linux 发行版系统,例如CentOS 6及更早版本。chkconfig允许管理员轻松地在不同的运行级别启用或禁用服务。
chkconfig重要性
首先让我们先了解一下chkconfig为什么有用,其功能包括以下几点:
- 服务管理:它提供了一种管理启动服务的简单方法,无需手动创建或删除/etc/rc.d/目录中的符号链接。
- 运行级别控制:它允许Linux管理员指定哪些服务应在不同的运行级别运行。运行级别是类Unix系统的不同操作模式,例如单用户模式、多用户模式等。
- 方便性:它通过简单的命令来列出、添加或删除自动启动中的服务,从而简化了服务管理。
基本的chkconfig命令
实际上,chkconfig命令允许我们通过命令行在/etc/rc.d/init.d脚本中配置服务自动启动和停止。接下来让我们看看chkconfig的一些常用命令。
1、列出所有服务
使用“ --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 abrt-oops 0:off 1:off 2:off 3:on 4:off 5:on 6:off ...
2、查看特定服务的状态
下面的命令显示名为HTTP的特定服务的启动配置,该服务在所有运行级别中都处于关闭状态:
chkconfig --list | grep httpd httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
3、 在运行级别启动特定服务
下面的 ` chkconfig`命令简单演示如何配置HTTP服务以仅在3
和5
运行级别启动并使用`--level`
参数。
第一个命令在运行级别3
和5
上启动“ httpd ”服务,而第二个命令检查在这些运行级别上运行的“ httpd ”服务的状态:
chkconfig --level 35 httpd on chkconfig --list | grep httpd
示例输出如下所示:
httpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
4、查看哪些服务已开启/关闭
以下命令将显示在特定运行级别5中打开和关闭的所有服务:
chkconfig --list | grep 5:on
示例输出:
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 abrt-oops 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 ...
chkconfig --list | grep 5:off
示例输出:
dnsmasq 0:off 1:off 2:off 3:off 4:off 5:off 6:off dovecot 0:off 1:off 2:off 3:off 4:off 5:off 6:off firstboot 0:off 1:off 2:off 3:off 4:off 5:off 6:off kdump 0:off 1:off 2:off 3:off 4:off 5:off 6:off mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off nfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off ...
5、在运行级别停止特定服务
以下命令将关闭单个运行级别的名为postfix的服务。类似地,也可以一次性关闭多个运行级别的特定服务,命令如下:
chkconfig --level 3 postfix off chkconfig --level 2345 postfix off
6、启用或禁用服务
使服务在系统启动时自动启动:
chkconfig servicename on
禁止服务在系统启动时自动启动。
chkconfig servicename off
注:将“servicename”替换为实际的服务名称。
关于systemctl命令
随着Linux系统的发展,init系统(由chkconfig使用)被systemd取代。systemd是Linux操作系统的现代系统和服务管理器,它提供更多功能和更佳性能。
随着这一变化,chkconfig也随着被弃用,并由systemctl命令取代。
systemctl命令重要性
systemctl是用于控制systemd系统和服务管理器的命令行工具,它提供了一种更强大、更灵活的服务管理方式,以下是它的一些主要优点:
- 统一界面:它提供一个命令来管理系统服务和运行级别(现在在systemd中称为targets)
- 增强性能:systemd能够并行启动服务,缩短启动时间
- 更多功能:支持服务依赖性、按需服务启动等最新功能
基本的systemctl命令
接下来看看如何使用systemctl命令执行的一些实例,它可以完成与使用chkconfig类似的任务。
1、如何列出活跃服务
此命令通过提供有关每个服务的状态和属性的更多信息来列出系统上systemd管理的所有活动服务:
systemctl list-units --type=service
2、启用或禁用服务
使服务在系统启动时自动启动:
systemctl enable servicename
禁止服务在系统启动时自动启动:
systemctl disable servicename
3、启动、停止和重新启动服务
立即启动服务:
systemctl start servicename
立即停止服务:
systemctl stop servicename
立即重新启动服务:
systemctl restart servicename
4、检查服务状态
检查服务的状态命令如下:
systemctl status servicename
注:将以上“servicename”替换为实际的服务名称。
小结
尽管在旧版的Linux发行版中,chkconfig是管理服务的重要工具,但过渡到systemd和systemctl命令,却给我们带来了诸多功能和性能方面的改进,所以了解如何使用systemctl对于现代Linux管理至关重要。
当然,这两个命令可能略微有所不同,但它们提供更多控制以及与整个系统更好的集成的功能是一样的。如果你比较熟悉chkconfig命令,那么学习systemctl将更加容易,它会帮助你在现代Linux环境中更有效地管理系统服务。