systemctl 是 Linux 系统中用于管理 systemd 系统和服务管理器的核心命令。systemd 是现代大多数 Linux 发行版(如 Ubuntu、Debian、CentOS、Fedora、Arch Linux 等)默认的初始化系统(init system),负责启动、停止和管理系统服务、挂载文件系统、日志记录等。
1. 基本语法
systemctl [ 选项] < 命令> [ 服务名]
服务名 通常是 服务名.service(如 nginx.service),但可以省略 .service 后缀(如直接写 nginx)。
2. 常用命令
服务管理
命令 作用 systemctl start <服务名>启动服务 systemctl stop <服务名>停止服务 systemctl restart <服务名>重启服务 systemctl reload <服务名>重新加载配置(不重启服务) systemctl status <服务名>查看服务状态(运行/失败/日志) systemctl enable <服务名>设置开机自启 systemctl disable <服务名>取消开机自启 systemctl is-enabled <服务名>检查是否开机自启 systemctl is-active <服务名>检查服务是否正在运行
系统状态
命令 作用 systemctl list-units --type=service列出所有已加载的服务 systemctl list-units --type=service --all列出所有服务(包括未加载的) systemctl list-unit-files查看所有服务的开机启动状态 systemctl --failed查看失败的服务 systemctl daemon-reload重新加载 systemd 配置(修改服务文件后需执行)
系统控制
命令 作用 systemctl reboot重启系统 systemctl poweroff关机 systemctl suspend挂起(睡眠) systemctl hibernate休眠 systemctl rescue进入救援模式(单用户模式) systemctl emergency进入紧急模式
日志查看
命令 作用 journalctl -u <服务名>查看特定服务的日志 journalctl -xe查看详细系统日志(排错常用)
3. 实际示例
管理 Nginx 服务
sudo systemctl start nginx
sudo systemctl status nginx
sudo systemctl enable nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
排查服务故障
sudo systemctl --failed
sudo journalctl -u nginx -xe
修改服务配置后重载
sudo nano /etc/systemd/system/nginx.service
sudo systemctl daemon-reload
sudo systemctl restart nginx
4. 服务文件路径
系统默认服务文件:/usr/lib/systemd/system/ 自定义服务文件:/etc/systemd/system/ (优先覆盖默认配置)
5. 注意事项
需要 root 权限 :大多数 systemctl 操作需要 sudo。服务名格式 :通常省略 .service(如 nginx 等价于 nginx.service)。依赖关系 :systemd 会自动处理服务依赖(如启动 nginx 前先启动网络)。
通过 systemctl,你可以高效管理系统服务,适合运维、开发或日常使用。如果需要更深入的功能,可以查阅 man systemctl 或官方文档。