0%

Linux定时任务

一般来说,我更新一篇博客需要经过以下两步:

  1. Typora在windows上写好markdown文章,生成html并push到github的仓库里
  2. ssh登录我的服务器,执行git pull更新。(因为服务器被墙了,所以我还得借助舍友的梯子才能ssh TAT

可以写一个脚本,在对应目录下执行git pull,并使其周期性执行,让繁琐工作自动化。

脚本

pull.sh:

1
2
3
4
5
#!/usr/bin/env bash

# cd 到博客目录下
cd carpediemtal.github.io || exit
git pull

Crontab

cron是一款类Unix的操作系统下的基于时间的任务管理系统。用户们可以通过cron在固定时间、日期、间隔下,运行定期任务(可以是命令和脚本)。cron常用于运维和管理,但也可用于其他地方,如:定期下载文件和邮件。

通常,任务时间表(crontab)文件储存的指令被crond守护进程激活,守护进程在后台运行,并每一分钟检查是否有定期的作业需要执行。这类作业一般称为cron jobs

命令参数:

1
2
3
4
5
6
7
8
9
10
Options:
-u <user> define user
-e edit user's crontab
-l list user's crontab
-r delete user's crontab
-i prompt before deleting
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-x <mask> enable debugging

时间格式可以参考这个网站:Crontab.guru - The cron schedule expression editor

执行下面的命令建立定时执行的任务

1
2
3
4
5
6
7
8
# 编辑定时任务
crontab -e

# 每隔一小时执行一次
* */1 * * * /home/ming/pull.sh

# 查看用户的定时任务
crontab -l