①arm如何移植系統裏面可以利用crontab來實現進程的監控與重啓。crontab命令用於週期性被執行命令,指令被守護進程激活。
1、檢查是否安裝crontab
rpm -qa | grep crontab
2、查看服務是否開啓定時任務
service crond status
出現 Active: active(running)即,已開啓任務。
service crond start 開啓服務
service crond stop 關閉服務
service crond restart 重啓服務
service crond reload 重新載入配置
3、編輯需要監控並重啓進程腳本bindmonitor.sh
#! /bin/sh
host_dir=`echo ~` # 當前用戶根目錄
proc_name="myproc" # 進程名
file_name="bindmonitor.log" # 日誌文件
pid=0
proc_num() # 計算進程數
{
num=`ps -ef | grep $proc_name | grep -v grep | wc -l`
return $num
}
proc_id() # 進程號
{
pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`
}
proc_num
number=$?
if [ $number -eq 0 ] # 判斷進程是否存在
then
~/myproc & # 重啓進程的命令,請相應修改
proc_id # 獲取新進程號
echo ${pid}, `date` >> $file_name # 將新進程號和重啓時間記錄
fi
其中,myproc是我在arm中跑的qt程序,個人依據自己的監控進程重啓步驟,來決定是不是添加配置文件。
4、編輯crontab來激活shell文件
crontab -e
vim編輯來添加任務即可
*/1 * * * * /root/bindmonitor.sh # 每分鐘運行一遍bindmonitor.sh腳本
Tips:crontab的格式
* * * * * command
minute hour day month week command
分 時 天 月 星期 命令
星號(*):代表每的意思,例如month字段如果是星號,則表示每月都執行該命令操作。
逗號(,):表示分隔時段的意思,例如,“1,3,5,7,9”。
中槓(-):表示一個時間範圍,例如“2-6”表示“2,3,4,5,6”。
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/1”表示每一個小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執行一次。
例:
30 3,12 * * * command ##每月每天3:30和12:30分別執行command
30 8-16/2 * * * command ##每月每天8點-16點每隔2個小時的每30分鐘執行command
5、查看定時任務及執行情況
crontab -l #列出當前用戶定時任務
crontab -r #刪除當前用戶定時任務
cat /var/spool/mail/{username} #查看crontab的執行情況,username爲當前用戶名
6、手動kill進程查看日誌
killall -9 myproc
因爲我的shell是一分鐘的週期,一分鐘後可以查看bindmonitor.log中有記錄進程重啓的記錄時間戳。
附參考鏈接:
②如果arm裏面不支持crontab來實現進程的監控
*****稍等,測試中****