
我們在客戶位置有數十個處於活動狀態的 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 分鐘新增一行。