
Linux `service` 命令深度解析与高阶应用指南
一、核心功能与运行机制
1. 核心作用解析
service [服务名] [动作] [选项]
- 兼容双模式:同时支持传统 SysVinit 和现代 systemd 系统
- 服务生命周期管理:全流程控制服务启动/停止/重启
- 状态监控:实时查看服务运行状态与依赖关系
- 日志管理:集成日志查看与调试功能
2. 系统兼容性对比
特性 |
SysVinit 系统 |
systemd 系统 |
配置文件位置 |
/etc/init.d/ |
/usr/lib/systemd/system/ |
日志管理 |
分散在/var/log/ |
集中式 journalctl |
依赖管理 |
手动配置启动顺序 |
自动依赖解析 |
并行启动 |
不支持 |
支持 |
二、全功能操作手册
1. 基础操作矩阵
操作命令 |
功能说明 |
等效 systemctl 命令 |
service nginx start |
启动服务 |
systemctl start nginx |
service mysql stop |
停止服务 |
systemctl stop mysql |
service sshd restart |
重启服务 |
systemctl restart sshd |
service httpd reload |
重载配置文件 |
systemctl reload httpd |
service docker status |
查看服务状态 |
systemctl status docker |
2. 高级功能操作
查看服务初始化脚本
service --status-all | grep -E '\[ \+ \]'
带环境变量启动服务
MYSQL_ROOT_PASSWORD=secret service mysql start
测试运行模式(不实际执行)
service --test httpd restart
三、服务脚本开发指南
1. SysVinit 脚本模板
#!/bin/sh
BEGIN INIT INFO
Provides: myapp
Required-Start: $network $syslog
Required-Stop: $network $syslog
Default-Start: 2 3 4 5
Default-Stop: 0 1 6
END INIT INFO
case "$1" in
start)
/usr/local/bin/myapp start
;;
stop)
/usr/local/bin/myapp stop
;;
restart)
$0 stop
$0 start
;;
status)
ps aux | grep myapp
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
2. 注册系统服务