,我们对我的最后一个问题的所有回答都可以创建一个小脚本来检查我的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()
{ (
...
) &
}
,只需在您的"开始"中调用背景。这要简单得多。