centos7 新工具systemctl

本文详细介绍Linux下Systemctl命令的使用方法,包括启动、重启、停止服务等操作,并提供了如何管理单元、服务、挂载点及套接口的具体指令。此外还介绍了如何进入救援模式和紧急模式,设置默认运行等级等内容。

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

从6到7,有点不适应,没service XXX status了


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

1. 列出所有可用单元

systemctl list-unit-files

2. 列出所有运行中单元

systemctl list-units

3. 列出所有失败单元

systemctl –failed

4. 检查某个单元(如 crond.service)是否启用

 systemctl is-enabled crond.service

5. 列出所有服务

systemctl list-unit-files –type=service

6. Linux中如何启动、重启、停止、重载服务以及检查服务(如 httpd.service)状态

systemctl start httpd.service
systemctl restart httpd.service
systemctl stop httpd.service
systemctl reload httpd.service
systemctl status httpd.service

注意:当我们使用systemctl的start,restart,stop和reload命令时,终端不会输出任何内容,只有status命令可以打印输出。

7. 如何激活服务并在开机时启用或禁用服务(即系统启动时自动启动mysql.service服务)

systemctl is-active mysql.service
systemctl enable mysql.service
systemctl disable mysql.service

8. 如何屏蔽(让它不能启动)或显示服务(如ntpdate.service)

systemctl mask ntpdate.service
ln -s /dev/null /etc/systemd/system/ntpdate.service
systemctl unmask ntpdate.service
rm /etc/systemd/system/ntpdate.service

9. 使用systemctl命令杀死服务

systemctl kill crond

10. 列出所有系统挂载点

systemctl list-unit-files –type=mount

11. 挂载、卸载、重新挂载、重载系统挂载点并检查系统中挂载点状态

systemctl start tmp.mount
systemctl stop tmp.mount
systemctl restart tmp.mount
systemctl reload tmp.mount
systemctl status tmp.mount

12. 在启动时激活、启用或禁用挂载点(系统启动时自动挂载)

systemctl is-active tmp.mount
systemctl enable tmp.mount
systemctl disable tmp.mount

13. 在Linux中屏蔽(让它不能启用)或可见挂载点

systemctl mask tmp.mount
ln -s /dev/null /etc/systemd/system/tmp.mount
systemctl unmask tmp.mount
rm /etc/systemd/system/tmp.mount

14. 列出所有可用系统套接口

systemctl list-unit-files –type=socket

15. 检查某个服务的所有配置细节

systemctl show mysql

16. 获取某个服务(httpd)的依赖性列表

systemctl list-dependencies httpd.service

17. 启动救援模式

systemctl rescue

18. 进入紧急模式

systemctl emergency

19. 列出当前使用的运行等级

systemctl get-default

20. 启动运行等级5,即图形模式

systemctl isolate runlevel5.target

systemctl isolate graphical.target

21. 启动运行等级3,即多用户模式(命令行)

systemctl isolate runlevel3.target

systemctl isolate multiuser.target

22. 设置多用户模式或图形模式为默认运行等级

systemctl set-default runlevel3.target
systemctl set-default runlevel5.target

23. 重启、停止、挂起、休眠系统或使系统进入混合睡眠

systemctl reboot
systemctl halt
systemctl suspend
systemctl hibernate
systemctl hybrid-sleep

对于不知运行等级为何物的人,说明如下。

Runlevel 0 : 关闭系统
Runlevel 1 : 救援,维护模式
Runlevel 3 : 多用户,无图形系统
Runlevel 4 : 多用户,无图形系统
Runlevel 5 : 多用户,图形化系统
Runlevel 6 : 关闭并重启机器

### 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、付费专栏及课程。

余额充值