Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 检查文件是否存在不是';t在启动守护进程中工作_Bash_Scripting_Daemons - Fatal编程技术网

Bash 检查文件是否存在不是';t在启动守护进程中工作

Bash 检查文件是否存在不是';t在启动守护进程中工作,bash,scripting,daemons,Bash,Scripting,Daemons,好的,我有一个无头树莓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

好的,我有一个无头树莓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/中,但得到了相同的结果


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

关于你的陈述:

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