systemctl与service和chkconfig

本文深入讲解了Linux系统中服务管理的三种核心命令:service、chkconfig和systemctl。service用于基本的服务操作,如启动、停止和重启。chkconfig用于管理服务的开机启动设置。systemctl则是CentOS7中用来替代前两者的综合命令,提供了更高效的服务管理和系统初始化功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、service

service命令用于对系统服务进行管理,比如启动(start)、停止(stop)、重启(restart)、重新加载配置(reload)、查看状态(status)等。

查看定时任务服务状态


2、chkconfig

chkconfig是一个维护/etc/rc[0~6] d 文件夹的命令行工具,它减轻了系统直接管理这些文件夹中的符号连接的负担。chkconfig主要包括5个原始功能:为系统管理增加新的服务、为系统管理移除服务、列出单签服务的启动信息、改变服务的启动信息和检查特殊服务的启动状态。当单独运行chkconfig命令而不加任何参数时,他将显示服务的使用信息。

必要参数

–add 开启指定的服务程序

–del 关闭指定的服务程序

–list 列出chkconfig所知道的所有服务

选择参数

–level<代号> 设置服务程序的等级代号,它是一串0~7的数字,如“-level35”代表指定运行等级3和5

–help 显示帮助信息

–version 显示版本信息

CS7中chkconfig

3、systemctl

在CentOS7 中 systemctl 是设置系统服务的命令,即 service , 它融合之前service和chkconfig的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。主要负责控制systemd系统和服务管理器

什么是systemd系统?

CentOS 7 使用systemd替换了SysV。Systemd目的是要取代Unix时代以来一直在使用的init系统,兼容SysV和LSB的启动脚本,而且够在进程启动过程中更有效地引导加载服务。

systemd的特性有:

支持并行化任务;

同时采用socket式与D-Bus总线式激活服务;

按需启动守护进程(daemon);

利用 Linux 的 cgroups 监视进程;

支持快照和系统恢复;

维护挂载点和自动挂载点;

各服务间基于依赖关系进行精密控制。

查看systemctl的相关信息

列出所有可用单元

列出所有运行中单元

查看某个服务的运行状态

启动、重启、停止、重载服务

# systemctl start

# systemctl restart

# systemctl stop

# systemctl reload

*激活/禁止自动启动,停止服务 显示服务详细信息

# systemctl enable

# systemctl disable

# systemctl kill httpd

# systemctl show crond

### systemctl chkconfig 的主要差异 `chkconfig` 是一种传统的 Linux 工具,主要用于管理基于 SysV init 的服务启动脚本。而 `systemctl` 则是 systemd 初始化系统的一部分,用于管理系统服务的状态以及配置。 #### 功能对比 1. **初始化系统的依赖关系** - `chkconfig` 只能处理简单的服务启停状态,无法解决复杂的依赖关系[^1]。 - `systemctl` 提供了更强大的功能来定义解析服务之间的依赖关系,从而确保按正确的顺序启动或停止服务。 2. **命令语法** - 使用 `chkconfig` 来启用某个服务开机自启可以这样写: ```bash chkconfig --add squid && chkconfig --level 35 squid on ``` - 而通过 `systemctl` 实现相同的功能则更加简洁直观: ```bash systemctl enable squid ``` 3. **实时控制能力** - `chkconfig` 主要关注于设定哪些服务应该在哪个运行级别下自动加载,并不提供即时的操作支持。 - 对比之下,`systemctl` 不仅能够修改服务的默认行为(如开启/关闭随系统引导),还可以立即执行诸如重启、重新载入配置文件等动作。例如: ```bash systemctl restart squid systemctl reload squid ``` 4. **日志管理诊断工具集成** - `chkconfig` 缺乏内置的日志记录机制或者其他监控组件联动的能力。 - `systemctl` 结合 journalctl 命令提供了全面的服务事件追踪途径,方便排查问题所在。比如查看特定时间段内的错误消息可以用下面这条指令完成: ```bash journalctl _SYSTEMD_UNIT=squid.service --since="today" ``` 5. **跨平台兼容性考量** - 随着越来越多发行版转向采用 systemd 架构作为其核心引擎之一,“chkconfig”的角色逐渐被弱化甚至淘汰掉,在某些较新的操作系统版本里可能根本找不到该二进制程序的存在痕迹。 - 相反地,“systemctl”已经成为现代 GNU/Linux 发行版的标准组成部分,具有广泛的适用范围发展前景。 ### 示例代码展示如何切换两种方法之间转换过程中的注意事项: 如果从传统 sysvinit 迁移到 systemd,则需要注意原有 rc*.d 文件夹下的软链接不会自动映射成对应的 unit files;因此需要手动创建相应的 .service 定义文档后再利用上述提到的新方式来进行维护管理工作。 ```bash # 创建一个新的 service file 并放置到合适的位置 vi /etc/systemd/system/myservice.service # 加载新添加的内容至内存当中去 systemctl daemon-reload # 测试新建单元是否正常工作无误之后再考虑将其设为永久生效模式 systemctl start myservice systemctl status myservice systemctl enable myservice ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值