blueyi's notes

Follow Excellence,Success will chase you!

0%

Linux实用工具总结之cron

一些会比较经常用到的Linux下的工具,当然都是命令行。多数工具需要与正则表达式配合使用,所以可以很多工具使用前都需要先了解正则表达式,正则表达式可以参考这里正则表达式学习笔记

cron是linux下执行定时任务的系统服务,由crontab文件来指定执行的时间和具体命令,每个用户都有属于自己的crontab文件,具体信息可以查看man crontab文件的编写信息。
通过命令sudo systemctl status cron来查看cron服务是否已经启动

编写当前用户的crontab文件可以执行:

1
crontab -e

将会修改属于用户自己的crontab文件,使用root身份执行将会修改root用户的crontab:

1
sudo crontab -e

列出工作表中的所有命令:

1
crontab -l

删除当前用户的cron服务:

1
crontab -r

查看用户blueyi的crontab服务信息:

1
crontab -u blueyi -l

删除blueyi的crontab服务信息:

1
crontab -u blueyi -r

crontab文件主要在以下几个文件夹中:

  • /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
  • /etc/crontab 这个文件负责调度各种管理和维护任务。
  • /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
  • 我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次

crontab文件中每行是一个定时命令,其中每行的前5个区段为时间和日期区段,最后一个是需要定时执行的命令,以空格分隔。5 个时间区段分别表示分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-6,其中0表示周日)。它们可以用数字表示,或者配合以下4个通配符:

  • * 表示取值范围内的所有数字
  • /n 表示每过n个相应的数字执行
  • m-n 表示从m到n之间执行
  • m,n,l 表示第m、第n和第l个时间执行

举例:
每分钟执行一次cmd

1
* * * * * cmd

每小时的10、20、30分钟执行一次cmd

1
10,20,30 * * * * cmd

每天3点10分执行一次cmd

1
10 3 * * * cmd

每隔5天,在21点到23点之间的每20分钟执行一次

1
*/20 21-23 */5 * * cmd

每周六早上1点30分执行一次cmd

1
30 1 * * 6 cmd

每个月的10号和周一到周三的上午11点执行cmd

1
0 11 10 * mon-wed cmd

*一月12号早上4点每10分钟执行一次cmd

1
*/10 4 12 jan * cmd

如果发现自己创建的定时任务并未执行,可以查看是否由于cron服务没有启动:

1
sudo systemctl status cron

启动cron服务:

1
sudo systemctl start cron

Welcome to my other publishing channels