Crontab 使用及定时提交 git

相关文章

https://www.runoob.com/linux/linux-comm-crontab.html

https://linux265.com/news/3099.html


crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意:新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。


而 linux 任务调度的工作主要分为以下两类:

1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

2、个人执行的工作:某个用户定期要做的工作,例如每隔 10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置


crontab 主要命令

crontab --e  : 编辑 crontab 文件. 如果文件不存在会自动创建。 
crontab --l  : 显示 crontab 文件。 
crontab -r  : 删除 crontab 文件。
crontab -ir : 删除 crontab 文件前提醒用户。

shell 复制代码
 crontab -l
1 8-23 * * * /Users/xx/Documents/repos/notes/auto_commit.sh 
1 8,12,17 * * * /Users/xx/Documents/code/qnecode/data_refresh/autorefresh.sh

自动提交 git

脚本

shell 复制代码
cd /Users/xx/Documents/repos/notes

git add .
git commit -a -m '--'

echo $(date +%Y-%m-%d\ %H:%M:%S) - commit notes >> /Users/xx/Documents/repos/notes_commit.txt

git pull
# echo '-- pull end'
sleep 5
# git push
git push https://usename:password@gitee.com/xxx/notes.git master

# echo '-- push end'

时间格式说明

时间格式如下:

f1 f2 f3 f4 f5 program

其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。

  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
  • 当 f1 为 a-b 时,表示 从第 a 分钟到第 b 分钟 这段时间内 要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
  • 当 f1 为 */n 时表示 每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
  • 当 f1 为 a, b, c,... 时,表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
shell 复制代码
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

使用示例

shell 复制代码
# 每一分钟执行一次 `/bin/ls:
* * * * * `/bin/ls

# 每5分钟运行一次命令 
*/5 * * * * `/root/bin/check-status.sh

# 每小时的第一分执行 `/home/bruce/backup这个文件 
1 * * * * `/home/bruce/backup  

# 每天 8、12、17 第一分钟 执行脚本
1 8,12,17 * * * /Users/xx/autorefresh.sh

# 每天 8-23点 第一分钟,执行脚本
1 8-23 * * * /Users/xx/auto_commit.sh 

# 每两个小时重启一次apache  
0 */2 * * * `/sbin/service httpd restart  

# 每天7:50开启ssh服务 
50 7 * * * `/sbin/service sshd start  

# 每天22:50关闭ssh服务 
50 22 * * * `/sbin/service sshd stop  

# 在 12:01 a.m 运行,即每天凌晨过一分钟。
# 这是一个恰当的进行备份的时间,因为此时系统负载不大。
1 0 * * * `/root/bin/backup.sh

# 每月1号和15号检查/home 磁盘 
0 0 1,15 * * fsck `/home  

# 每月的1、11、21、31日是的 6:30 执行一次ls命令
30 6 */10 * * ls  

# 每月每天的 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha":
20 0-23/2 * * * echo "haha"


# 在 第 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 `/usr/bin/backup:
0 6-12/3 * 12 * `/usr/bin/backup

# 每周六、周日的3点10分执行hello程序。
10 3 * * 0,6 hello

# 从周四到周六的4点15点执行hello程序。
15 4 * * 4-6 hello

# 周一到周五每天下午 5:00 寄一封信给 alex@domain.name: 
0 17 * * 1-5 mail -s "hi" alex@domain.name < `/tmp/maildata


# 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
00 03 * * 1-5 find `/home "*.xxx" -mtime +4 -exec rm {} \;  



# 每个工作日(Mon -- Fri) 11:59 p.m 都进行备份作业。 
59 11 * * 1,2,3,4,5 `/root/bin/backup.sh

# 下面例子与上面的例子效果一样: 
59 11 * * 1-5 `/root/bin/backup.sh

# 每个月的第一天 1:10 p.m 运行
10 13 1 * * `/root/bin/full-backup.sh

# 每个工作日 11 p.m 运行。
0 23 * * 1-5 `/root/bin/incremental-backup.sh

# 8-23点之内,每小时的第一分钟执行一次脚本
1 8-23 * * *  `/Users/xx/repos/abc/auto_commit.sh
相关推荐
binishuaio1 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。2 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
stewie64 小时前
在IDEA中使用Git
java·git
小牛itbull6 小时前
ReactPress:重塑内容管理的未来
react.js·github·reactpress
晓理紫12 小时前
使用git lfs向huggingface提交较大的数据或者权重
git
我不是程序猿儿14 小时前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git
鱼满满记14 小时前
1.6K+ Star!GenAIScript:一个可自动化的GenAI脚本环境
人工智能·ai·github
梦魇梦狸º16 小时前
腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
docker·容器·github
_OLi_21 小时前
IDEA中新建与切换Git分支
java·spring boot·git
Huazie21 小时前
一篇搞定 Hexo Diversity 主题接入!支持多主题自由切换!
javascript·github·hexo