如何启用 etc/rc.local 中的脚本在启动时运行?

如何启用 etc/rc.local 中的脚本在启动时运行?

我有一个想在启动时运行的脚本(这是针对树莓派的),并且我按照同一问题的答案中的说明进行操作(链接这里)。

  1. 我想要运行的代码位于一个名为的文本文件中startup.sh

  2. #!/bin/sh位于 的第一行startup.sh。但是当我sudo startup.sh在终端中运行以检查代码是否正常运行时,我收到一条错误消息,提示“未找到命令”。当我运行startup.sh

  3. 在 中/etc/rc.local,我写了sh,然后是完整路径名,startup.sh后面跟着exit 0

    sh /home/bugs/Desktop/AutoBeetle-BeetleMonitoring/startup.sh
    
    exit 0
    
  4. 验证了第一行/etc/rc.local#!/bin/sh -e

  5. 确保/etc/rc.local可执行:

    sudo chown root /etc/rc.local
    sudo chmod 755 /etc/rc.local
    
  6. 验证代码是否有效:

    sudo /etc/rc.local start
    

当我这样做时,代码运行得很好。但是当我重新启动系统时,它仍然无法在启动时运行。我很困惑为什么除了第 2 步之外一切都正常,以及这是否导致了启动时运行的问题。任何帮助都非常感谢。

答案1

如果其他方法都失败了,请考虑在 root 的 crontab 中添加一行:

@reboot /home/bugs/Desktop/AutoBeetle-BeetleMonitoring/startup.sh

最后一点,确保任何人都可以运行该脚本(即权限 755 或更高)

答案2

(我没有足够的声誉来评论。)尝试使用完整路径:/usr/bin/sudo 后跟脚本的完整路径。

(也许可以获得额外的声誉点数。)使用“which”命令显示完整路径:which sudo。

相关内容