指令碼實現 監視ARM上某個已知名稱的程式,若該程式退出了,則重新執行它。
阿新 • • 發佈:2019-02-03
#!/bin/sh
while :
do
stillRunning=$(ps |grep "test" |grep -v "grep")
if [ "$stillRunning" ] ; then
echo "test service was already started by another way"
else
echo "Starting service ..."
/flash/test &
echo "test service was exited!"
fi
sleep 5
while :
do
stillRunning=$(ps |grep "test" |grep -v "grep")
if [ "$stillRunning" ] ; then
echo "test service was already started by another way"
else
echo "Starting service ..."
/flash/test &
echo "test service was exited!"
fi
sleep 5
done
ps |grep "test" |grep -v "grep"語句是查詢test程式是否執行,若在執行,則返回非0
這是每5秒查詢一次test是否退出執行了。
附帶說一句,arm板的自啟動指令碼在 etc/init.d/rcS裡面,一般可以將想開機執行的程式放在裡面,但是記住,
不要將你寫的指令碼放到裡面。否則下次斷電重啟,你的arm板啟動到最後可能起不來。
如何解決希望開機就啟動自己的一個指令碼呢? 可以寫一個程式 用system來執行指令碼,然後將這個程式放到開機自啟動裡面就行了。
也就是開機自啟動程式,程式啟動指令碼。
char cmd[20]=“/flash/restart.sh”;
system(cmd);