我把这个脚本编成文件更改的看门狗-一旦文件一段时间没有更改,这意味着受控进程已损坏,必须重新启动计算机(NI CompactRIO)。
文件位于/etc/init.d中,我使用了以下命令:
chmod +x /etc/init.d/reboot_after_fail.sh
chmod 777 /etc/init.d/reboot_after_fail.sh
/usr/sbin/update-rc.d -f reboot_after_fail.sh defaults 99 0
看起来都不错,但是启动时什么也没发生(ps -ef|grep reboot
)。 NTP系统时间更新的脚本以相同的方式安装,并且可以正常工作。直接运行或与nohup /etc/init.d/reboot_after_fail.sh &
一起运行的同一脚本效果很好。有任何想法吗?脚本代码如下:
#!/bin/sh
#change values
timestamp_file="/c/settings/timestamp.dat"
init_sleep_time=120
sleep_time=300 #in seconds
#do not change values
timestamp_value_first=0
timestamp_value_second=0
sleep $init_sleep_time
timestamp_value_first=$(<"$timestamp_file")
while true
do
sleep $sleep_time
timestamp_value_second=$(<"$timestamp_file")
if [[ $timestamp_value_second -eq "0" || $timestamp_value_second -eq "" ]]
then
:
elif [ $timestamp_value_first -eq $timestamp_value_second ]
then
#exec reboot;reboot
echo "reboot"
else
timestamp_value_first=$timestamp_value_second
fi
done