systemd 取代 service
systemd
作为现代 Linux 系统的初始化系统(init system),提供了更强大、统一的服务管理和系统控制功能,具体优势如下:
- 启动速度更快:
systemd
支持并行启动多个服务,显著缩短了系统启动时间,而传统的init
系统是按顺序启动。 - 精确的依赖关系管理:
systemd
采用依赖树来处理服务之间的依赖关系,更加智能可靠,可以避免服务间的启动和停止顺序冲突。 - 统一的工具和管理接口:
systemctl
命令可以用来管理所有服务,而传统的service
命令只是对某些服务管理起作用。 - 日志集中管理:
systemd
集成了journald
日志系统,便于管理员快速查找服务运行过程中的详细日志信息。
虽然传统的 service
命令依旧可以用,但 systemd
在功能和性能上更加先进和全面,是 CentOS 7+ 系统的标准。
列出所有服务
要查看系统上所有服务的状态,可以使用以下命令:
# 在 CentOS Linux release 7.9.2009 测试正常
systemctl list-units --type=service
该命令列出所有正在运行或已加载的服务,并显示服务的当前状态(如active
、inactive
、failed
等)。
在 CentOS 6 或更早的版本上,可以使用以下命令查看所有服务:
# 在 CentOS Linux release 7.9.2009 运行此命令显示 未加载 netconsole 模块
service --status-all
查看服务的运行状态
要查看某个服务的运行状态,使用以下命令:
systemctl status <service_name>
例如,要查看 httpd
服务(Apache Web 服务器)的状态:
systemctl status httpd
输出信息包括服务的当前状态、PID、最后的启动时间以及最近的日志信息,便于快速判断服务是否正常运行。
启动、停止和重启服务
使用 systemctl
可以轻松启动、停止和重启服务。以下是一些常用命令:
- 启动服务:
sudo systemctl start <service_name>
- 停止服务:
sudo systemctl stop <service_name>
- 重启服务:
sudo systemctl restart <service_name>
- 重新加载服务配置(不重启服务,重新加载配置文件):
sudo systemctl reload <service_name>
例如,启动并重启 httpd
服务:
sudo systemctl start httpd
sudo systemctl restart httpd
配置开机自启动
在大多数服务器中,关键服务需要在系统启动时自动运行,可以通过 enable
和 disable
命令来控制服务的自启动设置。
- 启用开机自启动:
sudo systemctl enable <service_name>
- 禁用开机自启动:
sudo systemctl disable <service_name>
例如,让 httpd
服务在开机时自动启动:
sudo systemctl enable httpd
如果需要查看某个服务是否配置了开机自启动,可以运行以下命令:
systemctl is-enabled <service_name>
查看服务日志
在系统出问题时,查看日志是排查问题的关键步骤。systemd
使用 journalctl
工具来管理和查看服务的日志。
*journal
杂志;日志;日记;刊物;(某学科或专业的)报纸;(用于报纸名)…报*
- 查看某个服务的日志:
sudo journalctl -u <service_name>
- 查看最近启动后的服务日志(适合快速调试最近的问题):
sudo journalctl -u <service_name> -b
- 实时查看日志输出(类似于
tail -f
):
sudo journalctl -u <service_name> -f
例如,要查看 httpd
服务的日志信息:
sudo journalctl -u httpd
总结
在 CentOS 上,systemd
已成为服务管理的标准,其提供的 systemctl
和 journalctl
等工具让服务的管理和调试变得更加统一和便捷。虽然 service
命令仍然可用,但在现代 Linux 系统上,systemd
更加高效和智能,是服务管理的首选工具。
希望本文能帮助你熟悉在 CentOS 上的服务管理工作。无论是启动、停止、重启服务,还是查看日志、设置自启动等操作,systemd
都提供了统一的接口和丰富的功能,让系统管理更加轻松。
[阅读原文]