systemctl是linux系统中用于管理服务的核心命令,可启动、停止、重启、查看状态及设置开机自启;通过list-units可查看服务列表,is-active和is-enabled检查服务状态与自启情况;服务由.service文件定义,位于/etc/systemd/system/或/usr/lib/systemd/system/目录;创建自定义服务需编写单元文件并执行daemon-reload;排查服务问题常用status和journalctl命令;新系统推荐使用systemctl而非旧式service命令。

在linux系统中,服务管理是系统运维的重要部分。现代Linux发行版大多使用systemd作为默认的初始化系统和服务管理器,取代了传统的SysVinit。通过systemctl命令,用户可以方便地启动、停止、重启、查看和设置服务的开机自启状态。
systemctl基本用法
systemctl是systemd的核心管理工具,用于控制和管理系统服务。常见操作包括:
- 启动服务:
sudo systemctl start serviceName(例如:sudo systemctl start nginx) - 停止服务:
sudo systemctl stop serviceName - 重启服务:
sudo systemctl restart serviceName - 查看服务状态:
sudo systemctl status serviceName,可判断服务是否运行、最近日志等信息 - 启用开机自启:
sudo systemctl enable serviceName - 禁用开机自启:
sudo systemctl disable serviceName - 重载配置文件:
sudo systemctl reload serviceName(不中断服务的情况下重新加载配置) - 重新加载systemd配置:
sudo systemctl daemon-reload(修改服务单元文件后必须执行)
查看和管理服务列表
你可以列出当前所有已加载的服务:
-
systemctl list-units --type=service:显示正在运行的服务 -
systemctl list-units --type=service --all:显示所有服务(包括未运行的) -
systemctl is-active serviceName:检查服务是否处于活动状态(返回active/inactive) -
systemctl is-enabled serviceName:检查服务是否开机自启
服务单元文件说明
每个服务由一个.service单元文件定义,通常位于/etc/systemd/system/或/usr/lib/systemd/system/目录下。你可以编辑或创建自定义服务。
示例:创建一个简单的自定义服务(如myapp.service)
<font face="monospace">[Unit] Description=My Custom application After=network.target [Service] ExecStart=/usr/bin/python3 /opt/myapp/app.py Restart=always User=myuser [Install] WantedBy=multi-user.target</font>
保存为/etc/systemd/system/myapp.service后,执行sudo systemctl daemon-reload,然后就可以像其他服务一样使用start、enable等命令管理它。
常见问题处理
服务无法启动时,可通过以下方式排查:
- 使用
systemctl status serviceName查看错误信息 - 查看日志:
journalctl -u serviceName -f(实时跟踪服务日志) - 确认服务脚本或程序路径是否正确
- 检查权限问题,特别是User和WorkingDirectory配置
- 修改配置后忘记执行
daemon-reload
基本上就这些。掌握systemctl命令后,Linux服务管理变得非常直观高效。日常维护中多结合status和journalctl命令,能快速定位问题。对于旧系统可能还在使用service命令,但新环境建议统一使用systemctl。