Crontab 定时任务更新 SOLO 以及备份数据库

本贴最后更新于 2133 天前,其中的信息可能已经时移俗易

Linux 定时执行任务 Crontab

1. 安装 Crontab

1.1 安装命令

# vixie-cron软件包是cron的主程序 yum install vixie-cron # crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序 yum install crontabs

1.2 启动命令

# 启动服务 /sbin/service crond start # 关闭服务 /sbin/service crond stop #重启服务 /sbin/service crond restart #重新载入配置 /sbin/service crond reload

1.3 查看相关状态

# 查看服务状态 service crond status # 手动启动服务 service crond start

1.4 开机自启

chkconfig --level 35 crond on

2. crontab 使用

2.1 定时器规则

以下是一条定时器的规则

# 每天0时0分执行`/usr/home/mysql.sh`的文件,并将日志写入`/usr/home/mysql.log` 0 0 * * * /usr/home/mysql.sh >> /usr/home/mysql.log

crontab 文件的格式:

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
  • minute:分钟,区间为 0-59
  • hour:小时,区间为 0-23
  • day-of-month:每月的日,区间为 0–31;
  • month:区间为 1–12;1 是 1 月,12 是 12 月;
  • day-of-week:区间为 0–6;周日是 0。

除了数字还有以下几个特殊的符号需要特殊说明:

  • *:代表所有的取值范围内的数字;
  • /:代表每的意思,”*/5″表示每 5 个单位;
  • -:代表从某个数字到某个数字;
  • ,:分开几个离散的数字

以下是部分定时器示例

# 每五分钟执行 */5 * * * * /usr/home/mysql.sh # 每小时执行 0 * * * * /usr/home/mysql.sh # 每天执行 0 0 * * * /usr/home/mysql.sh # 每周执行 0 0 * * 0 /usr/home/mysql.sh # 每月执行 0 0 1 * * /usr/home/mysql.sh # 每年执行 0 0 1 1 * /usr/home/mysql.sh # 每天早上6点 0 6 * * * /usr/home/mysql.sh # 每两个小时 0 */2 * * * /usr/home/mysql.sh # 晚上11点到早上8点之间每两个小时 0 23-7/2 * * * /usr/home/mysql.sh # 1月1日早上4点 0 4 1 1 * /usr/home/mysql.sh

3. 定时更新博客

3.1 编写更新博客 shell

#!/bin/bash # # Solo docker 更新重启脚本 # # 1. 请注意修改参数 # 2. 可将该脚本加入 crontab,每日凌晨运行来实现自动更新 # docker pull b3log/solo docker stop solo docker rm solo docker run --detach --name solo --restart=on-failure:10 --network=host \ --env RUNTIME_DB="MYSQL" \ --env JDBC_USERNAME="root" \ --env JDBC_PASSWORD="123456" \ --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \ --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/blog?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \ b3log/solo --listen_port=8081 --server_scheme=https --server_host=blog.booleandev.xyz --server_port=

在添加定时任务之前,可提前执行下该文件,看看是否能够更新成功

如果没有执行权限 则执行以下命令 chmod 777 文件名

3.2 将 shell 添加到 crontab 定时任务中

# 打开crontab定时器文件 crontab -e # 我的shell文件时放置于`/usr/local/soft/crontab/solo.sh` # 将日志文件写于/usr/local/soft/crontab/solo.log 0 0 * * 0 /usr/local/soft/crontab/solo.sh >> /usr/local/soft/crontab/solo.log # 等到时间,会自动执行,就可以看到solo.log文件内容

4. 定时备份 mysql 数据库

4.1 编写 shell 文件

#!/bin/bash #获取当前时间 date_now=$(date "+%Y%m%d-%H%M%S") # 备份文件夹目录 backUpFolder=/usr/local/soft/backup/mysql/blog username="root" password="123456" db_name="solo" #定义备份文件名 fileName="${db_name}_${date_now}.sql" #定义备份文件目录 backUpFileName="${backUpFolder}/${fileName}" echo "starting backup mysql ${db_name} at ${date_now}." /usr/bin/mysqldump -u${username} -p${password} --lock-all-tables --flush-logs ${db_name} > ${backUpFileName} #进入到备份文件目录 cd ${backUpFolder} #压缩备份文件 tar zcvf ${fileName}.tar.gz ${fileName}

4.2 将 shell 添加到 crontab 定时任务中

# 打开crontab定时器文件 crontab -e # 我的shell文件时放置于`/usr/local/soft/crontab/solo.sh` # 将日志文件写于/usr/local/soft/crontab/solo.log 0 0 * * * /usr/local/soft/crontab/mysql.sh >> /usr/local/soft/crontab/mysql.log # 等到时间,会自动执行,就可以看到mysql.log文件内容

5. 参考链接

果冻想Linux 定时执行任务 Crontab

Galaxy' HomeCentOS 安装 crontab 及使用方法

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    954 引用 • 944 回帖
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1443 引用 • 10083 回帖 • 499 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    693 引用 • 537 回帖
  • crontab

    crontab 命令常见于 类 Unix 的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。

    12 引用 • 25 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...