跳到主要内容

Cron 速查表:80+ 语法、表达式、特殊字符串与 Crontab 技巧

Cron 速查表,80+ 条目,覆盖语法、时间表达式、特殊字符串、环境变量、crontab 管理与常见坑。

  • 本地处理
  • 分类 开发运维
  • 适合 格式化、校验、压缩或检查和代码相关的文本。
分类:
80
语法与运算符 (13)
* * * * * command

五字段 cron 格式:分钟 小时 月中的天 月份 星期中的天 命令。每个星号表示该字段"所有可能的值"。

示例
# ┌─── minute (0-59)
# │ ┌─── hour (0-23)
# │ │ ┌─── day of month (1-31)
# │ │ │ ┌─── month (1-12)
# │ │ │ │ ┌─── day of week (0-7, 0 and 7 = Sunday)
# │ │ │ │ │
# * * * * *  /path/to/command
minute (0–59)

分钟字段接受 0–59 的整数。`0` 表示"整点",`30` 表示"半点"。

示例
0 * * * *  /run/hourly.sh   # at :00 every hour
30 * * * * /run/half.sh     # at :30 every hour
hour (0–23)

小时字段用 24 小时制:0 = 午夜,12 = 正午,17 = 下午 5 点,23 = 晚上 11 点。没有 AM/PM。

示例
0 0  * * * cmd   # midnight
0 12 * * * cmd   # noon
0 17 * * * cmd   # 5 pm
day-of-month (1–31)

每月的天,1–31。并非所有月份都有 31 天;不存在的日期(如 2 月 30 日)不会触发。

示例
0 0 1  * * /monthly-start.sh   # first of month
0 0 15 * * /mid-month.sh       # 15th of month
month (1–12)

月份字段:1 = 一月,12 = 十二月。大多数 cron 实现也接受三字母缩写(Jan、Feb、Mar……)。

示例
0 0 1 1   * /new-year.sh   # January 1st
0 0 1 Jun * /mid-year.sh   # June 1st
day-of-week (0–7)

星期字段:0 和 7 都表示周日,1 = 周一,……,6 = 周六。大多数 cron 实现也接受缩写(Sun、Mon、Tue……)。

常见坑: 0 和 7 都是周日——从编程语言(weekday 通常 0–6)过来的人容易踩坑。建议统一用 0–6。

示例
0 0 * * 0 /sunday.sh   # Sunday
0 0 * * 1 /monday.sh   # Monday
0 0 * * 5 /friday.sh   # Friday
*

通配符:匹配该字段所有合法值。`* * * * *` 表示"每一分钟、每一小时、每一天"。

示例
* * * * * /every-minute.sh
* * * * 1-5 /weekday-minutes.sh
1,15,30

逗号分隔列表:在列表里的每个值处运行。分钟字段里的 `1,15,30` 表示每小时第 1、15、30 分钟运行。

示例
0 6,12,18 * * * /three-times.sh   # 6 am, noon, 6 pm
0,30 * * * *    /every-half.sh
1-5

连字符范围:匹配从 1 到 5(含)的所有整数。星期字段里的 `1-5` 表示周一到周五。

示例
0 9 * * 1-5 /weekday.sh   # Mon–Fri at 9 am
0 8-18 * * * /work-hrs.sh
*/5

步长:从最小值开始每 N 个单位运行一次。分钟字段里的 `*/5` 表示第 0、5、10、15……55 分。等价于 `0-59/5`。

示例
*/5  * * * * /every-5-min.sh
*/15 * * * * /every-quarter.sh
*/30 * * * * /every-half.sh
0-30/10

范围加步长组合:在范围内每隔 N 步取一个值。`0-30/10` 匹配 0、10、20、30——每小时前半段每 10 分钟一次。

示例
0-30/10 * * * * /cmd.sh   # at :00, :10, :20, :30 of every hour
# comment

以 `#` 开头的行是注释,cron 守护进程会忽略它们。用注释说明每条任务的作用。

