linux知识

linux知识

corntab

corntab表达式

crontab 表达式的基本格式如下:

minute hour day_of_month month day_of_week command

每个字段的含义和允许的值范围如下:

  1. minute (分钟): 0-59
  2. hour (小时): 0-23
  3. day_of_month (日): 1-31
  4. month (月): 1-12 或者可以使用月份的英文缩写(JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC),不区分大小写。
  5. day_of_week (星期): 0-7 或者可以使用星期几的英文缩写(SUN, MON, TUE, WED, THU, FRI, SAT),不区分大小写。其中 0 和 7 都代表星期日。
  6. command (要执行的命令): 这是实际要定期执行的命令或脚本的完整路径。

特殊字符

为了更灵活地定义执行时间,crontab 表达式还支持一些特殊的字符:

  • ******* (星号)**: 表示该字段的所有可能值。例如,在 “minute” 字段使用 * 表示每分钟。
  • ,** (逗号)**: 用于分隔一个字段中的多个值。例如,“1,15,30” 在 “minute” 字段表示在每小时的第 1、15 和 30 分钟执行。
  • -** (连字符)**: 用于指定一个值的范围。例如,“10-12” 在 “hour” 字段表示在每天的 10 点、11 点和 12 点执行。
  • /** (斜线)**: 用于指定步长或间隔。例如,在 “minute” 字段使用 */15 表示每 15 分钟执行一次(相当于 0,15,30,45)。又如,“0-23/2” 在 “hour” 字段表示每隔 2 小时执行一次(相当于 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22)。
  • ?** (问号)**: 在 day_of_monthday_of_week 字段中可以使用问号来表示“不确定”或“任意”。通常,如果你指定了 day_of_month,你就不需要再指定 day_of_week,反之亦然。使用 ? 可以避免两者都指定时可能产生的冲突。例如,如果你希望每个月的 15 号执行某个任务,你可以在 day_of_month 字段写 15,而在 day_of_week 字段使用 ?
  • L: 在 day_of_month 字段中,L 表示该月的最后一天。例如,“0 0 L * *” 会在每个月的最后一天午夜执行。在 day_of_week 字段中,L 可以和数字一起使用,表示该月的最后一个星期几。例如,“0 0 * * 5L” 表示在每个月的最后一个星期五午夜执行(5 代表星期五)。
  • W: 在 day_of_month 字段中,W 表示离指定日期最近的工作日(周一到周五)。例如,如果 “15W” 出现在 day_of_month 字段,并且 15 号是周六,那么任务会在 14 号(周五)执行;如果是周日,那么任务会在 16 号(周一)执行;如果是周一到周五,那么任务会在 15 号执行。如果 W 指定的日期是该月的第一个或最后一个非工作日,则 W 的行为可能不会跨越月份。
  • #: 在 day_of_week 字段中,# 用于指定该月的第几个星期几。格式是 n#w,其中 n 是该月的第几周(1-5),w 是星期几(0-7,0 或 7 是星期日,1 是星期一,以此类推)。例如,“0 0 * * 3#2” 表示在每个月的第二个星期二午夜执行(3 代表星期二,2 代表第二个)。

预定义的调度方案

为了方便使用,crontab 还支持一些预定义的调度方案,它们以 @ 符号开头:

  • @reboot: 在系统启动时执行一次。
  • @yearly@annually: 每年执行一次,相当于 “0 0 1 1 *”。
  • @monthly: 每月执行一次,相当于 “0 0 1 * *”。
  • @weekly: 每周执行一次,相当于 “0 0 * * 0”(或 “0 0 * * 7”)。
  • @daily@midnight: 每天执行一次,相当于 “0 0 * * *”。
  • @hourly: 每小时执行一次,相当于 “0 * * * *”。

tee

将前面管道的输出输入到tee指令后面的文件中,可以指定多个文件

例子

echo $PATH | tee -a fileA.txt fileB.txt

解释

输出当前的环境变量,然后以追加的方式输出到文件a和文件b

例子

echo $PATH 2>$1 | tee -a fileA.txt fileB.txt

解释

将错误管道输出的内容重定向到标准输出管道中,然后再由tee追加输出到文件a和文件b

更新: 2025-10-23 21:48:45
原文: https://www.yuque.com/duifangzhengzaishuru-rqbua/axyc58/gxrhp76pwsoufnw1