Shell学习--GitHub刷存在

一个小小的脚本,能够自动提交GitHub,将你的帐号的图表刷成绿色的。

只需在GitHub仓库中有这个脚本,就能自动签到(懒人行为: -) :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
##
# Author: kingcc<laikinfox@gmail.com>
# Date : 2016/10/1
##

#!/bin/bash

###Redesign for myself :)

#参数
#日志目录可修改成自己的
DIR="$( cd "$( dirname "$0" )" && pwd )"
PRO="$DIR/GreenGraphrun.sh"
LOG="/home/zmvps/git.log"
CMD="00 00 * * * $PRO>>$LOG 2>&1"
echo "$CMD"

#启动密钥管理器,并添加密钥
cd $DIR
eval "$(ssh-agent -s)"
ssh-add

#循环提交
commits=$(($RANDOM%20+1))
i=0
while(($i<$commits))
do
commitTimesp=`sed -n '/run/p' ./README.md`
commitTimesh=${commitTimesp#*run }
commitTimes=${commitTimesh% times.}
sed -i "s/$commitTimes/$(($commitTimes+1))/" ./README.md
git add -A && git commit -m "$(($commitTimes+1))"
i=$(($i+1))
done
git push origin master

#配置crontab,定时运行
(crontab -l 2>/dev/null | grep -Fv $PRO; echo "$CMD") | crontab -
pkill -8 ssh-agent
cd ~

README.md

1
This script has run 1 times.

Shell学习及踩坑记:

crontab

  • 用于设置周期性执行的命令,各用户配置文件均在 /var/spool/cron/crontabs
  • 创建及编辑 crontab -e [username]
  • 需要添加计划只需在配置文件添加一行,格式如[执行频率 用户 程序],频率如
小时 月中日 月份 周中日期 说明
`0` `1` `15` `1,11` `*` 在 1、 和 11 月的 15 日的 1 a.m. 运行命令。也可以把这个时间表写成 ` 0 1 15 jan,nov *`。不要在逗号后面加空格。
`0-59/15` `*` `*` `*` `*` 这个调度计划每 15 分钟运行命令一次。
`30` `*` `*` `*` `wed,fri` 这个时间表只在星期三和星期五每小时的 30 分时执行命令一次。(在列表中可以使用日和月份的名称,但是在范围中不可以)。
`0,30` `0-5,17-23` `*` `*` `*` 在午夜到 5 a.m. 以及 7 p.m. 到 11 p.m. 之间整点时和 30 分时运行命令。
`0` `0` `1` `1` `*` 在每年 1 月 1 日午夜执行命令一次。
`0` `0` `*` `*` `0` 在每个星期日午夜运行命令。这相当于每周一次。
`30` `0` `10,20,30` `*` `6` 因为月中日和周中日受到限制,这个时间表在每星期六和每月的 10、20 和 30 日(二月除外)的 12:30 a.m. 运行命令。

小坑:

  • crontab 预定义5个环境变量(其中PATH=/usr/bin:/bin SHELL=/bin/sh),故使用crontab执行周期指令时因为PATH 而报错,或程序中的一些指令在sh不支持(如上文中的$RANDOM)。解决方法分别是 1、在脚本前加入./etc/profile .~/.bash_profile 等并使用绝对路径的;2、在配置文件前添加一行 SHELL=/bin/bash
  • crontab 默认并没有在日志服务中开启,编辑 /etc/rsyslog.d/20-default.conf 去掉cron前的#号,并重启rsyslog服务即可为cron开启日志服务,目录在 /var/log/cron.log
  • 当写 crontab 时,如果命令中有 % 号的时候,需要使用\转移,否则计划任务会执行失败
    参考 IBM 使用cron进行自动维护 https://www.ibm.com/developerworks/cn/education/aix/au-usingcron/
觉得不错不妨打赏一笔