我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > Java技术星空(中国) > 轻松管理Linux定时任务:Cron实用教程
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

轻松管理Linux定时任务:Cron实用教程

15浏览 / 0回复

学着螃蟹走路

学着螃蟹走路

0
精华
18
帖子

等  级:Lv.3
经  验:1009
  • Z金豆: 57

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:重庆
  • 注  册:2025-05-31
  • 登  录:2025-06-14
  • 身份验证
发表于 2025-06-12 11:51:44
电梯直达 确定
楼主

在现代的IT运维工作中,自动化是提高效率的关键。而Cron,这个强大的定时任务调度工具,无疑是类Unix系统(如Linux和macOS)中不可或缺的工具。它能够帮助我们自动化各种任务,比如备份数据、发送报告、监控服务等,让繁琐的工作变得轻松又高效。今天,就让我们一起深入了解一下Cron的使用方法,以及如何通过它来实现任务的自动化。

在开始之前,请确保你已经准备好了一台Linux机器(可以是PC、虚拟机、VPS,甚至是Windows上的WSL)。当然,为了更好地操作,你需要拥有一个具有管理员权限的非root用户账户。为了方便演示,我们将以Ubuntu 22.04服务器为例,但这些步骤在主流Linux发行版中都是通用的哦!

第一步:开始使用Cron

Cron工具默认已预装在Ubuntu系统中,可通过以下命令检查其状态:

lua代码解读复制代码$ sudo systemctl status cron

如果输出显示Active: active (running),则说明Cron正在运行,可跳至下一节。若未安装,按以下步骤操作:

  1. 更新系统仓库:

ruby代码解读复制代码$ sudo apt update -y

  1. 安装Cron:

ruby代码解读复制代码$ sudo apt install cron -y

  1. 启用并启动Cron服务:

shell代码解读复制代码$ sudo systemctl enable cron $ sudo systemctl start cron

  1. 再次检查状态确认安装成功:

lua代码解读复制代码$ sudo systemctl status cron

第二步:编写第一个Cron任务

本节将通过Cron管理器crontab演示如何自动化简单任务。每个系统用户都有自己的crontab文件,位于/var/spool/cron/crontabs/目录下。

编辑crontab文件

运行以下命令打开当前用户的crontab文件:

ruby代码解读复制代码$ crontab -e

首次运行时会提示选择编辑器,输入1选择nano。文件顶部会显示Cron表达式的基本语法说明(以#开头的为注释):

shell代码解读复制代码# m h dom mon dow command # 例如,每周一早上5点备份用户账户: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/

Cron表达式语法

Cron表达式由五个时间字段和一个命令组成:

sql代码解读复制代码minute hour day_of_month month day_of_week command

各字段取值范围:

  • 分钟:0-59

  • 小时:0-23

  • :1-31

  • :1-12或JAN-DEC

  • 星期几:0-6(0=周日)或SUN-SAT

  • 命令:任何Linux命令。若需执行多条命令,可用&&连接。

示例

bash代码解读复制代码5 4 * * sun curl https://www.4922449.com && curl https://www.4922449.com

表示每周日早上4:05执行两个curl命令。*为通配符,表示匹配所有可能值。

高级语法

  • *:匹配所有值(如* * * * *每分钟执行)

  • ,:列出多个值(如0 0 * * mon,tue,sat每周一、二、六0点执行)

  • -:定义范围(如0-9 * * * *每小时前10分钟执行)

  • /:步长间隔(如*/5 * * * *每5分钟执行)

更多示例

  • 5 7 3 8 *:每年8月3日7:05执行

  • 23 0-20/2 * * *:每2小时的第23分钟(00:23、02:23等)

  • 0 0,12 1 */2 *:每两个月的第一天0点和12点执行

简化语法

Cron提供以下快捷方式:

  • @reboot:系统启动时执行一次

  • @yearly(或@annually):每年1月1日0:00

  • @monthly:每月1日0:00

  • @weekly:每周日0:00

  • @daily(或@midnight):每日0:00

  • @hourly:每小时0分(如14:00、15:00)

示例

less代码解读复制代码@yearly curl https://www.4922449.com

等同于:

arduino代码解读复制代码0 0 1 1 * curl https://www.4922449.com

第三步:管理crontab文件

常用命令

  • crontab -e:编辑当前用户的crontab

  • crontab -l:显示当前crontab内容

  • crontab -r:删除当前crontab(慎用,无确认提示)

  • crontab -r -i:带确认的删除操作

  • sudo crontab -u <用户名> -e:以管理员身份编辑其他用户crontab

权限控制

通过/etc/cron.deny/etc/cron.allow文件控制用户访问:

  • cron.deny:列出禁止使用crontab的用户

  • cron.allow:仅允许列出的用户使用

  • 若两者同时存在,以cron.allow为准

示例

ruby代码解读复制代码# 拒绝所有用户,仅允许用户jack $ sudo sh -c 'echo "ALL" >> /etc/cron.deny' $ sudo sh -c 'echo "jack" >> /etc/cron.allow'

第四步:通过脚本执行复杂任务

示例:系统监控脚本

  1. 创建脚本目录:

shell代码解读复制代码$ cd ~ && mkdir scripqs

  1. 编写脚本system-usage.sh

bash代码解读复制代码#!/bin/bash > ~/system-usage.txt  # 清空文件 echo "============================== CPU and Memory Usage==================" >> ~/system-usage.txt top -b -n 1 >> ~/system-usage.txt echo "================================== Disk Usage========================" >> ~/system-usage.txt df -h >> ~/system-usage.txt echo "============================= Internet Speed Test====================" >> ~/system-usage.txt speedtest >> ~/system-usage.txt

  1. 安装依赖并设置权限:

shell代码解读复制代码$ sudo apt install speedtest-cli $ chmod +x scripqs/system-usage.sh

  1. 测试脚本:

shell代码解读复制代码$ ./scripqs/system-usage.sh $ cat ~/system-usage.txt

添加Cron任务

在crontab末尾添加:

j代码解读复制代码*/5 * * * * bash ~/scripqs/system-usage.sh

此任务每5分钟执行一次,将系统信息保存到~/system-usage.txt

第五步:监控Cron任务

Cron默认会将任务输出发送邮件。需配置邮件服务器(如使用sSMTP和Gmail):

  1. 安装sSMTP:

ruby代码解读复制代码$ sudo apt install ssmtp

  1. 编辑配置文件/etc/ssmtp/ssmtp.conf

ini代码解读复制代码mailhub=smtp.gmail.:465 AuthUser=your_email@gmail. AuthPass=your_app_password UseTLS=YES FromLineOverride=YES

  1. 在crontab中设置MAILTO

bash代码解读复制代码MAILTO="your_email@gmail." */5 * * * * bash ~/scripqs/system-usage.sh && echo "$(cat ~/system-usage.txt)"

每5分钟会收到包含系统信息的邮件。

总结

本文介绍了如何使用Cron自动化任务,并通过邮件或云服务监控任务状态。掌握Cron语法后,你可以轻松管理定期执行的系统维护任务。如需深入学习,可查阅man cron或参考相关教程。


高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表