Ubuntu 22.04 Cron使用

需要定时处理的场景还是比较多的,比如信息推送、日志清理等。

这篇文章我们来说说如何使用cron来实现定时处理,以及监控任务的执行

使用

Ubuntu中使用cron,要用到的命令是crontab。不加sudo时,处理的是个人的定时任务。当加上sudo时,处理的则是系统级别的定时任务。下面介绍一些常用的参数。

查看cron作业,

crontab -l

编辑crontab文件,

crontab -e

当执行这个命令时,会看到建议使用的的编辑器列表

Ubuntu 22.04 Cron使用_第1张图片

对于我来说使用vim够用了。

然后是编辑cron作业,crontab文件中一行代表一个作业,作业的格式如下

* * * * * command_to_be_executed

其中

  • 星号代表时间字段,从左至右分别是分钟、小时、日期、月份、星期几。
  • 星号也可以替换为数字、星号(表示任意值)、逗号(表示多个值)和连字符(表示范围)。 

监控

当我们设置了定时任务,肯定要监控任务的执行状态。这个时候有比较多的选择。

不依赖外部组件的话,我们可以将定时任务执行的日志保存到指定的日志文件中,即使用如下的方式定义定时任务

0 3 * * * /path/to/myscript.sh >> /path/to/mylog.log 2>&1

也可以直接使用系统日志,不进行配置,查看系统日志的命令如下

cat /var/log/syslog | grep CRON

如果想用外部组件,则可以考虑使用Prometheus、Grafana等监控工具。

实例

比如我们需要每周五下午五点拉取阮一峰大佬的周刊文件,可以首先编写一个脚本,假定叫pull_weekly.sh

sudo vi pull_weekly.sh

写入内容

#!/bin/bash

repo_dir="/usr/local/download/ruanyf"

if [ -d "$repo_dir/.git" ]; then
    # 如果目录存在且是一个Git仓库,则执行git pull
    cd "$repo_dir"
    git pull
else
    # 否则,执行git clone
    git clone https://github.com/ruanyf/weekly "$repo_dir"
fi

然后我们建立文件夹,并修改目录拥有者。注意我的当前目录是/usr/local/download

sudo mkdir ruanyf
sudo chown cy:cy /usr/local/download/ruanyf/

赋予脚本执行权限

sudo chmod +x pull_weekly.sh

注意先执行一下验证执行是否OK。

添加定时任务

crontab -e

添加一行内容

0 17 * * 5 /usr/local/download/pull_weekly.sh

然后定时任务将会按时执行

小结

在这篇内容中,我们学习了cron命令的使用。常用的定时任务都可以用它来实现。

你可能感兴趣的:(数据库,cron)