Linux Midori浏览器没有';不要在脚本中开始第二次

Linux Midori浏览器没有';不要在脚本中开始第二次,linux,bash,midori,Linux,Bash,Midori,您好,我有一个apache Web服务器运行在我的Windows 10 PC上,带有xampp和一个RaspberryPi,可以用脚本连接到它。脚本检查特定端口上的Web服务器是否可用,如果可用,则启动浏览器,如果服务器不再可用,则关闭浏览器。这是我的剧本: #!/bin/bash ### BEGIN INIT INFO # Provides: browerstartup.sh # Required-Start: # Required-Stop: # Sho

您好,我有一个apache Web服务器运行在我的Windows 10 PC上,带有xampp和一个RaspberryPi,可以用脚本连接到它。脚本检查特定端口上的Web服务器是否可用,如果可用,则启动浏览器,如果服务器不再可用,则关闭浏览器。这是我的剧本:

#!/bin/bash

### BEGIN INIT INFO
# Provides:          browerstartup.sh
# Required-Start:    
# Required-Stop:     
# Should-Start:      
# Should-Stop:       
# X-Start-Before:    
# X-Stop-After:      
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     
# Short-Description: If connection available, connecT!
# Description:       If connection is available on port 80: Then connect.
### END INIT INFO

server="192.168.16.74"
sleep=10

while [ true ] ; do
echo "Script start" >> /home/pi/browserlog
 midori=$(pgrep "midori")
 nc -w 5 -z $server 80 >/dev/null 2>&1
 if [ $? -ne 0 ] ; then
  echo "Server isnt running!" >> /home/pi/browserlog
  if [ $midori ] ; then
   echo "Midori is still running but server is offline: Killing midori"
   kill $midori
  fi
 else
  echo "Server is running!" >> /home/pi/browserlog
  if ! [ $midori ] ; then
   echo "Starting midori" >> /home/pi/browserlog
   midori -e Fullscreen -a http://$server/Website/t1&
  fi 
 fi
echo "Sleep $sleep" >> /home/pi/browserlog
 sleep $sleep
done
第一次启动Web服务器时,它会连接并启动midori,如果停止Web服务器,它会关闭midori。但是如果我再次启动Web服务器,它将不再启动midori,我也不知道为什么

这是我的
browserlog
文件:

Script start
Server is running!
Starting midori
Sleep 10
Script start
Server is running!
Starting midori
Sleep 10
Script start
Server is running!
Starting midori
Sleep 10
Script start
Server is running!
Starting midori
Sleep 10
Script start
Server is running!
Starting midori
Sleep 10
Script start
Server is running!
Starting midori
Sleep 10
Script start
Server is running!
Starting midori
Sleep 10
Script start
Server is running!
Starting midori
Sleep 10
Script start
Server is running!
Starting midori
Sleep 10
Script start
Server is running!
Starting midori
Sleep 10
Script start
Server is running!
Starting midori
Sleep 10
Script start
在这里,我手动停止了脚本


也许你能帮我…

我安装了midori并为你编写了一个新脚本,兄弟:)


您是否尝试ping您的服务器??也许与脚本相关的
/home/pi/browserlog
的内容可以帮助我们?我会添加它@BaobyI有一些问题首先我只是在测试你的代码ty:D那么
/dev/null 2>&1
是什么,为什么你总是或主要使用
“${var}”
?我之所以使用>/dev/null 2>&1,是因为至少在我的情况下,在屏幕上启动midori显示“垃圾”。。。它显示了
openjdk版本“1.8.0_111”openjdk运行时环境(build 1.8.0_111-8u111-b14-3-b14)openjdk 64位服务器VM(build 25.111-b14,混合模式)
并且我使用“${var}”,因为我总是使用它来审核我的bash代码以避免警告1更多的问题是来自css3的
@keyframe
标记是否在midori中工作?这对我不起作用:/oh我以前从未用过midori。。。我只试着用我的主路由器页面做脚本。。。一切似乎都很好。。。javascript正在工作。。。css也是,但我想我路由器的网页没有css关键帧。。。也许如果你告诉我一些网页可以在互联网上测试。。。啊,我编辑了脚本以更改一行以避免一个shellcheck警告,这是“捕获”浏览器pid的行。现在我使用更好的pgrep:)我使用关键帧测试了此页面的midori,效果良好:
#!/bin/bash

### BEGIN INIT INFO
# Provides:          browerstartup.sh
# Required-Start:    
# Required-Stop:     
# Should-Start:      
# Should-Stop:       
# X-Start-Before:    
# X-Stop-After:      
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     
# Short-Description: If connection available, connecT!
# Description:       If connection is available on port 80: Then connect.
### END INIT INFO

ssl_activated=0
server="192.168.16.74"
sleep=10
log_path="/home/pi/browserlog"
browser="midori"

if [ "${ssl_activated}" -eq 1 ]; then
    parameters="-a https://${server}/Website/t1&"
else
    parameters="-a http://${server}/Website/t1&"
fi

browser_pid=""

#Optional, initialize log
rm -rf "${log_path}" >/dev/null 2>&1
echo "Script start" > "${log_path}"

while true; do
    echo "Loop start, checking server..." >> "${log_path}"
    nc -w 5 -z ${server} 80 >/dev/null 2>&1
    if [ $? -ne 0 ] ; then
        echo "Server isnt running!" >> "${log_path}"
        if [ -n "${browser_pid}" ]; then
            echo "There is a browser, let's kill it!" >> "${log_path}"
            kill "${browser_pid}" &> /dev/null
        fi
    else
        echo "Server is running!" >> "${log_path}"
        browser_pid=$(pgrep midori)
        if [ -n "${browser_pid}" ]; then
            echo "Midori is running and server is online" >> "${log_path}"
        else
            echo "Server is online but midori is not running, starting it!" >> "${log_path}"
            eval "${browser} ${parameters} >/dev/null 2>&1 &"
            browser_pid=$!
        fi
    fi
    echo "Sleep ${sleep}" >> "${log_path}"
    sleep ${sleep}
done