目录

[TOC]

参考链接

  1. ChatGPT
  2. Linux下设置开机自动运行脚本的5种方法:https://blog.csdn.net/qq_44839276/article/details/107622265

systemd

将Shell脚本使用systemd,使用服务启动

使用vim /etc/systemd/system/my-script.service,将下面内容加入服务脚本中,并且给脚本加上可执行权限chmod +x 需要执行的脚本

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=My script
After=network.target

[Service]
# Type=oneshot 表示服务只运行一次,并在脚本结束后退出。RemainAfterExit=yes 则表示服务在脚本结束后应保持运行状态。
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash /root/start.sh

[Install]
WantedBy=default.target
1
2
3
4
5
6
7
8
9
10
# 设置开机启动脚本
systemctl enable my-script.service

# 启动脚本
systemctl start my-script.service

# 查看脚本执行日志
journalctl -u my-script.service
#
systemctl status my-script.service

相关错误参考

如果服务已经正确启动,但是脚本没有运行,可能是由于以下原因:

  1. 检查脚本文件中的命令是否正确,包括命令的路径、参数、语法等。您可以手动运行脚本来检查它是否能够正常工作。

  2. 检查服务的工作目录和环境变量是否正确设置。如果在脚本中使用了相对路径或其他需要环境变量支持的命令,这一点显得尤为重要。

  3. 检查脚本是否需要一些特定的权限或授权来运行。如果您通过 sudo 或类似的方式以 root 权限执行脚本,则服务也必须以相应的权限级别运行。

  4. 检查服务的启动类型。如果您的服务是启动后立即停止的,那么脚本在服务停止时将被杀死。您可以更改服务的启动类型为 oneshot,这样脚本在服务启动时会运行并立即退出,并且服务将保持运行状态。

  5. 如果您的服务依赖于其他服务或进程,请确保这些服务或进程在系统上已经正确配置并正在运行。

  6. 如果您的脚本需要与其他程序交互,请确保它们之间没有任何冲突或错误。