You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

rndc flushname在命令行及手动执行脚本时正常,通过cron定时任务执行失效的问题求助

rndc flushname在命令行及手动执行脚本时正常,通过cron定时任务执行失效的问题求助

我现在快愁死了,折腾半天都没搞明白问题出在哪!我正在搭建一个内部自动DNS传播系统,别的环节都正常,唯独rndc flushname在cron里跑不起来。

正常的场景:

  1. 直接在命令行执行:
    在shell提示符下直接跑这两条命令完全正常,能成功刷新并重载DNS:

    $ sudo rndc flushname /var/lib/bind/$domain.hosts
    $ sudo rndc reload
    
  2. 手动执行脚本:
    我写了如下bash脚本:

    #!/bin/bash
    
    domain="some-domain.com"
    
    # 其他业务操作
    
    rndc flushname /var/lib/bind/$domain.hosts
    rndc reload
    

    用命令sudo bash myScript.sh手动执行这个脚本,也能正常完成DNS刷新和重载。

异常的场景:

把这个脚本放到cron定时任务里就失效了!我通过sudo crontab -e编辑了root用户的定时任务:

*/5 * * * * bash /etc/bind/dnsCron/dnsCron.sh

定时任务运行后,DNS并没有被重新加载,rndc flushname和rndc reload这两个命令好像根本没起作用。

我的疑惑:

不管是直接在命令行跑,还是手动调用脚本,rndc都能正常工作,怎么到cron里就不行了?所有命令都是通过sudo执行的,而且cron也是以root权限运行的啊。有没有大佬能指点下问题出在哪?或者有没有其他方法可以调用rndc flushname来实现同样的效果?

备注:内容来源于stack exchange,提问作者Zak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 13:50:27