Crontab

安装

一般我们使用的Centos或者Debian都自带Crontab定时软件,如果没有,那我们就需要安装了。

Centos安装crontab

yum install crontabs   #安装Crontab
chkconfig crond on   #设置开机启动Crontab
service crond start   #启动Crontab

debian安装crontab

apt-get install cron   #安装Crontab
/etc/init.d/cron restart   #重启Crontab

使用

基本命令

crontab -e   #编辑定时任务
crontab -r   #移除定时任务
crontab -l   #查看定时任务

使用命令

添加的命令必须以如下格式:

* * * * * /root/rats.sh   #前5个*指时间,后面为命令
前5个*分别表示:

分钟:0-59
小时:1-23
日期:1-31
月份:1-12
星期:0-6(0表示周日)
还可以用一些特殊符号:

*: 表示任何时刻
,: 表示分割
-:表示一个段,如:1-5,就表示1到5点
/n : 表示每个n的单位执行一次,如:*/1, 就表示每隔1个小时执行一次命令。也可以写成1-23/1

定时任务设置举例

43 21 * * *   #21:43 执行
15 05 * * *   #05:15 执行
0 17 * * *    #17:00 执行
0 17 * * 1    #每周一的17:00 执行
0,10 17 * * 0,2,3    #每周日,周二,周三的17:00和17:10 执行
0-10 17 1 * *    #毎月1日从17:00到7:10毎隔1分钟 执行
0 0 1,15 * 1    #毎月1日和15日和一日的0:00 执行
42 4 1 * *   #毎月1日的4:42分 执行
0 21 * * 1-6   #周一到周六21:00 执行
0,10,20,30,40,50 * * * *   #每隔10分 执行
*/10 * * * *   #每隔10分 执行
* 1 * * *   #从1:0到1:59每隔1分钟 执行
0 1 * * *   #1:00 执行
0 */1 * * *   #毎时0分每隔1小时 执行
0 * * * *   #毎时0分 执行
2 8-20/3 * * *   #8:02,11:02,14:02,17:02,20:02 执行
30 5 1,15 * *   #1日和15日的5:30 执行

利用Github来备份博客

1、配置Git SSH密钥

由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的

所以必须要让github仓库认证你SSH key,在操作之前,需要先在服务器上生成SSH key

我们先去根目录下使用命令:

cd ~
ssh-keygen -t rsa

这里会要你命名密匙名称(这里建议使用默认名称),然后连续按几次Enter,这时候会在/root/.ssh文件夹生成2个ssh密钥

然后我们查看公钥id_rsa.pub

cat ~/.ssh/id_rsa.pub

查看后,再复制下公钥,然后打开Github官网

进入https://github.com/settings/ssh/new

Title随便填,然后Key填入刚刚复制的密匙,最后点击Add SSH Key添加即可

2、建立私人仓库

访问https://github.com/new

新建一个仓库用来存放备份文件,名称自己随意,记得下面一定要勾选Private

3、配置本地仓库

因为用来备份博客

所以需要备份文件夹为/www/wwwroot/cll66.xyz

也就是把该文件夹定为本地仓库

使用命令:

#进入需要备份的文件夹
cd /www/wwwroot/cll66.xyz

#初始化你的github仓库
git init

#关联到远程github仓库
git remote add origin xxx

#关联仓库的时候,后面可以用HTTPS链接也可以用SSH,这里强烈建议选择SSH,安全性很高。

4、初次备份

#进入备份的文件夹
cd /www/wwwroot/cll66.xyz

#把目录下所有文件更改状况提交到暂存区,包括增,删,改。
git add -A

#提交push的说明
git commit -m "DylanC`s Blog"

#开始推送到Github
git push -u origin master

#推送的时候可能会提示The authenticity of host 'github.com' can't be established.信息,直进yes即可。

备份成功!

5、设置定时备份

在根目录先新建一个bash脚本:

创建Cll66.sh

内容如下:

#!/bin/bash
#进入到网站根目录,记得修改为自己的站点
cd /www/wwwroot/cll66.xyz
#将数据库导入到该目录,这里以mysql为例,passwd为数据库密码,typecho为数据库名称,typecho.sql为备份的数据库文件
mysqldump -uroot -ppasswd typecho > typecho.sql
git add -A
git commit -m "DylanC`s Blog"
git push -u origin master

测试下脚本,使用命令:

bash ~/Cll66.sh

脚本没问题的话,再设置为每天05:15执行一次

并将运行日志输出到根目录的siteback.log文件

echo "15 05 * * * bash ~/gitback.sh > ~/siteback.log 2>&1 &" > bt.cron
crontab bt.cron
rm -rf bt.cron

最后使用crontab -l命令查看添加成功没

成功的话,就基本上算完成了。

遇到推送失败

如果你将本地文件夹推送到Github失败的话,常见原因有2种,具体如下。

1、邮件问题

报错提示:Your push would publish a private email address.

这里可能是你将你的邮件地址私密了,解决方法如下:

方法一

如果你想一直保持私密,可以选择方法二

访问https://github.com/settings/emails,将Keep my email address private的勾去掉。

方法二

1、访问https://github.com/settings/emails,将Block command line pushes that expose my email的勾去掉。

2、设置你的github邮箱,修改成自己的再运行命令:

git config --global user.email "dylanc@cll66.xyz"

2、密匙问题

报错提示:Permission denied (publickey).

大概的原因就是,你设置密匙的时候改成了其它名称,而ssh默认只读取id_rsa,所以会显示没权限。解决方法如下:

方法一

进入根目录的.ssh文件夹,将你的github密匙文件,重新更名为id_rsa。

方法二

将github密匙添加到ssh agent,比如密匙名称为github,使用命令:
ssh-agent bash
ssh-add ~/.ssh/github
最后修改:2022 年 05 月 15 日
如果觉得我的文章对你有用,请随意赞赏