Linux 定时任务 (Crontab)

原文链接

优快云 的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话,关注一下吧 

缘起

最近一个任务是,设备上会记录日志到 server.log,日积月累这文件大的一,现在给他每晚 0 点,重命名为一个新的文件,也就是把每天的日志放到一个单独的文件里

Crontab

Crontab 是一个定时任务工具,用于在指定的时间执行指定的命令或脚本。Crontab 文件中包含了一系列的定时任务,每个任务由时间、命令或脚本的路径组成。

Crontab 命令

  • crontab -e 命令可以编辑当前用户的 Crontab 文件
  • crontab -l 命令可以查看当前用户的 Crontab 文件
  • crontab -r 命令可以删除当前用户的 Crontab 文件

Crontab 语法

* * * * * command
- - - - -
| | | | |
| | | | +----- 星期 (0 - 7) (Sunday=0 or 7)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小时 (0 - 23)
+------------- 分钟 (0 - 59)

command 前的五个值,每个都可以是以下的一种

  • 一个具体的值,例如 012 等
  • 一个 * 号,表示任意值
  • 一个逗号分隔的多个值,例如 1,2,3
  • 一个连字符分隔的值范围,例如 1-5
  • 一个斜杠分隔的值和步长,例如 */2

Crontab Macro

Crontab 提供了一些预定义的时间表达式,可以简化定时任务的编写

@yearly: 0 0 1 1 *

@monthly: 0 0 1 * *

@weekly: 0 0 * * 0

@daily: 0 0 * * *

@hourly: 0 * * * *

@reboot: 重启时

Crontab 示例

# 每天凌晨 1 点执行 /home/user/script.sh 脚本
0 1 * * * /home/user/script.sh

# 每小时执行一次 /home/user/backup.sh 脚本
0 * * * * /home/user/backup.sh

# 每五分钟执行一次 /home/user/check.sh 脚本
*/5 * * * * /home/user/check.sh

# 每天午夜执行脚本
@daily /path/to/script.sh

# 每周日执行备份脚本
@weekly /path/to/backup.sh

# 系统重启后执行初始化脚本
@reboot /path/to/init.sh

每天 0 点重命名日志

renamelog.sh

date | awk '{print "mv /var/log/server.log /var/log/server-"$6"-"$2"-"$3".log"}' | bash
date | awk '{print "mv /var/log/agent.log /var/log/agent-"$6"-"$2"-"$3".log"}' | bash
0 0 * * * ~/renamelog.s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值