我的 ubuntu 服务器 12.04 上的 cron 作业有问题。我有两个互联网提供商 - 一个提供快速速度,另一个提供本地资源。因此,我使用命令路由来为第二个提供商设置静态路由。但关键是 dhclient 每隔约 1500 秒向提供商询问一次新路由并进行设置。
Sep 14 18:00:57 ubuntu dhclient: DHCPREQUEST of 10.166.132.69 on eth2 to 80.73.64.167 port 67
Sep 14 18:00:57 ubuntu dhclient: DHCPNAK from 80.73.64.167
Sep 14 18:00:57 ubuntu dhclient: DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 3
Sep 14 18:00:58 ubuntu dhclient: DHCPREQUEST of 10.166.132.69 on eth2 to 255.255.255.255 port 67
Sep 14 18:00:58 ubuntu dhclient: DHCPOFFER of 10.166.132.69 from 80.73.64.167
Sep 14 18:00:58 ubuntu dhclient: DHCPACK of 10.166.132.69 from 80.73.64.167
Sep 14 18:00:58 ubuntu dhclient: bound to 10.166.132.69 -- renewal in 1443 seconds.
所以我认为 cron 可以帮助我解决这个问题。我知道这不是最好的方法。但这就是我能想到的全部了。
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
*/5 * * * * root /etc/network/if-up.d/route-eth2 > /tmp/otchetcron
*/5 * * * * root /home/route.sh > /tmp/otchet
所有文件均可执行。
-rwxr-xr-x 1 root root 1,2K авг. 29 21:50 /etc/network/if-up.d/route-eth2
-rwxr-xr-x 1 root root 1,2K сент. 5 23:15 route.sh
在输出文件 otchet 和 otchetcron 中什么都没有。它们只是空的。在 syslog 中我看到了以下内容:
Sep 19 18:25:01 ubuntu CRON[9105]: (root) CMD (root /etc/network/if-up.d/route-eth2 > /tmp/otchetcron)
Sep 19 18:25:01 ubuntu CRON[9106]: (root) CMD (root /etc/cron.d/route.sh > /tmp/otchet)
Sep 19 18:25:01 ubuntu CRON[9104]: (CRON) info (No MTA installed, discarding output)
Sep 19 18:25:01 ubuntu CRON[9103]: (CRON) info (No MTA installed, discarding output)
所以如果你有其他方法可以解决这个问题。请给我一些建议。
答案1
Linux 有一个功能可能在这里会有所帮助。Linux 允许创建多个路由表,但默认情况下 DHCP 客户端只会接触主表。因此,您可以做的是在另一个表上为其他 ISP 设置所有路由,并添加一个ip rule
让所有数据包使用备用表。