需求说明:
N1盒子的armbian系统配置好了 ipv6 的ddns,实现了域名访问本机,但是本地ipv6可能会发生变化,当发生变化后,需要手动执行指令,将新的ip与域名绑定,现在我们采用定时任务,每10分钟执行一次命令,这样,当本地的ip6地址发生变化后,10分钟内就能自动绑定。
DDNS手动执行更新的命令是:python3 ./run.py
现在,我们将需要执行的命令,放到一个sh文件中
新建文件:touch auto-run.sh
赋可执行权限:chmod +x auto-run.sh (或者chmod 777 auto-run.sh)
编辑器打开编辑文件:nano auto-run.sh
输入以下内容:
#!/usr/bin/env bash
python3 run.py
手动执行测试:bash ./auto-run.sh
2,创建crontab定时任务,定时执行上面的脚本文件
【crontab的常用命令:crontab -e 编辑, crontab -l 查看】
【crontab 定时任务的常用规则: f1 f2 f3 f4 f5 program 】
f1 表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天,program 表示要执行的程序。
语法学习:
语法详解1:Linux Crontab 定时任务 | 菜鸟教程 (runoob.com)
语法详解2:linux 定时任务crontab用法详解 (51gjie.com)
参考案例:
*/5 * * * * /bin/echo "11" >> /tmp/test:每5分钟将“11”写入test文件
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44 //每30分钟同步一下时间
* */1 * * * /usr/local/etc/rc.d/lighttpd restart //每一小时重启apache
我们现在的需要是:每隔10分钟执行一次 auto-run.sh 这个脚本,定时任务按照规则写出来就是:
*/10 * * * * /usr/bin/python3 /root/DDNS-master/run.py //每10分钟用python3执行run.py一次
* * * * * * "/usr/bin/python3 /root/DDNS-master/run.py" >> /tmp/ddns.log //每1分钟用python3执行run.py一次,并写入ddns.log这个日志里面。
我们先查看一下crontab里面现在的定时任务,执行 crontab -l 查看,如下:
root@armbian:~/DDNS-master# crontab -l
no crontab for root
执行 crontab -e 进行编辑,打开默认如下:
将我们上面的命令,敲上去,如下:
执行后出现错误,会自动进入编辑界面
经过检查发现,星号多了一个,应该是5个星号
将命令单独拿出来执行,提示没有config.json文件,自动又创建了一个,不知道创建到哪里了,于是使用查找命令,查找这个文件,如下:
root@armbian:~# find / -name config.json
/root/DDNS-master/config.json
/tmp/config.json