crond守护进程实现定时监控某进程占有内存的大小

时间:2021-10-29 22:43:51

1)添加计划任务

crontab -e会使用某个编辑器打开某个文件,然后在内输入需要执行的计划任务,保存后在/var/spool/cron/crontabs/下会出现以用户名命名的文件

2)计划任务如何添加

该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
    每个域之间使用空格或者制表符分隔。格式如下: 
  minute hour day-of-month month-of-year day-of-week commands

除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

几个例子: 
每天早上6点 
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时 
0 */2 * * * echo "Have a break now." >> /tmp/test.txt

晚上11点到早上8点之间每两个小时和早上八点 
0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
0 11 4 * 1-3 command line

1月1日早上4点 
0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/

每小时执行/etc/cron.hourly内的脚本
01 * * * * root run-parts /etc/cron.hourly
每天执行/etc/cron.daily内的脚本
02 4 * * * root run-parts /etc/cron.daily

每星期执行/etc/cron.weekly内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly

每月去执行/etc/cron.monthly内的脚本 
42 4 1 * * root run-parts /etc/cron.monthly

注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。

3)问题:在嵌入式开发中,发现嵌入式Linux系统内输入crontab -e发生报错

crontab: chdir(/var/spool/cron/crontabs): No such file or directory

解决方法:

mkdir -p /var/spool/cron/crontabs

由于/var文件夹是内核的虚拟文件夹,重启后改动全部消失,那么可以通过自启动脚本实现

mkdir -p /var/spool/cron/crontabs
cp /root/root /var/spool/cron/crontabs chmod 777 /var/spool/cron/crontabs/root
crond

其中由于是在登录前执行,所以不能使用‘~’

4)查看进程占用内存

crond进程定时启动某个脚本实现,脚本如下

PID=`ps |grep XXX|sed -n 1p|awk '{print $1}'`
free >> $FILE
cat /proc/$PID/status |grep VmSize >> $FILE

可以根据自己的内核打印情况自行修改

所有参考的文章以及网址

crontab相关:

linux下添加定时任务

嵌入式Linux下使用BusyBox的crond服务的方法

使用busybox的crond服务

Linux crontab定时任务配置方法(详解)

查看进程相关

http://bbs.csdn.net/topics/360001628(二楼最有用)

Linux下查看某一个程序运行所占用的内存

精确度量Linux下进程占用多少内存的方法