2014-01-20 53 views
0

与我最后一个问题的所有类型的答复我已经能够创建一个小脚本来检查我的NAS上的温度,但现在我努力发送到后台。当我尝试启动我的脚本发送bash脚本到背景开始

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 

任何帮助表示赞赏

干杯 莫里茨

+1

错误信息究竟是什么? –

+1

您的脚本名称是否在您的路径中? – BroSlow

+0

/bin/sh $ 0背景&<-----做了诡计!谢谢@Olaf Dietsche – Moritz

回答

0

一个可能的错误是脚本不可执行。如果是这样的话,你可以修复线

/bin/sh $0 background & 

或使脚本可执行与

chmod a+x temp_check.sh 
+0

/bin/sh $ 0 background&<----- 诀窍!谢谢 – Moritz

0

也许有帮助,如果你改变你的背景()函数类似

Background() 
{ (
... 
) & 
} 

只需在您的“开始”中调用Background。这简单得多。

+0

/bin/sh $ 0背景&<-----诀窍! – Moritz