linux之定时器
Posted chendeming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux之定时器相关的知识,希望对你有一定的参考价值。
常见的操作系统如window、Linux都有提供定时任务的功能。
(1)windows是在开始-》程序-》附件-》系统工具-》任务计划选项中选择.exe程序或.bat批处理进行设定。
(2)linux中是以命令crontab命令,操作定时任务列表文本进行配置。
这两天在项目进行中使用到类似功能,于是写下这篇博文以便自己和与我有相似需求的朋友们参考。
亲测demo:在本人mac上每5s执行一次shell脚本test.sh
(1)打开终端,执行crontab -e
(2)在打开的vi编辑器里添加如下内容,并保存关闭(:wq)
#每1分钟执行一次脚本/Users/{用户名}/Desktop/test.sh
*/1 * * * * /Users/{用户名}/Desktop/test.sh
备注:/Users/{用户名}/Desktop/test.sh为一shell脚本具体存储路径,且必须先赋给test.sh文件可运行权限(chmod u+x test.sh)
(3)查看定时任务列表,看任务是否添加成功
crontab -l
若能输出一行
*/1 * * * * /Users/{用户名}/Desktop/test.sh即算成功
(4)test.sh的内容参考如下,在本次实验中,shell脚本的功能为增量向文件test.txt中添加写入test1
echo \'test001\' >> /Users/{用户名}/Desktop/test.txt
(5)最终效果为,每分钟test.txt中增量增加一个test001的字符串
备注:
(1)如何配置
命令格式:
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
命令参数:
-u user:用来设定某个用户的crontab服务,例如,“-u root”表示设定root用户的crontab服务,此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
任务规则
crontab -e 编辑的每一行为一个定时任务,这每一行的规则如下(可对照(3)中命令):
minute hour day month week command
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段(minute、hour、day、month、week)中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
(2)如上只是创建临时的定时任务,每次重启,定时任务就会被移除。若想要创建长久保存的
可以参照http://blog.csdn.net/catoop/article/details/41821395中所提到的两种方法做
(3)使用过程中参考过如下博客,若有需要的朋友也可以看下博客
linux下使用守护进程crond配置crontab
https://www.cnblogs.com/longjshz/p/5779215.html
demo2
https://www.cnblogs.com/wangzhuxing/p/6169847.html
定时任务不生效
http://www.timepoet.com/2011/05/crontab-do-not-work.html
crontab详解
https://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
以上是关于linux之定时器的主要内容,如果未能解决你的问题,请参考以下文章