Linux定时任务设置,如何每小时执行一次脚本或命令

admin
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的语法格式,其基本结构为:

Linux定时任务设置,如何每小时执行一次脚本或命令

分钟 小时 日期 月份 星期 命令或脚本路径

每个字段用空格分隔,具体含义如下(星号表示“任意”):

字段 取值范围 含义 示例
分钟 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命令编辑当前用户的定时任务列表(首次使用会提示选择文本编辑器,如nanovim):

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原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码