news 2026/1/10 14:10:49

定时任务入门:让脚本自动执行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
定时任务入门:让脚本自动执行

定时任务入门:让脚本自动执行

每天手动跑备份脚本?每小时检查一次服务状态?

太麻烦了,设置个定时任务让它自动跑。今天教你Linux下的定时任务crontab。

crontab基本用法

查看当前用户的定时任务:

crontab-l

编辑定时任务:

crontab-e

第一次会让你选编辑器,选nano比较简单。

时间格式

crontab的时间格式是5个字段:

分 时 日 月 周 命令

每个字段的范围:

  • 分:0-59
  • 时:0-23
  • 日:1-31
  • 月:1-12
  • 周:0-7(0和7都是周日)

举几个例子:

# 每天早上8点执行08* * * /root/scripts/backup.sh# 每小时的第30分钟执行30* * * * /root/scripts/check.sh# 每5分钟执行一次*/5 * * * * /root/scripts/monitor.sh# 每周一早上9点执行09* *1/root/scripts/weekly.sh# 每月1号凌晨2点执行021* * /root/scripts/monthly.sh# 每天凌晨2点和14点执行02,14* * * /root/scripts/twice.sh# 工作日(周一到周五)每天9点执行09* *1-5 /root/scripts/workday.sh

常用时间写法

需求写法
每分钟* * * * *
每5分钟*/5 * * * *
每小时0 * * * *
每天凌晨0点0 0 * * *
每天凌晨2点0 2 * * *
每周日凌晨0点0 0 * * 0
每月1号凌晨0点0 0 1 * *

完整例子

例子1:每天备份数据库

# 创建备份脚本cat>/root/scripts/backup_db.sh<<'EOF' #!/bin/bash DATE=$(date +%Y%m%d) mysqldump -u root -p123456 mydb > /backup/mydb_$DATE.sql find /backup -name "*.sql" -mtime +7 -delete EOFchmod+x /root/scripts/backup_db.sh# 添加定时任务crontab-e# 添加这行02* * * /root/scripts/backup_db.sh>>/var/log/backup.log2>&1

例子2:每5分钟检查服务

# 检查脚本cat>/root/scripts/check_service.sh<<'EOF' #!/bin/bash if ! systemctl is-active --quiet nginx; then systemctl start nginx echo "$(date) nginx重启了" >> /var/log/service_check.log fi EOFchmod+x /root/scripts/check_service.sh# 定时任务*/5 * * * * /root/scripts/check_service.sh

例子3:每天清理日志

# 定时任务03* * *find/var/log/app -name"*.log"-mtime +7 -delete

注意事项

1. 要写绝对路径

crontab执行时环境变量可能不全,用绝对路径最安全:

# 不推荐02* * * backup.sh# 推荐02* * * /root/scripts/backup.sh

2. 输出重定向

crontab默认会把输出发邮件,建议重定向到日志:

02* * * /root/scripts/backup.sh>>/var/log/backup.log2>&1

2>&1表示把错误输出也重定向到日志。

3. 不要忘记换行

crontab文件最后要有一个空行,不然最后一行可能不执行。

调试技巧

1. 先手动执行测试

/root/scripts/backup.sh

确保脚本能正常运行。

2. 看执行日志

# 查看cron日志tail-f /var/log/cron# CentOStail-f /var/log/syslog# Ubuntu

3. 检查邮件

如果没有重定向输出,cron会发邮件:

cat/var/spool/mail/root

系统级定时任务

除了crontab -e,还可以把脚本放到这些目录:

/etc/cron.hourly/# 每小时执行/etc/cron.daily/# 每天执行/etc/cron.weekly/# 每周执行/etc/cron.monthly/# 每月执行

直接把脚本放进去就行,不用写时间格式。

常见问题

Q:定时任务没执行?

  1. 检查cron服务:systemctl status crond
  2. 检查脚本权限:chmod +x script.sh
  3. 检查路径是否正确
  4. 看日志找原因

