0%

如何设置linux定时任务

0x00 前言

那么定时备份就要考虑crontab,但是,crontab适用于24小时开机的机器,如果关机,错过预订的时间,那么,预期任务将不会被执行(这里我没去求证是否有解决方案,还请大佬联系我),我们个人pc是不可能24小时开机的,所以得考虑其他的解决方案,我这里用的是开机启动脚本 rc.local ,这个脚本一般位于 /etc/rc.local ,linux每次开机的时候都会以root权限执行这个脚本

0x01 解决思路

0x00 替代crontab

我的想法是先建立一个json,json文件里面存着上次更新的日期,然后,用rc.local运行一个python脚本(至于为什么用python,可能是我太菜了,shell脚本不会写),python脚本程序流程如下

  • 读取json文件获得日期
  • 获得现在的日期得到时间差
  • 比较时间差和更新间隔
  • 如果时间差大于时间间隔,就执行shell命令,并且更新json文件

0x01 差异备份

那么现在crontab的替代品找到了,因为每次备份都要完全备份的话,用的时间越长,备份时间越长,表现出来的的状况就是一直在闪目录,过了很长时间才能登录,所以最好差异备份,那么如何差异备份呢,我们可以用tar工具备份,有一个 -N 的参数加日期,只更新日期之后改变的文件,那么这个日期应该是我们上一次更新的日期,那么问题来了,我第一次备份怎么办呢,我第一次需要手动备份,第二次脚本才能帮你更新

具体参考http://www.codes51.com/article/detail_3826106.html

0x02 遇到的问题

0x03 思考

0x00 思路

这个python脚本除了备份还能干嘛?给以下几点思路

  • 定时更新github仓库
  • 定时更新blog

0x01 遇到的问题

  • git push的时候要输入用户名和密码,然而执行的时候就不能输入,所以得用公钥登录参考https://www.cnblogs.com/superGG1990/p/6844952.html 因为是以root权限执行的rc.local 但是,我们一般不用root的用户登录,所以还得转换一下用户

    1
    su user -c "command"

0x04 最后附上的我的源码github仓库

https://github.com/pwnht/update_time