以自动git pull为例 定时执行git操作
1.编写shell脚本
创建一个shell文件夹,统一管理
mkdir sh_file
cd sh_file
创建.sh文件
vim pullcoding.sh
设定执行命令
#git pull代码脚本
#选择项目仓库目录
cd /var/www/project/
#执行git pull命令拉取master分支,并将执行结果追加到日志文件
#git pull --rebase origin master >> /tmp/git.log
#拉取线上,并直接覆盖本地,避免冲突
git fetch
git reset --hard origin/master
git pull >> /tmp/git.log
#为方便查看,追加一行日期
date >> /tmp/git.log
#同样,追加分割线
echo "==========" >> /tmp/git.log
测试.sh文件
./pullcoding.sh
2.使用cron定时执行shell脚本
检查cron,查看已有的定时任务列表
crontab -l
编写定时任务
crontab -e
追加命令,写入文件中
#pull code
# 这里表示每2分钟执行一次.sh脚本,并将执行结果输出到git.log文件中
*/1 * * * * /var/www/shell_file/pullcoding.sh >> /tmp/git.log
^O -> enter 保存
^X 退出
重启cron
service cron restart
查看git.log可以检查是否执行
cat /tmp/git.log
3.cron命令解析
安装:apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
检查状态:service cron status
查询cron可用的命令:service cron
检查Crontab工具是否安装:crontab -l
编写cron命令 crontab -e
crontab每分钟定时执行:
*/1 * * * * service mysqld restart //每隔1分钟执行一次
*/10 * * * * service mysqld restart //每隔10分钟执行一次
crontab每小时定时执行:
0 */1 * * * service mysqld restart //每1小时执行一次
0 */2 * * * service mysqld restart //每2小时执行一次
crontab每天定时执行:
0 10 * * * service mysqld restart //每天10点执行
30 19 * * * service mysqld restart //每天19点30分执行
crontab每周定时执行:
0 10 * * 1 service mysqld restart //每周一10点执行
30 17 * * 5 service mysqld restart //每周五17点30分执行
crontab每年定时执行:
0 10 1 10 * service mysqld restart //每年的10月1日10点执行
0 20 8 8 * service mysqld restart //每年的8月8日20点执行
打开cron日志
vim /etc/rsyslog.d/50-default.conf
将#cron.*注释打开,保存退出
cron.* /var/log/cron.log
重启日志
service rsyslog restart
查看日志
cat /var/log/cron.log