Q:脚本手动能跑,定时不行?

可能是环境变量问题,在脚本开头加:

#!/bin/bashsource/etc/profile

远程管理定时任务

管理多台服务器的定时任务比较麻烦,我用星空组网把服务器都连起来,可以批量操作:

# 批量查看定时任务foripin10.26.1.{10..15};doecho"===$ip==="sshroot@$ip"crontab -l"done

改完一台的定时任务,也能快速同步到其他机器。

小结

crontab格式:分 时 日 月 周 命令

常用写法:

  • 每天2点:0 2 * * *
  • 每5分钟:*/5 * * * *
  • 每周一9点:0 9 * * 1

注意事项:

  • 用绝对路径
  • 输出重定向到日志
  • 文件末尾留空行

有问题评论区交流~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/7 22:05:33

M1/M2 Mac终极解决方案:三步骤搭建Vivado开发环境

M1/M2 Mac终极解决方案&#xff1a;三步骤搭建Vivado开发环境 【免费下载链接】vivado-on-silicon-mac Installs Vivado on M1/M2 macs 项目地址: https://gitcode.com/gh_mirrors/vi/vivado-on-silicon-mac 还在为Apple Silicon芯片Mac无法运行Vivado而烦恼吗&#xff…

作者头像 李华
网站建设 2026/1/5 0:22:38

钉钉防撤回终极指南:让重要消息永久保存的完整解决方案

钉钉防撤回终极指南&#xff1a;让重要消息永久保存的完整解决方案 【免费下载链接】DingTalkRevokeMsgPatcher 钉钉消息防撤回补丁PC版&#xff08;原名&#xff1a;钉钉电脑版防撤回插件&#xff0c;也叫&#xff1a;钉钉防撤回补丁、钉钉消息防撤回补丁&#xff09;由“吾乐…

作者头像 李华
网站建设 2026/1/4 9:36:58

TOGAF® 如何优化资源并降低隐藏成本

在预算不断收紧、业务期望不断提升的时代&#xff0c;每一家企业都被要求“以更少做更多”。但在不削弱能力的前提下降本增效&#xff0c;需要的不只是 Excel 表格&#xff0c;而是一套体系化的方法。这正是由 The Open Group 制定的 TOGAF标准 所带来的战略价值。TOGAF 不仅是…

作者头像 李华
网站建设 2026/1/5 5:33:18

数组的学习

1. 数组的概念 数组是⼀组相同类型元素的集合注意&#xff1a;数组中存放的是1个或者多个数据&#xff0c;但是数组元素个数不能为0。 数组中存放的多个数据&#xff0c;类型是相同的。 数组分为⼀维数组和多维数组&#xff0c;多维数组⼀般⽐较多⻅的是⼆维数组。2. ⼀维数组的…

作者头像 李华
网站建设 2026/1/5 5:33:16

从零打造你的专属智能手表:ESP32开源DIY实战指南

从零打造你的专属智能手表&#xff1a;ESP32开源DIY实战指南 【免费下载链接】ESP32-Smart-Watch 项目地址: https://gitcode.com/gh_mirrors/es/ESP32-Smart-Watch 厌倦了市面上千篇一律的智能手表&#xff1f;想要一块真正属于自己的、能随心所欲定制的智能穿戴设备&…

作者头像 李华
网站建设 2026/1/5 5:33:14

Biotin-PEG4-N3,1309649-57-7的反应机制:点击化学的精准连接

英文名称&#xff1a;Biotin-PEG4-azide&#xff0c;Biotin-PEG4-N3&#xff0c;azide-PEG4-Biotin 中文名称&#xff1a;生物素-四聚乙二醇-叠氮 CAS&#xff1a;1309649-57-7 在分子修饰与功能化领域&#xff0c;Biotin-PEG4-N3&#xff08;生物素-四聚乙二醇-叠氮&#xff0…

作者头像 李华