当前位置: 首页 > news >正文

linux使用服务添加一个开机启动脚本

以下是创建 user-plan.sh 开机自启动服务的完整步骤,包含服务配置、权限设置和调试方法:


1. 准备脚本文件

user-plan.sh 放到合适位置(如 /opt/user-plan/),并赋予可执行权限:

sudo mkdir -p /opt/user-plan/
sudo cp /path/to/user-plan.sh /opt/user-plan/
sudo chmod +x /opt/user-plan/user-plan.sh

2. 创建 systemd 服务文件

新建服务配置文件 /etc/systemd/system/user-plan.service,内容如下:

[Unit]
Description=User Plan Service
After=network.target  # 若需依赖网络,否则可删除此行[Service]
Type=simple
ExecStart=/opt/user-plan/user-plan.sh  # 必须绝对路径
Restart=on-failure    # 失败时自动重启
User=root             # 根据需要替换用户(如 www-data)
WorkingDirectory=/opt/user-plan/  # 脚本的工作目录
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # 确保环境变量# 可选资源限制
MemoryLimit=500M      # 限制内存使用
CPUShares=512[Install]
WantedBy=multi-user.target  # 多用户模式启动时生效

3. 启用服务

# 重载 systemd 配置
sudo systemctl daemon-reload# 启动服务并设置开机自启
sudo systemctl start user-plan
sudo systemctl enable user-plan

4. 验证服务状态

# 查看服务是否运行
sudo systemctl status user-plan# 实时查看服务日志(调试必用)
sudo journalctl -u user-plan.service -f

5. 常见问题处理

问题1:权限不足
  • 现象:日志报错 Permission denied
  • 解决
    sudo chmod 755 /opt/user-plan/user-plan.sh
    sudo chown root:root /opt/user-plan/user-plan.sh  # 根据实际用户调整
    
问题2:脚本路径错误
  • 现象:日志报错 No such file or directory
  • 解决
    • 检查 ExecStart 路径是否绝对路径
    • 执行 ls -l /opt/user-plan/user-plan.sh 确认文件存在
问题3:环境变量缺失
  • 现象:脚本中命令无法识别(如 python3 未找到)
  • 解决
    • [Service] 中明确指定环境变量:
      Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
      

6. 扩展配置(按需选择)

配置脚本参数

若脚本需要传参:

ExecStart=/opt/user-plan/user-plan.sh --mode=production
开机延迟启动

避免系统启动时资源竞争:

[Service]
ExecStartPre=/bin/sleep 10  # 延迟10秒启动
自定义日志输出

将脚本日志写入文件:

StandardOutput=file:/var/log/user-plan.log
StandardError=file:/var/log/user-plan-error.log

完整操作示例

# 从创建文件到启用服务的全流程
echo '#!/bin/bash
while true; doecho "User plan service is running $(date)" >> /var/log/user-plan.logsleep 60
done' | sudo tee /opt/user-plan/user-plan.shsudo chmod +x /opt/user-plan/user-plan.shsudo tee /etc/systemd/system/user-plan.service > /dev/null <<'EOF'
[Unit]
Description=User Plan Demo Service[Service]
Type=simple
ExecStart=/opt/user-plan/user-plan.sh
Restart=always[Install]
WantedBy=multi-user.target
EOFsudo systemctl daemon-reload
sudo systemctl enable --now user-plan

通过以上步骤,你的 user-plan.sh 脚本即可作为系统服务开机自动运行。如需进一步优化,可根据实际业务需求调整服务配置参数。

http://www.xdnf.cn/news/690247.html

相关文章:

  • 同一机器下通过HTTP域名访问其他服务器进程返回504问题记录
  • 服务器带宽线路的区别(GIA、CN2、BGP、CMI等)
  • Python教程(七)——错误和异常
  • Rust并发编程实践指南
  • Hadoop复习(一)
  • LVS-DR 负载均衡群集
  • LeetCode Hot100 (普通数组)
  • 深入解析 IP 代理:原理、应用场景与优化策略
  • ubuntu20.04安装NVIDIA显卡驱动(驱动官网下载安装包,解决开机启动黑屏问题,终极保姆式方案教程)
  • 51c~CUDA~合集1
  • Nginx内置变量及案例详解
  • 【mysql】-5 索引
  • 服务器tty2终端如何关机
  • WebAssembly 及 HTML Streaming:重塑前端性能与用户体验
  • 力扣100题---字母异位词分组
  • 力扣经典算法篇-16-最长公共前缀(顺序查找法,二分查找法,分治算法)
  • 学习率及相关优化参数详解:驱动模型高效训练
  • IP 风险画像技术略解
  • Parasoft C++Test软件单元测试_实例讲解(对多次调用的函数打桩)
  • apptrace 视角下移动端深度链接技术与优势​
  • 02-BTC-密码学原理 对hash算法如果出现漏洞的思考
  • MySQL 使用全局锁会导致的问题?
  • 【从零开始学习QT】Qt 概述
  • zookeeper 操作总结
  • 切换到旧提交,同时保证当前修改不丢失
  • K最近邻(KNN)算法完整实现指南
  • Linux -- gdb/cgdb的认识和使用
  • React Context 与状态管理:用与不用
  • 唯创WT2606B TFT显示灵动方案,重构电子锁人机互动界面,赋能智能门锁全场景交互!
  • 2025年北京市职工职业技能大赛第六届信息通信行业网络安全技能大赛复赛CTF部分WP-哥斯拉流量分析