您的位置:首页 > 运维架构 > Linux

利用CRONTAB自动定时执行任务(ARM-LINUX)

2018-01-09 16:29 489 查看
本人的项目中,应为系统的需要,需要在嵌入式环境下,实现开机自启动定时运行脚本/程序,以实现自动化。一开始是利用while 循环与 sleep 实现定时执行命令,而在了解到crond这一机制后,发现自己的嵌入式平台所搭载的Angstrom系统中也支持crontab功能,于是对其进行探究。

首先,关于什么是crontab?

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

如何编辑、利用crontab的功能?
 如要将crontab应用于当前用户,使用命令crontab -e,即可进入crontab的编辑界面。其基本格式如下:
 * * * * *cmd
 上述5个*分别代表分、时、天、周、月,默认情况下*即代表每一/分/时/天/周/月,也可以用*/x表示每x分/时/天/周/月。

附:个别实例
 examle 1:每1分钟执行一次command
 命令:
 * * * * * command
 examp2:每小时的第3和第15分钟执行
 命令:
 3,15 * * * * command
 example3:在上午8点到11点的第3和第15分钟执行
 命令: 
 3,15 8-11 * * * command
 example4:每隔两天的上午8点到11点的第3和第15分钟执行
 命令:
 3,15 8-11 */2 * * command
 example5:每个星期一的上午8点到11点的第3和第15分钟执行
 命令:
 3,15 8-11 * * 1 command
 example6:每晚的21:30重启smb
 命令:
 30 21 * * * /etc/init.d/smb restart
 example7:每月1、10、22日的4 : 45重启smb
 命令:
 45 4 1,10,22 * * /etc/init.d/smb restart
 example8:每周六、周日的1 : 10重启smb
 命令:
 10 1 * * 6,0 /etc/init.d/smb restart
 example9:每天18 : 00至23 : 00之间每隔30分钟重启smb
 命令:
 0,30 18-23 * * * /etc/init.d/smb restart
 example10:每星期六的晚上11 : 00pm重启smb
 命令:
 0 23 * * 6 /etc/init.d/smb restart
 example11:每一小时重启smb
 命令:
 * */1 * * * /etc/init.d/smb restart
 example12:晚上11点到早上7点之间,每隔一小时重启smb
 命令:
 * 23-7/1 * * * /etc/init.d/smb restart
 example13:每月的4号与每周一到周三的11点重启smb
 命令:
 0 11 4 * mon-wed /etc/init.d/smb restart
 example14:一月一号的4点重启smb
 命令:
 0 4 1 jan * /etc/init.d/smb restart
 example15:每小时执行/etc/cron.hourly目录内的脚本
命令:
 01   *   *  *   *    root run-parts /etc/cron.hourly【1】
 
若在规划时间执行命令,crond会自动向用户邮箱发送一份记录。也可以自己定义一个日志文件,让其输出到该文件上。
具体方法为,在命令后加空格 >> filepath/filename
如* * * * * ntpdate 192.168.30.31 >> /home/root/cron_log.txt

注意事项:
   若命令不能顺利执行成功,可能是因为环境变量的问题,如本人先前试图以如下方式执行脚本:
   0*/2 * * * /home/root/BBB_WORK/CMD-TRANSMIT-2H.sh
   但失败了,于是修改为:
   0*/2 * * * /bin/sh /home/root/BBB_WORK/CMD-TRANSMIT-2H.sh即可!
  特别注意!脚本的执行环境默认为当前用户目录,比如为用户root,则在执行脚本时,如在本机环境下,即会将当前目录当做 /home/root,因此,若涉及其他目录的操作,应该相应做出调整。(本人在脚本中利用cd命令进行切换目录)
 
   参考资料:
 【1】https://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息