在 Linux 中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为“crontab”,是“cron table”的简写。
cron服务
cron是一个 Liunx 下 的定时执行工具,可以在无需人工干预的情况下运行作业。
# 查看crond服务状态
systemctl status crond
# 开启crond服务
systemctl start crond
crontab语法
refer to : https://tool.lu/crontab/
crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的。
在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
每个域之间使用空格或者制表符分隔。
格式如下:
minute hour day-of-month month-of-year day-of-week commands
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday)
总共5个参数
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",
*代表所有的取值范围内的数字,
"/"代表每的意思,"/5"表示每5个单位,
"-"代表从某个数字到某个数字,","分开几个离散的数字。
例子:
# 每月的最后1天
0 0 L * * *
说明:
Linux
* * * * *
- - - - -
| | | | |
| | | | +----- day of week (0 - 7) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | +---------- month (1 - 12) OR jan,feb,mar,apr ...
| | +--------------- day of month (1 - 31)
| +-------------------- hour (0 - 23)
+------------------------- minute (0 - 59)
常见示例:
*/5 * * * * 表示每隔5分钟执行一次
0 */1 * * * 表示每个小时执行一次
1 3 1,4,6 * * 表示每月的1号3点01分 每月的4号3点01分 每月的6号3点01分执行一次
0 3 * 5-9 * 表示5-9月的3点执行一次
0 2 * 6 5 表示6月的每周五2点执行一次
crontab命令
-l 在标准输出上显示当前的crontab。
-r 删除当前的crontab文件。
-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。
创建cron脚本
新增或者编辑定时任务:
crontab -e
进入编辑模式, 按照指定任务命令格式编辑命令
1 2 3 4 5 /path/to/command或者:1 2 3 4 5 /root/ntp_sync.sh
*/1 * * * * echo "wptest....." >> /home/cronwp/wpcrontest.txt
示例:
创建一个print11.sh,内容如下:
#!/bin/bash
echo 111
新增cron定时任务
crontab -e
*/1 * * * * /var/logs/cron/print11.sh >> /var/logs/cron/print11.log
上面的是每分钟执行一次脚本
还可以设置成,每天1点执行一次备份脚本,如下:
0 1 */1 * * /opt/MysqlBackup/mysql_dump.sh
查看定时任务
crontab -l