|
发表于 2020-1-9 21:13:31
|
显示全部楼层
具体就是,先配置crontab,然后在里面设置定时任务,最后加入开机启动,完美。
写在前面的前面,其实我的需求就是DDNS,申请了HE.NET的账号,结果他的ddns实现方法特别简单,也特别难,因为核心就是一个http请求,设置成每5分钟执行一次,就ok,开始我是在win server 2019里面的计划任务里面设置,使用了一个脚本,让他定时执行脚本,不过,总是失败,只执行最开始的第一次,这里不在讨论。
而且,这台主机平时是关机状态(嫌费电),如果光猫不小心重启了,导致ip地址变化,就没法管理家里的路由器了(路由器开启了远程管理)。
因为我在路由器里设置了网络唤醒,管理到路由器就能管理到下面的电脑。电脑开启了远程桌面。所以,一些只有电脑才能办到的事情,就可以远程回家里,操作一番。比如一些办公软件,还是win下的好使,安卓版的触摸急死人,手机配上蓝牙鼠标键盘,远程回家里就是一台电脑。
注:路由器是基于openwrt系统,但是精简版,什么也干不了,上网找了一圈,找不到教程,所以发现8145V可以开openwrt后才找到这个帖子学习。
写在前面,其实crontab -e就可以设置计划任务了。但是总不成功,所以才去网上找。下面一通操作,达到目的,如有谬误,欢迎指正,谢谢
1、
mkdir /etc/crontabs,创建这个目录,当然,这个目录有,所以不用创建,如果没有则创建
2、
touch /etc/crontabs/root,生成root文件,以后就编辑这个添加任务就好了。这条我没执行,我用的下面的vim命令,直接生成文件并编辑
---------------------------
vim /etc/crontabs/root,生成root文件,并编辑他
例如
*/5 * * * * curl -4 http://xxx.com,这个是每5分钟一次http请求,注意不要https,-4是只用ipv4
3、
ln -sf /etc/crontabs/root /etc/crontab ,产生关联,只要在vim /etc/crontabs/root,就可以映射到,crontab -e
4、
这个要说下,直接vim /etc/init.d/S60cron就会创建S60cron,并编辑他,写如下三行(空行不算)
#!/bin/sh
# start crond
/usr/sbin/crond -c /etc/crontabs
5、
然后给这个文件权限
chmod 755 /etc/init.d/S60cron
6、
然后运行下面指令开启cron
/etc/init.d/S60cron
7、
运行日志,看下是否开启了cron
logread
日志文件中最后一行,也就是最新出现的,应该出现了类似下面的的一行。
Mar 21 20:29:38 (none) kern.notice crond[687]: crond 2.3.2 dillon, started, log level 8
8、
每次编辑了cron(也就是第一条创建的root文件),都要重启服务来生效,以下就是命令
killall crond; /etc/init.d/S60cron
9、
因为一些命令通常都是10分钟一运行,所以会产生海量的日志记录,所以在vim /etc/init.d/S60cron的命令后面加上 /dev/null
#!/bin/sh
# start crond
/usr/sbin/crond -c /etc/crontabs -L /dev/null
注意,因为我发现加上这个,我无法在logread里面看到任务是否生效,所以,我一直开着,以后有机会我再关闭。
设置完以上步骤应该就完了,但是我发现重启后就失效了,到了时间总是不执行。
所以我加上了开机启动
注意,如果不成功,需要直接运行下你的任务命令,看看行不行
比如直接在#下输入命令并回车
例如:
root@SAF:~# curl -4 http://www.baidu.com
看看能不能正常输出,如果不行,就要在这条任务这里先搞定再说后面的。
下面是我加开机启动的步骤
一、在/etc/rc.local中添加
如:
$ vim /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
. /etc/rc.d/rc.tune
/opt/pjt_test/test.pl
咱们在最后加个
killall crond; /etc/init.d/S60cron
ok了
参考了这个文章,这个文章是英文的,一点一点翻译就可以了。
https://martybugs.net/wireless/openwrt/cron.cgi |
|