将BASH脚本发送到“开始”中



,我们对我的最后一个问题的所有回答都可以创建一个小脚本来检查我的NAS的温度,但是现在我正在努力将其发送到后台。当我尝试用

启动脚本时
sh temp_check.sh start

我遇到了指向这一行的错误

$0 background &

我不知道为什么:/这是我的整个脚本

#!/ffp/bin/sh
#
#check CPU and HDD temperature and shutdown if too hot
#Settings
cpu_high=60
hdd_high=50
NAME="temp_check"
PIDFILE="/var/run/$NAME.pid"
Background() {
   echo $$ >$PIDFILE
   exec >/dev/null 2>&1
   trap "rm -f $PIDFILE ; exit 0" INT TERM EXIT
   while true; do
       STATE=$(hdparm -C /dev/sda1 | grep "drive state" | awk '{print $4}')
       if [ "$STATE" = "active/idle" ]; then
           hdd_temp=$(/usr/local/zy-pkgs/bin/smartctl -A -d marvell /dev/sda | grep 194 | cut -d: -f3 | awk '{print $10}')
           cpu_temp=$(i2cget -y 0x0 0x0a 0x07)
           printf -v cpu_res "%d" "$cpu_temp"
           if [[ $cpu_res -lt $cpu_high && $hdd_temp -lt $hdd_high ]]; then
           #echo "CPU und HDD Temperaturen in Ordnung"
           sleep 30
           else
           halt
           fi
       else
           cpu_temp=$(i2cget -y 0x0 0x0a 0x07)
           printf -v cpu_res "%d" "$cpu_temp"
           if [ $cpu_res -lt $cpu_high ]; then
               #echo "CPU Temperatur in Ordnung - HDD im Standby Modus"
               sleep 30
           else
               halt
           fi
       fi
   done
   }
   case $1 in
       start)
           [ -f $PIDFILE ] && [ -f /proc/` cat $PIDFILE `/cmdline ] && echo "already running.       Aborting." && exit 1
           $0 background &
           echo "Starting $NAME..."
       ;;
       stop)
           kill -9 ` cat $PIDFILE ` >/dev/null 2>&1
           echo "Stopping $NAME ` cat $PIDFILE ` "
       ;;
       status)
           [ -f $PIDFILE ] && [ -f /proc/` cat $PIDFILE `/cmdline ] && echo "running as ` cat $PIDFILE ` " && exit 0
           echo "not running"
       ;;
       background)
           Background
       ;;
       *)
           echo "use $0 [ start | stop | status ]"
       ;;
   esac

任何帮助都将受到赞赏

欢呼莫里茨

一个可能的错误是,该脚本无法执行。如果是这种情况,您可以将行修复到

/bin/sh $0 background &

或使脚本可执行

chmod a+x temp_check.sh

也许会有所帮助,如果您将背景()函数更改为

之类的东西
Background()
{ (
...
) &
}

,只需在您的"开始"中调用背景。这要简单得多。

相关内容

  • 没有找到相关文章