①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中有记录进程重启的记录时间戳。
附参考链接:
linux进程监控与自动重启的简单实现方法
Linux 定时任务crontab_014
②如果arm里面不支持crontab来实现进程的监控
*****稍等,测试中****