准备脚本
在威联通上新建一个文件夹。
再在这个文件夹下新建两个文件。
分别是
cfd.log
check_and_resatrt.sh
其中check_and_resatrt.sh
加入以下内容。
https://pup.0521.uk
改为自己的网址。Cloudflared是容器名称,不一样要自行替换。
#!/bin/bash
current_time=$(date +"%Y-%m-%d %H:%M:%S")
# checking
curl --fail https://pup.0521.uk >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "${current_time}: Cloudflared is not online. Restarting..."
# restart cloudflared
docker restart cloudflared
if [ $? -ne 0 ]; then
echo "${current_time}: Failed to restart Cloudflared."
exit 1
fi
echo "${current_time}: Cloudflared restarted successfully."
else
echo "${current_time}: Cloudflared is online."
fi
增加定时任务
首先,使用vim编辑/etc/config/crontab
vim /etc/config/crontab
然后,同样将下面的定时任务增加在最下面,保存并退出
其中/share/documents/scripts/sh
和/share/documents/logs
这两个路径自行替换成刚才创建的文件夹的路径。
*/5 * * * * /share/documents/scripts/sh/check_and_resatrt.sh >> /share/documents/logs/cfd.log 2>&1
最后,重启crontab,需要执行2条命令
sudo crontab /etc/config/crontab
sudo /etc/init.d/crond.sh restart
等待重启完成,定时任务就添加完成了,打开刚才创建的cfd.log
看下执行效果。
如果提示No such file or directory
在Linux下编译运行脚本的时候出现”/bin/bash^M: 坏的解释器: 没有那个文件或目录(bad interpreter: No such file or directory)“这样的错误。
解决方法:
cd到该脚本文件夹
cd /share/documents/scripts/sh
输入sed -i 's/\r$//' check_tool.sh
即可
其中check_tool.sh
为文件名,这里改成自己需要的即可
如本例的
sed -i 's/\r$//' check_and_resatrt.sh
原因: 这个文件在Windows 下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n sed -i 's/\r$//' check_tool.sh 会把check_tool.sh中的行尾的\r替换为空白
详细解析: 这跟系统有关。脚本文件在windows下编辑过,windows下每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r, 用cat-A filename时你可以看到这个\r字符被显示为^M
再次打开cfd.log
看下执行效果。
Cloudflared is online,成功。
from: 在威联通NAS中设置定时任务