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:[email protected]/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 寄一封信给 [email protected]: 
0 17 * * 1-5 mail -s "hi" [email protected] < `/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
相关推荐
船长@Quant1 小时前
协作开发攻略:Git全面使用指南 — 第二部分 高级技巧与最佳实践
git·版本控制·源代码管理·协作开发
梓羽玩Python1 小时前
告别OCR!这个AI文档神器直接"看懂"PDF,支持文档归类及多模态问答!
人工智能·github
用户12653838705123 小时前
github 和 gitee 配置问题及相关问题解决
git·github
uhakadotcom4 小时前
轻松理解vLLM:大语言模型推理的高效利器与实用示例
后端·面试·github
极小狐4 小时前
极狐GitLab Git LFS 速率限制如何设置?
运维·git·ssh·gitlab·github
极小狐4 小时前
如何解决极狐GitLab 合并冲突?
人工智能·git·机器学习·gitlab
一袋米扛几楼984 小时前
【GIT】github中的仓库如何删除?
git·github
hjm47021925 小时前
GIT 使用小记
git
uhakadotcom5 小时前
刚发布的PyTorch 2.7提供了什么 新特性
算法·面试·github
程序猿chen14 小时前
JVM考古现场(二十五):逆熵者·时间晶体的永恒之战(进阶篇)
java·jvm·git·后端·程序人生·java-ee·改行学it