由于某些需求(例如定时重启某个任务,定时推送更新博客,定时备份文件等),需要定时执行某些任务。

cron

cron 是 Linux 系统中用于管理和执行周期性任务的工具。

任务编辑规则

(1)打开 cron 任务编辑器

1
crontab -e

如果是第一次使用 crontab,系统可能会让你选择一个文本编辑器,通常可以选择 nano 简单一些。

(2)配置 cron 服务

表达式如下:

1
2
*  *  * *  *   command
分 时 天 月 周 命令
  • 分:0-59
  • 时:0-23
  • 天:1-31
  • 月:1-12
  • 周:1-6 周一至周六,0 周日

此外:

  • *:表示任意值,比如在小时部分填写 * 代表任意小时(每小时)
  • ,:允许在一个部分中填写多个值,比如在分钟部分填写 1,3 表示一分钟或三分钟
  • \:一般配合 * 使用,代表每隔多长时间,比如在小时部分填写 */2 代表每隔两分钟。所以 */1* 没有区别

例如:

1
2
3
4
1. \* * * * *      # 每隔一分钟执行一次任务
2. 0 * * * * # 每小时的0点执行一次任务,比如6:00,10:00
3. 6,10 * 2 * * # 每个月2号,每小时的6分和10分执行一次任务
4. \*/3,\*/5 * * * * # 每隔3分钟或5分钟执行一次任务,比如10:03,10:05,10:06

配置一个定时任务

(1)创建脚本

例如我们需要每天在命令行执行 hexo g, hexo d 的命令。

首先创建脚本:gedit hexo.sh,写入如下内容:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

HEXO_DIR="/path/hexo_blog_dir"

if [ -d "$HEXO_DIR" ]; then
cd "$HEXO_DIR" || exit
hexo g && hexo d
echo "已在 $HEXO_DIR 执行 hexo g 和 hexo d"
else
echo "未找到 $HEXO_DIR 目录"
fi

(2)赋予权限

1
sudo chmod +x hexo.sh

可以验证一下 hexo.sh 是否能够成功执行。

(3)添加定时任务

打开 crontab -e,添加一行内 W容:

1
* 0 * * * /home/mahaofei/Software/everyweek.sh

(4)重启 cron 服务

1
sudo service cron restart

这样就会每天 0 点定时执行 hexo.sh