示例
# Daily database backup
0 2 * * * /usr/local/bin/backup-db.sh
# Hourly cache purge
0 * * * * /usr/local/bin/clear-cache.sh
0 * * * *

字段位置提示:第一个 `0` 是分钟字段,后面孤立的 `*` 是小时字段。这表示"每小时第 0 分钟"——即每小时整点运行一次。

示例
0 * * * * /usr/local/bin/hourly-check.sh
时间表达式 (30)
* * * * *

每分钟、每小时、每天。这是最频繁的标准 cron 计划——每天触发 1440 次。

示例
* * * * * /health-check.sh
*/2 * * * *

每 2 分钟。

示例
*/2 * * * * /poll-queue.sh
*/5 * * * *

每 5 分钟。生产环境里最常见的轮询任务频率之一。

示例
*/5 * * * * /check-status.sh
*/10 * * * *

每 10 分钟。

示例
*/10 * * * * /sync-data.sh
*/15 * * * *

每 15 分钟(每刻钟)。

示例
*/15 * * * * /refresh-cache.sh
*/30 * * * *

每 30 分钟(每小时两次)。在每小时的 :00 和 :30 运行。

示例
*/30 * * * * /half-hourly.sh
0 * * * *

每小时整点运行一次。

示例
0 * * * * /hourly-report.sh
30 * * * *

每小时第 30 分钟运行一次。

示例
30 * * * * /half-past.sh
0 */2 * * *

每 2 小时整点运行一次。在 00:00、02:00、04:00……22:00 运行。

示例
0 */2 * * * /every-2-hours.sh
0 */4 * * *

每 4 小时运行一次。在 00:00、04:00、08:00、12:00、16:00、20:00 运行。

示例
0 */4 * * * /every-4-hours.sh
0 */6 * * *

每 6 小时运行一次。在午夜、早 6 点、正午、晚 6 点运行。

示例
0 */6 * * * /6-hourly.sh
0 0,12 * * *

每天两次:午夜和正午。

示例
0 0,12 * * * /twice-daily.sh
0 8,12,17 * * *

每天三次:早 8 点、正午和下午 5 点。

示例
0 8,12,17 * * * /three-times-daily.sh
0 0 * * *

每天午夜(00:00)运行一次。最常见的每日任务写法。

示例
0 0 * * * /daily-cleanup.sh
0 2 * * *

每天凌晨 2 点运行一次。备份任务的热门时段——够晚,流量峰值已过;够早,天亮前能跑完。

示例
0 2 * * * /backup-db.sh
0 9 * * *

每天早上 9 点运行一次。

示例
0 9 * * * /morning-report.sh
0 12 * * *

每天正午(12:00)运行一次。

示例
0 12 * * * /noon-digest.sh
0 9 * * 1-5

每个工作日(周一到周五)早上 9 点运行。跳过周末。

示例
0 9 * * 1-5 /standup-reminder.sh
0 9-17 * * 1-5

工作日每个上班小时整点运行。仅周一到周五的 9:00、10:00……17:00 运行。

示例
0 9-17 * * 1-5 /business-hours-check.sh
0 22 * * 1-5

工作日晚上 10 点——下班后但还没到午夜;夜间构建的常用时间。

示例
0 22 * * 1-5 /nightly-build.sh
0 0 * * 0

每周日午夜运行。经典的每周维护窗口。

示例
0 0 * * 0 /weekly-report.sh
0 0 * * 1

每周一午夜运行——周开始重置任务。

示例
0 0 * * 1 /weekly-reset.sh
0 0 * * 5

每周五午夜运行——周末报告任务。

示例
0 0 * * 5 /weekly-digest.sh
0 0 * * 6,0

每个周末(周六和周日)午夜运行。

示例
0 0 * * 6,0 /weekend-task.sh
5 4 * * 0

