【问题标题】:Reboot Raspberry Pi if service not running如果服务未运行,请重新启动 Raspberry Pi
【发布时间】:2016-12-29 12:53:43
【问题描述】:

我正在从我的 Raspberry Pi 运行 Bitorrent Sync。出于某种原因,它偶尔会离线。我正在尝试运行a script from crontab that will check the connection,但我也想检查 btsync 服务的状态 (sudo service btsync status)。我怎样才能把它放在一个将从 Crontab 运行的脚本中,查看输出,如果不是“正在运行”,则启动重新启动?

【问题讨论】:

  • 为什么要重启?只需让脚本重新启动服务即可。
  • 因为重启更简单,更简单。

标签: python raspberry-pi crontab


【解决方案1】:

您可以按照与 checkwifi.sh 相同的步骤操作,但将其设为 checkbtsync.sh

按照这些思路应该可以工作:

#!/bin/sh    
btsyncResult=$(sudo service btsync status)

if [[ $btsyncResult != *"is running"* ]]
then
    sudo /sbin/shutdown -r now
fi 

理论上,这将获取 btsync status 命令的结果并将其作为文本存储在变量中。如果文本不包含“正在运行”这个词,它会关闭。其余的就像您提到的链接中的 checkwifi 步骤:

将其存储在 /usr/local/bin/checkbtsync.sh

然后运行

sudo chmod 775 /usr/local/bin/checkbtsync.sh

然后 crontab 得到这个新行:

*/5 * * * * /usr/bin/sudo -H /usr/local/bin/checkbtsync.sh >> /dev/null 2>&1

【讨论】:

  • 这看起来不错,谢谢。你能解释一下最后一行吗? -H/dev/null 2>&1 有什么作用?我也发现很难测试这一点,因为我尝试写入日志文件失败了......
  • 来自 sudo 手册页:

    -H (HOME) 选项请求安全策略将 HOME 环境变量设置为目标用户的主目录(root by默认)由密码数据库指定。根据策略,这可能是默认行为。

    可能没有必要,但可能有助于 sudo 找到您正在运行的脚本。

    > /dev/nul 2>&1 发送输出“无处”,使其安静。也可能是不必要的。我刚刚从你分享的 checkwifi 教程中借了两个。
  • 谢谢。但是,除非我遗漏了什么,否则您的代码似乎有问题;我收到错误 btsyncResult: command not found?
  • 好的,问题似乎是空格,所以应该是btsyncResult=$(sudo service btsync status)。现在很好用,谢谢
【解决方案2】:

检查进程是否正在运行,使用ps aux。将下面的脚本命名为 btsync_reboot.shchown 它给运行 cron 的用户。

#!/bin/sh
echo "check service $(date)" >> /var/log/btsync-check.log
ps auxw | grep btsync | grep -v grep > /dev/null

if [ $? != 0 ]
then
        echo "rebooting at $(date)" >> /var/log/btsync-reboot.log
        reboot now >> /var/log/btsync-reboot.log
else 
        echo "btsync is running"  >> /var/log/btsync-check.log
fi

cron 表达式:* * * * * sh /path/to/btsync-reboot.sh

【讨论】:

  • 这是一个合理的答案,但是ps aux 检查的是进程,而不是服务的实际状态。例如,使用sudo service btsync stop 手动停止 btsync 并运行此脚本仍会返回“btsync 正在运行”。尽管作为额外的检查,但检查进程的状态并不是一件坏事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 2014-04-02
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 2021-05-08
  • 2023-03-15
相关资源
最近更新 更多