centos7的启动流程(systemctl)

本文详细介绍了CentOS 7的启动流程,涉及systemctl命令的使用,包括查看服务状态、管理服务启动、服务单元文件格式等内容。还探讨了启动级别的切换和运行级别相关命令,以及CentOS 7的启动顺序,如grub2、initramfs和systemd等。

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

chkconfig sshd –list ==> ls /etc/systemd/system/*.wants/sshd.service

查看服务是否开机自启

systemctl is-enabled name.service

查看服务的依赖关系

systemctl list-dependencies name.service

杀掉进程

systemctl kill unitname

[](()3.服务状态


systemctl list-unit-files --type service --all显示状态

loaded Unit配置文件已处理

active(running) 一次或多次持续处理的运行

active(exited) 成功完成一次性的配置

active(waiting) 运行中,等待一个事件

inactive 不运行

enabled 开机启动

disabled 开机不启动

static 开机不启动,但可被另一个启用的服务激活

[](()4.例子


显示所有单元状态

systemctl 或 systemctl list-units

只显示服务单元的状态

systemctl --type=service

显示sshd服务单元

systemctl –l status sshd.service

验证sshd服务当前是否活动

systemctl is-active sshd

启动,停止和重启sshd服务

systemctl start sshd.service

systemctl stop sshd.service

systemctl restart sshd.service

重新加载配置

systemctl reload sshd.service

列出活动状态的所有服务单元

systemctl list-units --type=service

列出所有服务单元

systemctl list-units --type=service --all

查看服务单元的启用和禁用状态

systemctl list-unit-files --type=service

列出失败的服务

systemctl --failed --type=service

列出依赖的单元

systemctl list-dependencies sshd

验证sshd服务是否开机启动

systemctl is-enabled sshd

禁用network,使之不能自动启动,但手动可以

systemctl disable network

启用network

systemctl enable network

禁用network,使之不能手动或自动启动

systemctl mask network

启用network

systemctl unmask network

[](()三. service unit文件格式

============================================================

### CentOS 7 中 `service` 命令与 `systemctl` 命令的区别及使用场景 #### 背景介绍 在 CentOS 7 及更高版本中,系统默认的服务管理框架由传统的 SysV init 替换为了更现代化的 systemd。因此,在这些系统中,虽然仍然保留了 `service` 命令以便向后兼容旧版脚本和服务配置文件,但推荐使用的工具是 `systemctl`。 #### 主要区别 1. **架构差异** - `service` 是基于传统 SysV init 系统设计的命令,主要用于启动、停止和查询服务的状态[^1]。 - `systemctl` 则是 systemd 提供的核心工具之一,不仅能够管理服务,还支持单元(units)、目标(targets)、挂载点等多种资源类型的控制[^2]。 2. **功能范围** - `service` 功能较为单一,仅限于操作 `/etc/init.d/` 下的传统初始化脚本中的服务。 - `systemctl` 不仅能处理上述任务,还可以通过定义 `.service` 文件来实现更加灵活的服务管理和依赖关系解析[^3]。 3. **语法结构** - 使用 `service` 启动某个特定名称的服务通常如下所示: ```bash service <servicename> start|stop|restart|status ``` - 对应地,采用 `systemctl` 执行相同动作则需指定 action 参数以及 unit 名字(一般带有 .service 后缀),例如: ```bash systemctl start|stop|restart|status <unitname>.service ``` 4. **兼容性考虑** 当运行某些未完全迁移到新格式下的 legacy services 或者自定义编写好的 shell scripts 时,可能仍需要用到 `service` 来调用位于 `/etc/init.d/` 的 script files;然而对于大多数预安装的标准应用来说,默认情况下应该优先选用 `systemctl` 进行交互因为这样可以获得额外的好处比如自动化的失败重试机制等等。 5. **性能表现** 相较之下由于引入了许多优化措施包括但不限于并行加载多个 units ,所以一般来说利用 `systemctl` 控制整个 boot process 效率会高于单纯依靠 `service`. --- #### 实际案例对比分析 以下是几个常见的实际应用场景及其对应的操作方式: ##### 查看所有正在运行的服务列表 - 使用 `service`: 并无直接的方法一次性列举全部活动状态的服务实例, 需要遍历目录或者借助其他辅助程序完成. - 使用 `systemctl`: ```bash systemctl list-units --type=service --state=running ``` ##### 设置开机自启某项服务 (sshd为例) - 使用 `service`: 必须结合外部工具如 chkconfig 完成设置工作流. ```bash chkconfig sshd on ``` 此外也可以手动创建软连接指向相应的 rcN.d 子目录下. - 使用 `systemctl`: ```bash systemctl enable sshd.service ``` 注意这里两者最终达成的效果可能是等价的即均会在适当位置生成必要的 symbolic links ,但是前者涉及更多的人工干预步骤而后者更为简洁明快[^4]. --- ### 总结建议 尽管目前大部分主流发行版都已切换至 SystemD 架构之上从而使得 `systemctl` 成为主导地位的选择对象,但在维护遗留项目或者是跨平台部署过程中不可避免还会遇到需要运用到原始形式下的 `service` 场合存在. 因此掌握两者的异同之处有助于开发者做出明智决策何时何地选取最合适的手段达到预期目的.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值