我们有数十个 Ubiquiti Edgerouter-X 在客户位置上处于活动状态。他们除其他外负责每分钟 ping 一个 IP。这是通过 cronjob(使用 crontab -e 设置)完成的,只要固件没有更新就可以正常工作。
当固件更新到较新版本时,cronjobs 将“重置”为默认值。经过一些研究,我注意到我应该使用system task-scheduler
cronjob 而不是 cronjob。所以我在中创建了一个ping.sh
文件/config/scripts/
,将权限设置为0755
并做了一个chmod +x ping.sh
. 这是ping.sh
文件的内容(用于测试目的)
#!/bin/bash
echo "Ping Pong!"
echo "Ping Pong!!" >> result.txt
当我手动执行脚本时,脚本工作正常,它会./ping.sh
回显Ping Pong!
并写入. 当我尝试使用它执行脚本时,它什么也不做。我尝试了 2 个任务调度程序配置并在之后重新启动了 Edgerouter :Ping Pong!!
result.txt
system task-scheduler
commit; save;
show system task-scheduler task
task ping-task {
crontab-spec "* * * * *"
executable {
path /config/scripts/ping.sh
}
}
和
show system task-scheduler task
task ping-task {
executable {
path /config/scripts/ping.sh
}
interval 1m
}
我错了什么?我在https://community.ui.com/上检查了多个有关它的主题,但找不到解决方案...
您的解决方案对我来说似乎非常好(在EdgeRouter X v2.0.9-hotfix.1上运行)。
我相信您在编写
result.txt
文件时只是在相对路径或权限方面遇到了一些问题。result.txt
我确实为(在目录中)设置了一个绝对路径/tmp
,它对我有用:使用最后一个命令,您可以看到每 1 分钟添加一行。