1. 程式人生 > >指令碼實現 監視ARM上某個已知名稱的程式,若該程式退出了,則重新執行它。

指令碼實現 監視ARM上某個已知名稱的程式,若該程式退出了,則重新執行它。

#!/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

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);