每周日凌晨 4:05 运行。许多 Linux 发行版的"周 cron"标准示例——错开 5 分钟是为了避免整点大量任务同时启动。

示例
5 4 * * 0 /weekly-maintenance.sh
0 0 1 * *

每月第一天午夜运行。

示例
0 0 1 * * /monthly-invoice.sh
0 0 1,15 * *

每月 1 号和 15 号午夜运行——常见账单周期。

示例
0 0 1,15 * * /bimonthly-report.sh
0 0 1 */3 *

每季度一次:1 月、4 月、7 月、10 月的第一天午夜运行。

示例
0 0 1 */3 * /quarterly-audit.sh
0 0 1 1 *

每年 1 月 1 日午夜运行一次。用 @yearly 更易读。

示例
0 0 1 1 * /annual-report.sh
0 0 28-31 * *

每月的 28 到 31 号。这不是可靠的"每月最后一天"——2 月只有 28 天时只跑一次,31 天的月份会跑四次。

常见坑: 标准 cron 没有可移植的"每月最后一天"语法。用包装脚本:`[[ $(date -d tomorrow +%d) == 01 ]] && /path/cmd`。

示例
0 0 28-31 * * /maybe-end-of-month.sh
特殊字符串 (6)
@reboot command

在 cron 守护进程启动后(通常是系统启动时)立刻运行一次。用于在重启后恢复用户级服务。

常见坑: @reboot 在 crond 启动时运行,不是在特定启动阶段。依赖网络或挂载点的服务可能失败,加 `sleep 10` 或改用 systemd。

示例
@reboot /home/user/start-app.sh
@reboot sleep 10 && /usr/local/bin/myservice
@hourly command

每小时开始时运行一次。等价于 `0 * * * * command`。

示例
@hourly /usr/local/bin/clear-tmp.sh
@daily / @midnight

每天午夜(00:00)运行一次。`@midnight` 是 `@daily` 的别名。等价于 `0 0 * * * command`。

示例
@daily    /usr/local/bin/rotate-logs.sh
@midnight /usr/local/bin/daily-backup.sh
@weekly command

每周日午夜运行一次。等价于 `0 0 * * 0 command`。

示例
@weekly /usr/local/bin/weekly-report.sh
@monthly command

每月第一天午夜运行一次。等价于 `0 0 1 * * command`。

示例
@monthly /usr/local/bin/monthly-invoice.sh
@yearly / @annually

每年 1 月 1 日午夜运行一次。两个字符串都等价于 `0 0 1 1 * command`。

示例
@yearly   /usr/local/bin/archive-data.sh
@annually /usr/local/bin/annual-cleanup.sh
环境变量 (8)
SHELL=/bin/bash

设置 cron 运行命令时用的 Shell。默认通常是 `/bin/sh`。如果命令里用了 bash 特有语法,改成 `/bin/bash`。

示例
SHELL=/bin/bash
0 * * * * [[ -f /tmp/flag ]] && echo "found"
MAILTO=user@example.com

把 cron 作业的输出(stdout + stderr)发送到这个邮件地址。需要系统上配置了本地邮件代理(sendmail、postfix、ssmtp)。

示例
MAILTO=admin@example.com
0 2 * * * /backup.sh
MAILTO=""

完全禁用邮件输出。任务的所有输出都被静默丢弃。当你已把输出重定向到日志文件时用这个,避免 cron 刷爆收件箱。

示例
MAILTO=""
0 * * * * /hourly.sh >> /var/log/hourly.log 2>&1
HOME=/home/username

覆盖 cron 作业的家目录。影响 `~` 展开和依赖 $HOME 的程序的默认行为。

示例
HOME=/home/deploy
0 0 * * * ~/.local/bin/cleanup.sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

为 crontab 里所有作业设置完整的 PATH。cron 默认的 PATH 极其有限——通常只有 `/usr/bin:/bin`。在文件顶部加这一行,让所有系统命令都能用。

