Chef cron提供程序创建多个crontab条目

时间:2014-04-21 18:44:50

标签: cron chef crontab

我们正在运行Chef 11.4.4,其中包含非omnibus安装(它作为gem安装)。在我们的一本烹饪书中,我们使用cron提供程序,如:

checksum   = Digest::MD5.hexdigest(node['fqdn'] || 'unknown-hostname')
sleep_time = checksum.to_s.hex % node['custom_command']['splay'].to_i

cron "custom_command" do
  user "custom_user"
  hour 0
  minute 0
  command "/bin/sleep #{sleep_time}; /home/custom_user/custom_command.sh"
end

不知何故,这似乎在0.01%的时间内创建了多个cron条目。在受影响的服务器上,我们从crontab -u custom_user -l获得以下输出:

# Chef Name: custom_command
0 0 * * * /bin/sleep 7035; /home/custom_user/custom_command.sh
# Chef Name: custom_command
0 0 * * * /bin/sleep 7035; /home/custom_user/custom_command.sh

运行chef-client不会修改crontab。但是编辑crontab并删除两个条目然后再次运行chef-client将解决问题。然后crontab -u custom_user -l输出看起来(正确)像:

# Chef Name: custom_command
0 0 * * * /bin/sleep 7035; /home/custom_user/custom_command.sh

此问题似乎随机弹出 - 我们目前每天必须修复大约1台服务器。所以它似乎是某种种族问题。

还有其他人遇到过同样的问题吗?我没有使用cron_d提供商看到它。

1 个答案:

答案 0 :(得分:0)

它听起来像一个错误,但可能的解决方法可能是在创建它们之前删除所有crontab作业: crontab -r -u USERNAME