linux环境下,我们有两种常用的方式实现定时的任务。
- 等待一段时间后执行某任务 。(一次性)
该类型的需求直接通过sleep方法即可完成。
# 1小时候执行ls任务,并将输出重定向至ls.log
sleep 1h
ls >> ls.log
- 每日定期执行某任务
该类任务一般通过计划任务软件实现,linux上最常用的计划任务软件叫crontab,该软件的命令同时也叫crontab。
通过一个小案例来认识这个软件。假设我们需要每天1点定时执行一项任务(比如ls >> ls.log),那我们可以这样操作。
# 执行crontab命令
crontab -e
执行之后,我们会进入一个文档编辑的界面,推荐默认使用vim来进入(假设有跳出选择的按钮的话)。
# 编写任务
0 1 * * * ls >> ls.log
然后保存退出即可。保存之后,linux每天就会在凌晨1:00执行 ls >> ls.log任务了。
在crontab里,前五个用空格分割的字符,通常用于表达 分 时 日 月 周,因此 0 1 * * *,可以表示为每日的1时0分。
此外,crontab有拓展的表达格式。
例如 0-2 1 * * *,可以表示每日1时的0、1、2分时运行。
例如 */5 1 * * *,可以表示每日1时,每隔五分钟运行一次。