需求说明:
N1袋子的armbian系统配置好了ipv6的ddns,实现了域名访问本机,而且本地ipv6可能会发生变化,当发生变化后,须要自动执行指令,将新的ip与域名绑定,如今我们采用定时任务,每1分钟执行一次命令,这样,当本地的ip6地址发生变化后,1分钟内能够手动绑定。
下载DDNS-master,放在/usr/local/src目录下并解压,这个目录专门拿来放本地自动安装的应用。
具体步骤及配置文件见单独文章:
具体的设置:(76条消息)使用NewFutureDDNS获取IPV6并动态更新_郭振振的博客-CSDN博客
我的定时设置:(76条消息)我的Crontab日常使用_郭振振的博客-CSDN博客
实现步骤
DDNS自动执行更新的命令是在DDNS-master目录下执行:python3./run.py或python3run.py
如今,我们将须要将这个执行命令,放在crontab上面,让程序手动执行,但是每次执行讲到日志上面linux定时执行脚本,便捷查看。
具体如下:
新建一个文件:touchddns.sh
赋可执行权限:chmod+xddns.sh(或则chmod777ddns.sh)
编辑器打开编辑文件:nanoddns.sh或则vimddns.sh
将须要执行等具体指令输入到这个文件中,如下:
#!/usr/bin/env bash
python3 ./run.py && echo "run.py文执行了"
之后crontab-e步入crontab编辑器,如下:
输入如下:
过几分钟中linux驱动下载,到/tmp目录下查看ddns.log2有没有更新,假如有表示成功了,之后将猫路由器袋子都断电重启,重启后到阿里云后台查看域名解析的历史记录。
在文件上面加上日期,便捷看日志
单冒号和双冒号的问题:
date+'%Y-%m-%d%H:%M:%S'和date+"%Y-%m-%d%H:%M:%S"疗效一样,疗效如下:
ddns.sh文件最终如下:
#!/usr/bin/env bash
python3 ./run.py && echo "run.py被执行!执行时间:$(date +'%Y-%m-%d %H:%M:%S')"
最终疗效:
定时手动删掉日志
由于日志文件每分钟就会追加一条进去,所以文件会越来越大
所以我们须要定期删掉这个文件
crontab-e添加下边内容:
# 每日23点30分删除 ddns.log 这个文件
30 23 * * * rm /tmp/ddns.log
没执行成功1
直接写在crontab上面,不用单独创建一个文件,写法如下(没有成功):
* * * * * cd /usr/local/src/DDNS-master && bash run.sh && echo "定时任务执行了" >> /tmp/ddns.log4
没执行成功2
# 测试1
* * * * * /usr/bin/bash /usr/local/src/DDNS-master/auto-run.sh >> /tmp/ddns.log1
# 测试2
* * * * * bash /usr/local/src/DDNS-master/auto-run.sh >> /tmp/ddns.log2
没执行成功3
#!/usr/bin/env bash
python3 ./run.py && echo "run.py文执行了"
date +"执行时间:%Y-%m-%d %H:%M:%S"
没执行成功4
具体情况:日期未输出
缘由:date旁边的日期变量缺乏冒号包上去
#!/usr/bin/env bash
python3 ./run.py && echo "run.py被执行!执行时间:$(date +%Y-%m-%d %H:%M:%S)"
拓展echo用法
参考:Linux常用命令13-echo-知乎()
重定向到一个文件
您可以使用操作符将输出重定向>或则>>到一个文件,而不是显示在屏幕上。
假如file.txt不存在,命令将创建它。当使用该文件时将被覆盖,而将把输出附加到该文件。
可以使用cat命令查看该文件内容:
echo -e 'The only true wisdom is in knowing you know nothing.nSocrates' >> /tmp/file.txt
使用$(command)表达式将命令输出包含在echo的参数中,下边的命令将显示当前日期:
echo "The date is: $(date +%D)"
The date is: 04/01/20
echo还可以显示变量。在下边的示例中,我们将输出当前登入用户的名称:
echo $USER
admin
crontab用法
【crontab的常用命令:crontab-e编辑,crontab-l查看】
【crontab定时任务的常用规则:f1f2f3f4f5program】
f1表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个礼拜中的第几天,program表示要执行的程序。
句型学习:
句型解读1:LinuxCrontab定时任务|新手教程()
句型解读2:linux定时任务crontab用法解读()
参考案例:
*/5****/bin/echo"11">>/tmp/test:每5分钟将“11”写入test文件
*/30****/usr/sbin/ntpdate210.72.145.44//每30分钟同步一下时间
**/1***/usr/local/etc/rc.d/lighttpdrestart//每一小时重启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文件嵌入式linux培训,手动又创建了一个,不晓得创建到那里了linux定时执行脚本,于是使用查找命令,查找这个文件,如下:
root@armbian:~# find / -name config.json
/root/DDNS-master/config.json
/tmp/config.json