linux启动服务命令sh
linux启动服务命令sh详细介绍
在 Linux 中启动服务的命令与系统使用的初始化系统(Init System)密切相关,常见的有 systemd(现代主流)和 SysVinit(旧版系统)。以下是结合 sh 脚本及不同初始化系统的服务启动方式:
一、通过
systemd(推荐,适用于大多数现代 Linux 系统,如 Ubuntu 16+、CentOS 7+、Fedora 等)
systemd 使用 systemctl 命令管理服务,服务配置文件位于 /etc/systemd/system/ 或 /usr/lib/systemd/system/。
启动服务:
bash
systemctl start 服务名.servicesystemctl start 服务名
例如启动 Apache 服务:
bash
systemctl start apache2
与
sh 脚本的关联:
如果服务是通过自定义的 sh 脚本运行(需先创建服务单元文件):
- 编写服务脚本(如
/opt/my_service.sh),确保有执行权限:bash+x /opt/my_service.sh - 创建服务单元文件(如
/etc/systemd/system/my_service.service):ini - 重载
systemd并启动服务:bashsystemctl daemon-reloadsystemctl start my_service
二、通过
SysVinit(旧版系统,如 Ubuntu 14.04 之前、CentOS 6 及以下)
使用 service 命令或直接执行 /etc/init.d/ 下的 sh 脚本(这些脚本本身是 shell 脚本)。
启动服务:
bash
服务名 start/etc/init.d/服务名 start
例如启动 Nginx 服务:
bash
nginx start/etc/init.d/nginx start
自定义
sh 脚本作为服务:
- 将脚本复制到
/etc/init.d/目录并命名(如my_service),添加执行权限:bashmy_service.sh /etc/init.d/my_service+x /etc/init.d/my_service
- 脚本需包含
start/stop等函数(遵循 SysVinit 脚本规范),示例:sh"
start
start
stop
stop
*
{start|stop}"
- 注册服务并启动:bash
update-rc.d my_service defaultsmy_service on
my_service start
三、直接运行
sh 脚本启动服务(非标准服务)
如果只是临时通过 sh 脚本启动一个程序(非系统服务),直接执行即可:
bash
脚本路径./脚本路径
例如启动一个自定义的后台程序:
bash
/home/user/my_app.sh
常用命令总结
| 场景 | systemd(现代系统) | SysVinit(旧系统) | 直接运行 sh 脚本 |
|---|---|---|---|
| 启动系统服务 | sudo systemctl start 服务名 |
sudo service 服务名 start |
无 |
| 自定义服务(需注册) | 创建 .service 文件后用 systemctl |
创建 /etc/init.d/ 脚本后用 service |
直接 sh 脚本路径 |
| 查看服务状态 | sudo systemctl status 服务名 |
sudo service 服务名 status |
无(需手动检查进程) |
| 开机自启 | sudo systemctl enable 服务名 |
sudo update-rc.d 服务名 enable |
需手动添加到启动脚本 |
注意事项
- 服务名:通常无需加
.service后缀(systemd)或.sh后缀(SysVinit 脚本)。 - 权限:启动系统服务需
sudo权限,自定义脚本需确保路径正确且有执行权限。 - 日志:systemd 服务日志可通过
sudo journalctl -u 服务名查看,SysVinit 脚本日志需自行在脚本中定义。
如果需要针对特定 Linux 发行版(如 Ubuntu、CentOS)或自定义脚本场景进一步说明,可以补充信息哦!