我们正在运行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
提供商看到它。
答案 0 :(得分:0)
它听起来像一个错误,但可能的解决方法可能是在创建它们之前删除所有crontab作业:
crontab -r -u USERNAME