Linux定时任务通过crontab实现,每小时执行一次脚本需编辑crontab配置,执行crontab -e进入编辑模式,添加格式为0 * * * * /path/to/script.sh(0表示每小时的0分钟执行,*代表任意小时/日/月/周),脚本路径需用绝对路径,若脚本依赖特定环境变量,需在命令前定义(如PATH=/usr/bin:/bin),保存后系统自动加载,可通过crontab -l查看任务,注意确保脚本有执行权限(chmod +x script.sh),且crond服务运行(systemctl status crond)。
在Linux运维或自动化场景中,定时任务是不可或缺的工具——无论是每小时备份数据、同步文件,还是生成统计报表,定时任务都能替代人工重复操作,提升效率,本文将详细介绍如何通过Linux内置的cron工具,设置一个每小时执行一次的定时任务,涵盖语法规则、配置步骤、注意事项及常见问题解决方法。
Linux定时任务工具:cron简介
Linux中最常用的定时任务工具是cron,它通过一个名为crond的后台守护进程(daemon)来管理。crond会按照预设的时间规则(称为“cron表达式”),自动执行用户定义的命令或脚本,每个用户都可以拥有独立的定时任务列表,通过crontab命令进行管理。
crontab语法规则:核心是“时间+命令”
要设置定时任务,首先需要理解crontab的语法格式,其基本结构为:

分钟 小时 日期 月份 星期 命令或脚本路径
每个字段用空格分隔,具体含义如下(星号表示“任意”):
| 字段 | 取值范围 | 含义 | 示例 |
|---|---|---|---|
| 分钟 | 0-59 | 每小时内的分钟 | 0(表示整点) |
| 小时 | 0-23 | 每天中的小时(24小时制) | *(每小时)、2(凌晨2点) |
| 日期 | 1-31 | 每月中的日期 | *(每天)、15(每月15号) |
| 月份 | 1-12 | 一年中的月份 | *(每月)、6(6月) |
| 星期 | 0-7(0和7均表示周日) | 每周中的星期 | *(每天)、1(周一) |
| 命令 | 要执行的命令或脚本路径 | /usr/local/bin/backup.sh |
关键:每小时执行的cron表达式
要实现“每小时执行一次”,核心是设置*小时字段为`(任意小时),分钟字段为固定值**(通常为0`,表示整点执行)。
0 * * * *:每小时的0分钟(即整点)执行一次,如8:00、9:00、10:00……30 * * * *:每小时的30分钟执行一次,如8:30、9:30、10:30……
根据需求选择分钟值即可,整点执行(0 * * * *)是最常见的场景。
配置每小时执行任务的详细步骤
准备要执行的脚本/命令
假设我们需要每小时执行一个备份脚本/usr/local/bin/hourly_backup.sh如下(示例:将当前时间写入日志文件):
#!/bin/bash # 每小时备份脚本:记录当前时间到日志 echo "Backup executed at: $(date '+%Y-%m-%d %H:%M:%S')" >> /var/log/hourly_backup.log
注意:
- 脚本需要有执行权限:
chmod +x /usr/local/bin/hourly_backup.sh; - 建议使用绝对路径(如
/var/log/hourly_backup.log),避免因路径问题导致任务失败。
编辑当前用户的crontab任务
使用crontab -e命令编辑当前用户的定时任务列表(首次使用会提示选择文本编辑器,如nano或vim):
crontab -e
在打开的文件中,添加以下内容(以每小时整点执行备份脚本为例):
0 * * * * /usr/local/bin/hourly_backup.sh
说明:
0 * * * *:时间字段,每小时0分钟执行;/usr/local/bin/hourly_backup.sh:要执行的脚本路径(绝对路径)。
保存并退出
- 如果使用
nano:按Ctrl+X,然后按Y保存,按Enter确认; - 如果使用
vim:按Esc,输入wq保存退出。
验证任务是否添加成功
使用crontab -l查看当前用户的定时任务列表:
crontab -l
输出应包含刚添加的任务:
0 * * * * /usr/local/bin/hourly_backup.sh
检查cron服务状态
crond守护进程需处于运行状态才能执行定时任务,通过以下命令
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