常见坑: 在 crontab 里设置 PATH 不会载入 NVM、pyenv 或其他版本管理器的 shim。需要在命令或包装脚本里显式 source 它们。

示例
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
0 * * * * node /app/cron.js
CRON_TZ=America/New_York

为该 crontab 文件里的所有作业设置时区。作业按指定时区执行,与系统时区无关。

常见坑: `CRON_TZ` 由 Vixie cron 及其衍生版本支持。某些系统用 `TZ` 代替。查阅你的 cron 守护进程文档确认。

示例
CRON_TZ=America/New_York
0 9 * * * /send-nyc-report.sh
TZ=UTC

另一个时区变量,大多数 cron 实现都支持。用 `TZ=UTC` 确保作业始终以 UTC 运行,与系统本地时区无关。

示例
TZ=UTC
0 0 * * * /midnight-utc.sh
. /etc/profile; . ~/.bashrc

在 cron 命令开头手动载入 login 文件。cron 环境极其精简,不会自动载入 .bashrc、.profile 或 .bash_profile。

常见坑: 在 cron 任务里载入 .bashrc 可能产生副作用(交互专属代码、别名、提示符)。更好的做法:直接在 crontab 头部设置需要的环境变量。

示例
0 * * * * . /etc/profile; /path/to/script.sh
Crontab 与工具 (13)
crontab -e

用 $EDITOR 打开当前用户的 crontab 进行编辑。保存退出时,新版本原子性地替换旧版本。

示例
crontab -e
EDITOR=nano crontab -e   # use nano instead of vi
crontab -l

列出(打印到 stdout)当前用户的 crontab 内容,不打开编辑器。

示例
crontab -l
crontab -l 2>/dev/null || echo "no crontab for $USER"
crontab -r

删除当前用户的整个 crontab。没有确认提示,也没有撤销。极其谨慎地使用。

常见坑: `crontab -r` 会立刻彻底清空 crontab,零确认提示。运行前务必先备份:`crontab -l > backup.cron`。或改用 `crontab -e` 逐行删除。

示例
crontab -l > ~/crontab-backup-$(date +%Y%m%d).cron  # backup first!
crontab -r
sudo crontab -u username -e

编辑其他用户的 crontab(需要 root 或 sudo)。`-u` 指定要编辑哪个用户的 crontab。

示例
sudo crontab -u deploy -e
sudo crontab -u deploy -l   # list deploy user's crontab
crontab -l > backup.cron

把当前 crontab 备份到文件。之后用 `crontab backup.cron` 或 `cat backup.cron | crontab -` 恢复。

示例
crontab -l > ~/crontab-$(date +%Y%m%d).bak
cat ~/crontab-20240101.bak | crontab -   # restore
/etc/cron.d/

系统范围的 cron 任务目录。这里的文件必须包含用户名字段:`分钟 小时 月天 月份 星期 用户名 命令`。软件包用它来安装自己的 cron 任务。

示例
# /etc/cron.d/myapp
0 2 * * * root     /usr/local/bin/myapp-backup.sh
*/5 * * * * www-data /var/www/myapp/cron.php
/etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/

由 `run-parts` 管理的即插即用脚本目录。把可执行脚本(文件名不含点)放在这里,它们会按日、周或月自动运行。

常见坑: /etc/cron.daily/ 里的脚本必须有执行权限(`chmod +x`),且文件名不能带点(`backup.sh` 会被忽略,用 `backup` 或 `backup_sh`)。

示例
chmod +x /etc/cron.daily/backup
run-parts --test /etc/cron.daily/   # dry run
flock -n /tmp/job.lock command

只有锁文件未被其他实例持有时才运行 `command`。如果上一个实例还在运行,本次调用立即退出——防止 cron 任务堆积。

示例
*/5 * * * * flock -n /tmp/sync.lock /usr/local/bin/sync.sh
*/5 * * * * flock -n /tmp/job.lock -c "/path/to/long.sh >> /var/log/job.log 2>&1"
command >> /var/log/job.log 2>&1

