ubuntu用root账户启动服务指定脚本

ubuntu默认使用非root账号登录,如果某个脚本需要root权限执行,可以采用service的方式实现。

安全风险:因为权限很高,要防止脚本被篡改执行危险操作。

1、创建服务文件

sudo vi /etc/systemd/system/your-service-name.service

内容为:

[Unit]
Description=你的服务描述
After=network.target   # 确保在网络服务启动后启动,可按需调整

[Service]
Type=forking           # 服务的类型,常用的是 simple 或 forking
User=root              # 关键:指定以 root 用户运行。为了安全推荐用普通账户。
ExecStartPre=/bin/sleep 30  # 可选:启动前延时30秒
ExecStart=/path/to/your/command.sh  # 关键:你的程序或启动脚本的绝对路径
ExecStop=/path/to/your/command.sh # 可选:停止脚本的绝对路径 Restart
=on-failure # 可选:服务意外退出时自动重启 RestartSec=10 # 可选:重启前等待秒数 [Install] WantedBy=multi-user.target # 表示在系统进入多用户模式时启动此服务

2、启用服务

# 1. 重新加载 systemd 配置,让系统识别新的服务文件
sudo systemctl daemon-reload

# 2. 设置服务开机自启
sudo systemctl enable your-service-name.service

# 3. 立即启动服务
sudo systemctl start your-service-name.service

# 4. 查看服务运行状态,确认是否成功
sudo systemctl status your-service-name.service

如果服务启动失败,可以用以下方法排查。

sudo journalctl -u your-service-name.service -f

 

posted @ 2026-06-16 20:49  松山居士  阅读(7)  评论(0)    收藏  举报