Appearance
第13章:系统服务管理
13.1 服务管理命令(systemctl)
systemctl命令
- 功能:管理系统服务(systemd系统)
- 常用子命令:
start:启动服务stop:停止服务restart:重启服务reload:重新加载服务配置status:查看服务状态enable:设置服务开机自启disable:禁用服务开机自启list-units:查看所有服务单元list-enabled:查看已启用的服务list-disabled:查看已禁用的服务
示例:管理SSH服务
启动SSH服务:
bash$ sudo systemctl start sshd停止SSH服务:
bash$ sudo systemctl stop sshd重启SSH服务:
bash$ sudo systemctl restart sshd查看SSH服务状态:
bash$ sudo systemctl status sshd重新加载SSH服务配置:
bash$ sudo systemctl reload sshd
13.2 设置服务开机自启
启用服务开机自启
- 格式:
sudo systemctl enable 服务名 - 示例:bash
$ sudo systemctl enable sshd # 启用SSH服务开机自启 $ sudo systemctl enable nginx # 启用Nginx服务开机自启
禁用服务开机自启
- 格式:
sudo systemctl disable 服务名 - 示例:bash
$ sudo systemctl disable sshd # 禁用SSH服务开机自启
查看服务自启状态
查看所有已启用的服务:
bash$ sudo systemctl list-enabled查看所有已禁用的服务:
bash$ sudo systemctl list-disabled查看特定服务的自启状态:
bash$ sudo systemctl is-enabled sshd
13.3 查看服务状态,排查服务启动失败问题
查看服务状态
- 格式:
sudo systemctl status 服务名 - 示例:bash
$ sudo systemctl status sshd
服务状态解读
- active (running):服务正在运行
- active (exited):服务已执行完成
- active (waiting):服务正在等待某个事件
- inactive (dead):服务未运行
- failed:服务启动失败
排查服务启动失败问题
查看服务状态和错误信息:
bash$ sudo systemctl status 服务名查看服务日志:
bash$ sudo journalctl -u 服务名 $ sudo journalctl -u 服务名 -n 50 # 查看最近50行日志 $ sudo journalctl -u 服务名 -f # 实时查看日志检查服务配置文件:
- 大多数服务的配置文件位于
/etc目录下 - 例如:Nginx配置文件位于
/etc/nginx/nginx.conf
- 大多数服务的配置文件位于
检查端口占用:
bash$ sudo netstat -tlnp | grep 端口号 $ sudo ss -tlnp | grep 端口号检查依赖服务:
bash$ sudo systemctl list-dependencies 服务名尝试手动启动服务并查看详细输出:
bash$ sudo /usr/sbin/服务名 -v
常见服务启动失败原因
- 配置文件错误:配置文件格式不正确或参数错误
- 端口被占用:服务需要的端口已被其他程序占用
- 依赖服务未启动:服务依赖的其他服务未运行
- 权限问题:服务没有足够的权限访问某些文件或目录
- 资源不足:系统内存或磁盘空间不足
实战练习:服务管理
查看SSH服务状态:
bash$ sudo systemctl status sshd重启SSH服务:
bash$ sudo systemctl restart sshd设置SSH服务开机自启:
bash$ sudo systemctl enable sshd查看已启用的服务:
bash$ sudo systemctl list-enabled查看所有服务状态:
bash$ sudo systemctl list-units --type=service模拟服务启动失败排查:
- 尝试启动一个不存在的服务:bash
$ sudo systemctl start non-existent-service - 查看错误信息:bash
$ sudo systemctl status non-existent-service
- 尝试启动一个不存在的服务:
查看系统日志:
bash$ sudo journalctl -n 100
通过学习系统服务管理,你将能够管理Linux系统中的各种服务,确保服务的正常运行,及时排查和解决服务启动失败的问题,保证系统的稳定性。
