Linux通用-脚本开机自启动(service)

Ubuntu 22.04、CentOS 8.5

vim /etc/systemd/system/my-custom-service.service

作用:在系统启动的最后阶段,自动查找【指定路径】下的脚本进行执行

脚本路径:vim /usr/local/bin/my-custom-script.sh

[Unit]
Description=My Custom Startup Script
After=network.target # 在网络服务启动后执行
Wants=network.target # 需要网络服务

[Service]
Type=forking # 脚本会启动一个后台守护进程
ExecStart=/usr/local/bin/my-custom-script.sh #运行脚本
Restart=on-failure # 失败时重启
RestartSec=10s
StandardOutput=journal # 输出到 systemd 日志

[Install]
WantedBy=multi-user.target # 多用户模式时启动

vim /usr/local/bin/my-custom-script.sh

作用:自定义需要运行的脚本

#!/bin/bash
# 这个脚本将在系统启动时执行

# 示例:启动一个自定义的 Python 脚本
/usr/bin/python3 /opt/my_custom_service.py > /root/log/my.log 2>&1 &

# 确保脚本以退出码 0 结束,表示成功
exit 0

 设置自动启动

  • 启用(开机自启): systemctl enable my-custom-service

  • 立即启动: systemctl start my-custom-service

  • 查看状态: systemctl status my-custom-service

  • 查看日志:journalctl -u my-custom-service -f

适用场景

  • rc-local.service:非常适合运行一些简单的、一次性的、非关键的启动任务
    • vim /etc/systemd/system/rc-local.service(rc-local.service执行rc.local)
    • vim /etc/rc.local(Ubuntu),vim /etc/rc.d/rc.local(Red hat)
    • journalctl -u rc-local.service
#!/bin/bash
# 你的简单非关键任务,放到后台执行避免卡启动(默认会等待你的脚本执行完,才算启动成功,尽量放后台执行)
/usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1 &

exit 0
  • 创建一个自定义的 systemd service文件或者使用supervisor:可以获得更精细的控制(依赖关系、资源管理、日志集成、自动重启等),适合复杂服务
posted @ 2025-04-11 11:53  FengweiTech  阅读(456)  评论(0)    收藏  举报