把 stdout 和 stderr 追加到日志文件。用这个来保留任务输出,而不是依赖 MAILTO。

示例
0 2 * * * /backup.sh >> /var/log/backup.log 2>&1
*/5 * * * * /poll.sh >> /var/log/poll.log 2>&1
command > /dev/null 2>&1

丢弃 cron 任务的所有输出——stdout 和 stderr 都丢掉。当你确信任务没问题且不需要日志时用。

示例
*/5 * * * * /health-check.sh > /dev/null 2>&1
0 * * * * /cache-clear.sh >/dev/null 2>&1
date >> /tmp/cron-test.log 2>&1

调试 cron 环境。再加 `env >> /tmp/cron-env.log` 可以转储完整环境——对比 PATH 和变量与终端的差异。

示例
* * * * * date >> /tmp/cron-test.log 2>&1
* * * * * env  >> /tmp/cron-env.log  2>&1
* * * * * which node >> /tmp/cron-path.log 2>&1
run-parts /path/to/scripts/

按字母顺序运行目录里的所有可执行脚本。cron 用这个机制实现 /etc/cron.daily/、/etc/cron.weekly/ 等目录。

示例
0 2 * * *   run-parts /etc/cron.daily/
0 2 * * 0   run-parts --report /etc/cron.weekly/
systemctl status cron / systemctl status crond

检查 cron 守护进程是否在运行。Debian/Ubuntu 上名为 `cron`,RHEL/CentOS/Fedora 上名为 `crond`。用 `journalctl -u cron` 查看近期日志。

示例
systemctl status cron        # Debian/Ubuntu
systemctl status crond       # RHEL/CentOS
journalctl -u cron -n 50     # recent cron logs
常见坑 (10)
Minimal PATH (command not found)

cron 守护进程使用极简 PATH(通常只有 `/usr/bin:/bin`)。`node`、`python`、`docker` 或不在这些目录里的脚本都找不到。修复:用绝对路径,或在 crontab 顶部设置 PATH。

示例
# BAD: node is not in /usr/bin:/bin
0 * * * * node /app/cron.js
# GOOD: absolute path
0 * * * * /usr/local/bin/node /app/cron.js
# GOOD: set PATH at top of crontab
PATH=/usr/local/bin:/usr/bin:/bin
0 * * * * node /app/cron.js
% in commands (treated as newline)

cron 命令里未转义的 `%` 被当作换行符处理,第一个 `%` 后的内容作为 stdin 传给命令。字面的百分号要写成 `\%`。

示例
# BAD: % in date format treated as newline
0 0 * * * echo $(date +%Y-%m-%d) >> /tmp/log
# GOOD: escape % signs
0 0 * * * echo $(date +\%Y-\%m-\%d) >> /tmp/log
# BETTER: wrap in a script that handles the format
DOM + DOW = OR, not AND

月天和星期都设成非 `*` 时,cron 在任意一个条件为真(OR)时运行,而不是同时为真(AND)。`0 0 1 * 5` 会在每月 1 号运行,也会在每个周五运行。

常见坑: 这是 POSIX 规定的行为。变通方法:在命令里加 shell 条件——`[ $(date +%u) -eq 5 ] && [ $(date +%d) -eq 01 ] && /cmd`。

示例
# Runs on the 1st of every month AND on every Friday:
0 0 1 * 5 /cmd.sh
# Only on Fridays that are also the 1st:
0 0 1 * 5 [ "$(date +%u)" = "5" ] && /cmd.sh
No .bashrc / .profile sourced

Cron 不会载入 `.bashrc`、`.bash_profile` 或 `.profile`。在这些文件里定义的环境变量、shell 函数和别名对 cron 作业完全不可见。需要的东西直接写在 crontab 头部。

示例
# In .bashrc (NOT visible to cron):
export NVM_DIR="$HOME/.nvm"
# In crontab (visible to cron):
NVM_DIR=/home/user/.nvm
0 * * * * /path/to/node-app.sh
crontab -r removes ALL jobs

