检查文件是否存在在启动守护程序中不起作用

好吧,所以我有一个无头的Raspberry Pi,我很久以前创建了一个守护进程,以使其在启动时发挥声音效果,所以我知道它已经准备好进行SSH连接了。

#!/bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start:    $local_fs $remote_fs $syslog
# Required-Stop:     $local_fs $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

case "$1" in
    start)
      omxplayer /home/pi/Music/boku\ satchii.mp3
    ;;
    stop)
    ;;
    restart)
      $0 start
    ;;
    status)
      echo "Running"
    ;;
    *)
      echo "Usage: $0 {start|stop|restart|status}"
      exit 1
    ;;
esac

exit 0

工作正常。

现在,我遇到的问题是Pi大约每月失去一次网络连接的能力(我放弃了尝试找出原因),必须手动重新启动。为了解决这个问题,我每周都在crontab中重新启动一次,但是它总是在每个星期六的午夜用“ BOKU SATCHII!”将我叫醒,这对于第一次出现的中途来说就不再有趣了。

我放弃了一个快速的shell脚本,该脚本使用“ touch”创建文件“ / etc / quietboot”,然后重新启动。很好我在crontab中对它进行了重新引导,然后按如下所示修改了守护程序:

start)
  if [-e /etc/quietboot]; then
    sudo rm /etc/quietboot
  else
    omxplayer /home/pi/Music/boku\ satchii.mp3
  fi
;;

因此,想法是如果文件存在,则应将其删除;如果文件不存在,则应播放声音效果。我一直在测试它,它每次都只播放声音效果,并且从不删除quietboot文件。我尝试将文件放在home / pi /中,但结果相同。

我确定我在这里犯了一些基本错误,但是我不确定这是什么。有人可以帮我吗?

purezheng 回答:检查文件是否存在在启动守护程序中不起作用

关于您的声明:

if [-e /etc/quietboot]; then

您在那里需要多余的空间:

if [ -e /etc/quietboot ]; then
#   ^                 ^
# here!            and here!

您当前的语句正在做的是尝试运行[-e可执行文件并失败。此失败意味着else块始终运行。

如果尝试(从命令行),实际上可以看到此内容:

pax> if [false] ; then echo it was false ; else echo it was true ; fi
[false]: command not found
it was true

pax> if [ false ] ; then echo it was false ; else echo it was true ; fi
it was false
本文链接:https://www.f2er.com/2783796.html

大家都在问