提问人:Hema 提问时间:8/31/2023 最后编辑:Wiktor StribiżewHema 更新时间:9/1/2023 访问量:47
如何从根 cron 中删除已存在的条目,而不是通过 chef cron 资源创建的条目
how to delete entry from root cron which is already existing not created through chef cron resource
问:
我的参赛作品 :cron
[root@server1 ~]# cat /var/spool/cron/root
0 21 * * * /bin/bash -c "sleep $[RANDOM \% 60 + 1]m"; nice -n 10 /opt/snow/snowagent -w /opt/snow/ >/dev/null 2>&1
# Chef Name: account_lister_clean
0 12,23 * * * rm -f /opt/scripts/acct_list_run_once
# Chef Name: logger_cron
0 0 * * * /opt/unx_logger.sh
========================================
我想使用 chef 单独删除以下行。
0 21 * * * /bin/bash -c "sleep $[RANDOM \% 60 + 1]m"; nice -n 10 /opt/snow/snowagent -w /opt/snow/ >/dev/null 2>&1
=========================================
delete_lines 'remove snow agent cron at 22:00' do
path '/var/spool/cron/root'
pattern '^*/opt/snow/snowagent'
end
我收到如下错误,特别是它必须删除从 22:00 开始的 t,只是因为我们在 04:00 创建相同的开始。我不想删除在 04:00 运行的 ./opt/snow/snowagen
cron
NoMethodError
-------------
undefined method `delete_lines' for cookbook: test_lnx_slm9upgrade, recipe: install_slm9 :Chef::Recipe
答:
0赞
Ismael Abreu
9/1/2023
#1
看起来你没有,可能是你错过了导入它。delete_lines
同时,我为您找到了一个简单的解决方案
ruby_block 'remove snow agent' do
block do
rc = Chef::Util::FileEdit.new('/etc/hosts')
rc.search_file_delete_line(/\/opt\/snow\/snowagent/, '')
rc.write_file
end
end
您可以在 https://rubydoc.info/gems/chef/Chef/Util/FileEdit#search_file_delete_line-instance_method 上找到有关此内容的更多信息
0赞
seshadri_c
9/1/2023
#2
您尝试使用的资源来自 line 说明书。很可能您没有在说明书的元数据中添加说明书的依赖关系。delete_lines
您需要:
请确保此说明书在您的 Chef 服务器上可用,如果您在本地模式下运行 Chef,则在本地可用。获取此食谱的说明可在上面链接的页面中找到。
在说明书的元数据中添加此说明书的依赖项。在说明书目录中,编辑文件并添加以下条目:
metadata.rb
depends 'line'
在我的测试中,我能够使用以下代码删除该行:
delete_lines 'remove snow agent cron at 22:00' do
path '/var/spool/cron/root'
pattern '^.*/opt/snow/snowagent'
end
评论