`crontab -r` 没有任何确认提示就删除整个 crontab。许多用户误以为它只删一条任务。始终用 `crontab -e` 逐行删除。

示例
# Always back up first:
crontab -l > ~/crontab-backup.txt
# Use crontab -e to remove specific jobs, NOT crontab -r
* 0 * * * vs 0 * * * *

`* 0 * * *` 在凌晨 0 点的每分钟都运行(00:00、00:01……00:59)——共 60 次。`0 * * * *` 每小时第 0 分钟运行一次。这是想写"每天午夜"(`0 0 * * *`)时的常见笔误。

示例
* 0 * * * /cmd.sh   # runs 60 times between midnight and 1am!
0 0 * * * /cmd.sh   # once at midnight (correct)
0 * * * * /cmd.sh   # once an hour
Timezone surprises

Cron 默认使用系统时区。如果服务器在 UTC 而你期望本地时间,任务可能在意想不到的时间运行。在 crontab 里设置 `CRON_TZ=` 或 `TZ=`,或者明确记录时区假设。

示例
# System TZ: UTC. Want to run at 9 am Beijing time (UTC+8):
0 1 * * * /morning.sh   # 01:00 UTC = 09:00 CST
# Cleaner with explicit TZ:
CRON_TZ=Asia/Shanghai
0 9 * * * /morning.sh
Script not executable

如果脚本没有执行权限,cron 会悄悄失败(或发邮件报"Permission denied")。务必给 cron 脚本加上执行权限,用 `ls -l` 确认。

示例
chmod +x /usr/local/bin/my-cron-script.sh
ls -l /usr/local/bin/my-cron-script.sh   # verify -rwxr-xr-x
Relative paths fail in cron

相对路径(如 `./script.sh` 或 `../data`)会相对于工作目录解析,cron 里工作目录通常是 $HOME,而不是脚本所在目录。全部改用绝对路径。

示例
# BAD: relative path may not resolve correctly
0 * * * * ./scripts/cleanup.sh
# GOOD: absolute path
0 * * * * /home/user/scripts/cleanup.sh
Month is 1–12, not 0–11

在 cron 里,月份从 1 开始(一月 = 1,十二月 = 12),不像 JavaScript 的 `Date.getMonth()` 从 0 开始。在 cron 里把月份设为 `0` 在大多数实现中是无效的。

示例
# January 1st:
0 0 1 1 * /new-year.sh    # CORRECT (month 1)
0 0 1 0 * /new-year.sh    # WRONG  (month 0 is invalid)

这个工具能做什么

可搜索的 Cron 速查表,80+ 条目按六个分类整理。 语法:五字段格式、分钟/小时/天/月/星期范围、通配 `*`、 逗号列表、连字符范围以及 `/` 步长写法。 时间表达式:每分钟、每 5 分钟、每小时、每天、每周、每月、 仅工作日、工作时间等常用模式,可直接复制。 特殊字符串:`@reboot`、`@hourly`、`@daily`、`@midnight`、`@weekly`、 `@monthly`、`@yearly`,Vixie cron 支持的易读别名。 环境变量:`SHELL`、`MAILTO`、`HOME`、`PATH`、`CRON_TZ`/`TZ` 以及 cron 环境为何刻意精简的原因。 Crontab 管理:`crontab -e`、`-l`、`-r`、系统 cron 目录 (`/etc/cron.d/`、`/etc/cron.daily/`)、`run-parts`、多用户 crontab。 进阶模式:用 `flock` 防止作业重叠、输出重定向到日志、 抑制邮件噪声、调试 cron 环境、发送失败告警。 常见坑:PATH 几乎为空、命令里的 `%` 是换行符、DOM 和 DOW 是 OR 不是 AND、 不载入 `.bashrc`、时区陷阱等。全在浏览器里跑。

工具细节

