嵌入式Linux下使用crond服务

参考:https://www.linuxidc.com/Linux/2014-02/97369.htm
http://www.linuxidc.com/Linux/2014-02/97360.htm
https://blog.csdn.net/xinyflove/article/details/83178876

crond是一个服务,一个守护进程。crond 是linux用来定期执行程序的命令,crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

执行 crontab -l 等操作时,经常会碰到这种错误:
crontab: can’t change directory to ‘/var/spool/cron/crontabs’: No such file or directory

所以首先创建这样一个目录吧!
#mkdir -p /var/spool/cron/crontabs

然后编辑要执行的任务
#crontabs -e

0 */1 * * * /sbin/ntpdate 192.168.1.67 >/dev/null 2>&1 每隔一个小时更新下时间,不打印任何信息

最后,执行下
#crond

此时你会发现/var/spool/cron/crontabs下有一个跟用户名相同的文件,保存着要执行的任务。

ps下会发现cron进程已经启动!

【问题】
var下面很多文件一直在刷新,电脑硬盘无所谓,嵌入式存储用的flash,擦写多了严重影响寿命,所以var目录下的内容实际为内存虚拟的,并不存在与flash之中。

在板子上使用crond去定时执行某个程序或命令,首先建立crontab表。

【解决方案】
在开发板(zlg-imx6ull)/opt/ 下建立crontab的配置文件root:

#mkdir -p /opt/crontabs   
vi /opt/crontabs/root      (目录根据实际新建, 需要注意的是文件名以用户名命名)
例如,在板子的/opt/crontabs/root文件中设置每分钟打印hello及每2分钟打印world, root内容如下:
	* * * * * /bin/echo "hello"
	*/2 * * * * /bin/echo "world"
	* * * * * /bin/echo "hello" >> /opt/crond-log.txt       //可以将信息输入到某个文件中
保存后,执行以下命令启动cront服务,在前台执行
	crond -f -c /opt/crontabs/            //前台执行
	crond -c /opt/crontabs/         //默认后台执行, 不打印信息

然后在/etc/init.d/rcS修改,让开发板每次启动之后自动执行:

mkdir -p /var/spool/cron/crontabs#guoshufanADD
cp -p /etc/crontabs/root /var/spool/cron/crontabs#guoshufanADD

chmod 777 /var/spool/cron/crontabs/root#guoshufanADD 

crond#guoshufanADD
echo "cp cron config file to /var/spool/cron/crontabs"#guohufanADD

即新建crontab配置文件目录,然后将配置文件按拷贝至新建目录下,完美解决问题,不过要记得执行chmod命令,以后只需要修改root中的内容就可以改变crontab配置,不过临时修改配置还是需要去/var/spool/cron/crontabs内的rooot文件,永久修改是修改/etc/crontabs/root,重启生效。

crontab语法规则:

1.每分钟定时执行一次规则:
每1分钟执行: */1 * * * *或者* * * * *5分钟执行: */5 * * * *

2.每小时定时执行一次规则:
每小时执行: 0 * * * *或者0 */1 * * *
每天上午7点执行:0 7 * * *
每天上午710分执行:10 7 * * *

3.每天定时执行一次规则:
每天执行 0 0 * * *

4.每周定时执行一次规则:
每周执行 0 0 * * 0

5.每月定时执行一次规则:
每月执行 0 0 1 * *

6.每年定时执行一次规则:
每年执行 0 0 1 1 *

7.其他例子
5 * * * * 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的730分执行ls命令
30 5 8 6 * ls 指定每年的68530执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令   [注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10号及20号的330执行ls命令   [注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令   [注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令   [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls 每个月中,每隔106:30执行一次ls命令   [即每月的1112131日是的630执行一次ls命令。 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值