前言
Linux中的定时任务(案例:定时备份和清空)
crontab 命令
Linux crontab 是用来定期执行程序的命令, 当安装完成操作系统之后,默认便会启动此任务调度命令。
crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
使用语法
crontab -e
:打开文字编辑器来设定时程表crontab -l
:查看时程表crontab -r
:删除时程表crontab -u [指定用户] -[附加上面命令]
:对指定用户进行操作
- 编辑(
创建任务
):
# 不加 -u 表示编辑当前用户的时程表
$ crontab -e
# 编辑wang这个用户的时程表
$ crontab -u wang -e
图例:
输入 -e 编辑命令
回车进入 vi 编辑窗口
默认是空,此处编写你的定时任务,规则在下方描述
- 查看(
查看时程表
)
# 不加 -u 表示查看当前用户的时程表
$ crontab -l
# 查看wang这个用户的时程表
$ crontab -u wang -l
图例:
查看当前用户时程表
查看指定用户时程表
- 删除(
删除时程表
)
# 不加 -u 表示删除当前用户的时程表
$ crontab -r
# 对wang这个用户进行删除操作
$ crontab -u wang -r
图例:
删除当前用户时程表
删除指定用户时程表
实例
定时备份用
nohup.out
命令 启动jar包的nohup.out
日志文件,并清空源日志文件。
一分钟备份备份一次
编写备份脚本,该脚本会把/usr/wang/soft/test/nohup.out文件复制一份以当前事前开头的备份文件,并清空原来的nohup.out文件内容
#!/bin/bash
# 获取当前日期
date=$(date +%Y%m%d%H%M%S)
# 备份日志文件
cp /usr/wang/soft/test/nohup.out /usr/wang/soft/test/${date}_nohup.out
# 清空日志文件
echo "" > /usr/wang/soft/test/nohup.out
当前路径下的所有文件
设定时程表,一分钟执行一次该脚本
# 编辑时程表
$ crontab -e
# 在vm中输入如下规则(一分钟执行一次/usr/wang/soft/test目录下的clear_nohup.sh运行我呢见)
* * * * * /usr/wang/soft/test/clear_nohup.sh
# 设定好了保存退出即可
执行流程如下:
时程表规则
* * * * * /usr/wang/soft/test/clear_nohup.sh
- *:表示分钟(0-59)
- *:表示小时(0-23)
- *:表示日期(1-31)
- *:表示月份(1-12)
- *:表示星期几(0-6,0代表星期天)
常用的表达式
表达式 | 作用 |
---|---|
每分钟执行一次 | * * * * * |
每小时执行一次 | 0 * * * * |
每天执行一次 | 0 0 * * * |
每周执行一次 | 0 0 * * 0 |
每月执行一次 | 0 0 1 * * |
每月最后一天执行一次 | 0 0 L * * |
每年定时执行一次 | 0 0 1 1 * |