输入
文本 + 结构化内容
页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
输出
即时结果 + 复制
结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
隐私
浏览器本地处理
主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
保存 / 分享
可分享链接状态
关键设置会进入 URL,复制链接后别人能复现同一组参数。
性能预算
首屏 JS ≤ 50 KB
没有声明 WASM 依赖,适合快速打开和移动端使用。
适用场景
开发运维 · 程序员
分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。

怎么用

  1. 1. 输入

    把内容粘贴或拖入工具面板。

  2. 2. 处理

    点击按钮,在浏览器内本地处理,文件不上传。

  3. 3. 复制 / 下载

    一键复制结果或下载到本地。

Cron 速查表 适合怎么用

适合穿插在写代码、查问题、做 Review、上线前的小任务里。

适合开发场景

  • 格式化、校验、压缩或检查和代码相关的文本。
  • 把片段整理好再放进文档、工单、提交或交接材料。
  • 不切换工具,快速检查一个小 payload。

开发检查项

  • 压缩、混淆这类不可逆处理,先对副本操作。
  • 除非确认工具本地处理,不要粘贴密钥和敏感片段。
  • 转换后的代码上线前,仍要跑自己的测试或 lint。

下一步可以接着做

这些入口会把当前任务接到更完整的工具链里。

  1. 1 Bash 速查表 Bash 速查表,100+ 命令和习语,涵盖变量、条件、循环、函数、管道、信号陷阱,真实一行命令。 打开
  2. 2 Loki 速查表 Grafana Loki 速查表,80+ 条目,覆盖 LogQL 流选择器、行过滤、解析器、指标查询、聚合、Promtail 管道、Loki 配置与 HTTP API。 打开
  3. 3 GitLab CI 速查表 GitLab CI/CD 速查表,80+ 条目,覆盖流水线结构、作业配置、rules、变量、制品、Runner、模板、安全与 API。 打开

真实使用场景

  • 找"每个工作日早上 9 点"的正确写法

    你需要一个每天早上 9 点发送站会提醒的 cron 任务。打开速查表, 搜索"weekday"或"工作日",直接拿 `0 9 * * 1-5` 粘贴即可。 描述里确认了这是周一到周五,不含周末。

  • 防止 cron 作业重叠执行

    你有一个 5 分钟跑一次的数据同步任务,但有时它会运行超过 5 分钟。 打开速查表,找到 `flock` 条目,复制 `flock -n /tmp/sync.lock /path/to/sync.sh`, 这样第二个实例启动时会直接跳过,而不是和第一个同时运行。

  • 调试为什么 cron 作业悄悄失败

    你的 cron 任务好像什么也没做。打开速查表,找到"调试 cron 环境"条目, 加一行 `date >> /tmp/cron_test.log 2>&1` 作为测试任务, 然后对比日志里的 PATH 和终端里的 PATH。九成情况下是缺了某个 PATH 路径。

常见踩坑

  • 在命令里直接写 `node` 或 `python` 而不用绝对路径,cron 的 PATH 极其精简,这些命令找不到。

  • 在 cron 命令里写了字面的 `%` 而没有转义成 `\\%`,未转义的 `%` 被当作换行符,会把命令拆成多行。

  • 同时把月天和星期都设成非 `*` 的值,cron 把它们按 OR 处理(任意一个匹配就运行),很多人以为是 AND。

  • 在 `.bashrc` 或 `.profile` 里设了环境变量就以为 cron 能用,cron 不载入 login 文件,必须在 crontab 头部显式设置。

  • 以为 `crontab -r` 只删一条任务,它会直接清空整个 crontab,没有确认提示也不能撤销。

隐私说明

全在浏览器里跑。速查表是内存里的静态数组,你输入的任何内容都不会发出去。 离网或无互联网服务器上同样可用。

常见问题

类似工具组合

做你这行的人, 还会一起用这些。

Made by Toolora · 100% client-side · Updated 2026-07-01