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

浙公网安备 33010602011771号