在Linux中可以使用crontab
命令来做定时任务。
我们可以每隔5分钟或者5小时执行某个任务,
亦或者每天的凌晨执行某个任务,
同样可以在某个连续的时间段执行某个任务(比如每天的7到19点执行数据的处理)。
下面介绍crontab命令的语法和使用
命令格式
crontab 选项 [文件]
选项 | 说明 |
-e | 常用,编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件 |
-l | 常用,显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容 |
-r | 从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件; |
-u<用户名称> | 指定要设定计时器的用户名称,例如,“-u yxjc”表示设定yxjc用户的crontab服务,此参数一般由root用户来运行; |
-i | 在删除用户的crontab文件时给确认提示。 |
-s | selinux context |
时间格式
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列表示号星期0~6(0表示星期天)
第6列要运行的命令
crontab 启动重启停止命令
systemctl start crond //启动服务
systemctl stop crond //关闭服务
systemctl restart crond //重启服务
systemctl reload crond //重新载入配置
systemctl status crond //查看crontab服务状态
例子
根据前面所说的,下面给出crontab的例子,其中.sh的内容可以是执行 java、php、python等的程序。
# 每隔5分钟执行
*/5 * * * * /data/script/xxx.sh
# 每隔5小时执行
* */5 * * * /data/script/xxx.sh
# 每天的7点到19点执行任务
* 7-19 * * * /data/script/xxx.sh
# 每天的7点到19点每隔5分钟执行
*/5 7-19 * * * /data/script/xxx.sh
# 每周三的16点30分执行
30 16 * * 3 /data/script/xxx.sh
crontab 日志
有时候不知道定时任务是否执行了,我们可以通过crontab的日志文件查看脚本是否执行成功。
默认情况下crontab 日志在/var/log下,可以通过ls 命令查看如下:
[root@localhost log]# ls -l /var/log/cron*
-rw------- 1 root root 100730 Mar 24 20:54 /var/log/cron
-rw------- 1 root root 128487 Feb 26 03:48 /var/log/cron-20230226
-rw------- 1 root root 172373 Mar 6 03:39 /var/log/cron-20230306
-rw------- 1 root root 128611 Mar 12 03:45 /var/log/cron-20230312
-rw------- 1 root root 172053 Mar 20 03:35 /var/log/cron-20230320
你可以通过winscp在线可视化工具查看日志文件的内容,也可以使用tail命令查看日志的内容,比如。
tail -f /var/log/cron //查看最新的日志
tail -100 /var/log/cron //查看最新的100条日志