如何在 Ubiquiti Edgerouter-X 上创建持久 cronjob,以便在固件更新后它仍然存在

如何在 Ubiquiti Edgerouter-X 上创建持久 cronjob,以便在固件更新后它仍然存在

我们在客户位置上安装了数十台 Ubiquiti Edgerouter-X。它们负责每分钟 ping 一个 IP。这是由 cronjob(使用 crontab -e 设置)完成的,只要固件未更新,它们就可以正常工作。

当固件更新到较新版本时,cronjobs 会“重置”为默认值。经过一番研究,我发现我应该使用system task-scheduler而不是 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!并写入Ping Pong!!result.txt当我尝试使用执行脚本时,system task-scheduler它什么也不做。我尝试了 2 个任务调度程序配置,并在之后重新启动了 Edgerouter 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/但找不到解决方案......

答案1

您的解决方案对我来说似乎非常好(在EdgeRouter X v2.0.9-hotfix.1)。

我相信您在写入文件时遇到了相对路径或权限方面的问题result.txt

result.txt我确实为(在目录中)设置了绝对路径/tmp,并且它对我有用:

cat > /config/scripts/pinger.sh <<'EOF'
#!/bin/bash
echo "Ping Pong!!" >> /tmp/result.txt
EOF

chmod +x /config/scripts/pinger.sh

configure
set system task-scheduler task pinger executable path /config/scripts/pinger.sh
set system task-scheduler task pinger interval 1m
commit ; save ; exit

watch cat /tmp/result.txt

使用最后一个命令,您可以看到每隔 1 分钟添加一行。

相关内容