Linux的crontab定时任务

本文详细介绍了Linux系统中的定时任务crontab的使用方法,包括基本语法、时间格式及常见操作。通过实例演示了如何设置每分钟执行任务,并探讨了系统重启后定时任务的持久性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们在c语言开发的过程中总会或多或少的遇到一些定时的任务,比如每分钟检测一下某个状态,每30s上报一次心跳等等。比如我们51单片机的时候就会用手写延时函数来做,这种会阻塞。高级一点的会用定时器中断。然后c语言也会有定时器,这都是一些方法。今天来讲一下linux的定时任务 crontab
首先我们在我们的终端上敲一下看看

linux-xv9p:~/lyx_test/crontab # crontab -h
crontab: invalid option -- 'h'
crontab: usage error: unrecognized option
usage:	crontab [-u user] file
	crontab [-u user] [ -e | -l | -r ]
	crontab -n [ hostname ]
	crontab -c
		(default operation is replace, per 1003.2)
	-e	(edit user's crontab)
	-l	(list user's crontab)
	-r	(delete user's crontab)
	-i	(prompt before deleting user's crontab)
	-n	(set host in cluster to run users' crontabs)
	-c	(get host in cluster to run users' crontabs)
	-s	(selinux context)
linux-xv9p:~/lyx_test/crontab # 

哇塞 -h或者–help都不认,太高冷了吧。先不管,看介绍,-e 编辑,-l list,-r delete,最简单的用法已经够了。先-l看下吧。
在这里插入图片描述
啥也没有,因为没有默认的定时任务。那我们手动用-e创建一个,那就要讲到-e的语法规则了。-e 在linux终端窗口下是使用vi或者vim编辑的,都可以,问题不大。其编辑的格式如下:

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 7) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

以上的时间格式可以简化成一下的写法:
min hour day month weekday program
其最大的精度只能精确到分钟,所以那些秒级甚至毫秒级的定时器就老老实实的采用传统的定时器吧。说回来,这个每个*号代表一个时间,二者之间用空格隔开,那具体怎么写呢?
可以固定一个数字,如在分钟的位置固定为1,其表示的意思就是每个小时的1分钟这个时间点,如果是范围怎么表示,用中划线来表示:1-10就是没个小时的第1分钟到10分钟之间的时间。如果想表示每隔多久就用 / 符号表示,如 在分钟的位置上写上 /3 表示每隔3分钟。那我们来写一个具体的例子:
每年的1月到3月的1号到10号每隔两天,在这两天的第1个小时0分钟执行某个动作:0 1 1-10/2 1-3 * xxx
xxx表示我们要执行的动作。
有了以上的语法规则,那我们来实际操作一番。写个最简单的任务,每整数的分钟往我当前目录下的一个文件追加当前的日期:

linux-xv9p:~/lyx_test/crontab # pwd
/share+/SUSE_1/lyx_test/crontab
linux-xv9p:~/lyx_test/crontab # 

那么我们来编辑一下:
在这里插入图片描述
就最大的精度,每分钟把当前日期重定向到文件里。编辑完就有显示了,-l看一下,就有了刚才添加的这一条。
在这里插入图片描述
我就等了两分钟,去看一下这个路径下的test.txt文件:
在这里插入图片描述
是不是在每个整点分钟的第一秒就会有我们的操作重定向到文件中。同样我们可以在这个应用中执行一些我们自己写的脚本等等很酷的东西,看自己发挥。
那么有个疑问,这个东西我添加之后,系统重启了,这个定时任务还存在么。我们试一下,什么都不操作,直接重启系统,起来之后发现是还在的。如果不在的话,我们要怎么设置呢?
使用chkconfig去看下我们的启动任务,
在这里插入图片描述
cron是打开的。
我们打开关闭都看一下,看看有什么内容:
在这里插入图片描述
就是链接了一些文件,我们把他关掉,再重启看看这个任务还有没有

chkconfig cron off

重启还在,看来这个东西不是我们要的,后面再研究吧,不想要了其实-r删除掉就好了。

crontab -r

这个指令是全部删除,如果想删除某一条,可以-e进去编辑删除。
谨慎使用-r参数,建议备份自己的crontab文件,其位置为

/var/spool/cron/<username>

以上就是linux定时任务的简单使用了。如有错误欢迎指出,共同进步。
转载请注明出处,码字不易,欢迎点赞交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lyx_wmt

能白嫖就绝不打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值