Ubuntu crontab 设置上午10点和下午5点执行脚本
一、编辑 crontabcrontab -e第一次会让你选编辑器选 nano简单即可。二、添加定时规则在文件末尾加入这一行0 10,17 * * * /path/to/test.sh保存退出nano 里按CtrlO回车保存CtrlX退出。三、语法解释crontab 每行 5 个时间字段 命令┌─── 分钟 (0-59) │ ┌─── 小时 (0-23) │ │ ┌─── 日 (1-31) │ │ │ ┌─── 月 (1-12) │ │ │ │ ┌─── 星期 (0-70和7都是周日) │ │ │ │ │ 0 10,17 * * * /path/to/test.sh0 第 0 分钟10,17 10点 和 17点下午5点17点逗号表示多个时间点* * * 每天、每月、每周都执行合起来 每天的 10:00 和 17:00 各执行一次四、关键注意事项 ⚠️1. 用绝对路径最容易出错的点cron 环境变量少必须用完整路径# ❌ 错误相对路径 cron 找不到 0 10,17 * * * test.sh # ✅ 正确脚本绝对路径 0 10,17 * * * /home/用户名/scripts/test.sh脚本里调用的其他命令/文件也尽量用绝对路径。2. 脚本要有执行权限chmod x /home/用户名/scripts/test.sh3. 脚本开头加 shebangtest.sh第一行应有#!/bin/bash4. 保险起见可显式用 bash 调用避免权限/解释器问题0 10,17 * * * /bin/bash /home/用户名/scripts/test.sh五、记录日志强烈推荐cron 是后台运行的看不到输出。建议把输出重定向到日志方便排查0 10,17 * * * /bin/bash /home/用户名/scripts/test.sh /home/用户名/test.log 21追加输出到日志21把错误信息也一起记录六、验证crontab -l # 查看已设置的任务确认 cron 服务在运行systemctl status cron # 若没启动 sudo systemctl enable --now cron七、如果需要指定环境变量跑复杂脚本时cron 的 PATH 很精简如果脚本依赖特定环境比如 EDA 工具、conda 等在脚本开头里 source 环境或在 crontab 顶部设置# 在 crontab -e 文件顶部加 PATH/usr/local/bin:/usr/bin:/bin:/home/用户名/tools/bin SHELL/bin/bash 0 10,17 * * * /bin/bash /home/用户名/scripts/test.sh /home/用户名/test.log 21完整示例# crontab -e 里写入 0 10,17 * * * /bin/bash /home/edy/scripts/test.sh /home/edy/test.log 21含义每天上午10:00和下午17:00用 bash 执行 test.sh输出和错误都记到 test.log。一句话总结核心就一行0 10,17 * * * /脚本绝对路径10,17用逗号列出两个小时点。务必用绝对路径、给脚本chmod x、脚本首行#!/bin/bash并重定向日志方便排查。