一些比较功能需求比较简单的可以考虑使用shell脚本来写,这样可以方便快捷稳定
1. 读取文件值,根据文件值1 或 0 来开启和关闭某些程序
a. while :
do
done
是无限循环。
b. while read line
do
echo $line
done < value
是读取文件value中的每行。
c . if [ $line = "0" ]; then
fi
是if语句,[]内左右两边都要留空格。
d. if []; then
elif []; then
fi
是if-else语句。
e.
ps | grep -v grep | grep modbusConfig | wc -l
wc -l 是用来计算结果的条数
grep -v grep是去掉结果中包含grep的记录
f. #!/bin/sh 是使用/bin/目录下的sh工具
#!/bin/sh while : do cd /sys/class/gpio/gpio26/ while read line do echo $line if [ $line = "0" ];then killall pwmOut killall modbusConfig echo pwm_duty_cycle 100 > /tmp/my_fifo elif [ $line = "1" ];then sn=`ps | grep -v grep | grep pwmOut | wc -l` if [ $sn -lt 1 ];then cd /modbus/ ./pwmOut & fi sm=`ps | grep -v grep | grep modbusConfig | wc -l` if [ $sm -lt 1 ];then cd /modbus/ ./modbusConfig & fi fi done < value sleep 1 done
2. watchdog 守护精灵,当目标程序不在运行时就会启动它
watchdog.sh
get_web_srv_sts() { ret1=`ps | grep "$1" | grep -v grep | wc -l` ret2=`ps | grep "$1"|grep -v grep | grep "Z"|wc -l` if [ $ret1 -ge 1 ] && [ $ret2 -eq 0 ] then FUN_RET="UP" else FUN_RET="DOWN" fi } while true; do get_web_srv_sts "collector_arm" if [ $FUN_RET = 'UP' ] then echo "process running" sleep 60 else echo "process down" killall collector_arm sleep 60 cd /usr/file/ssf ./collector_arm& sleep 60 fi done