如何从 root cron 中删除已经存在的条目,而不是通过 Chef cron 资源创建的

问题描述 投票:0回答:1

我的

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

==========================================

我想使用厨师单独删除以下行。

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 开始的

/opt/snow/snowagen
t,只是因为我们正在创建相同的
cron
从 04:00 开始。我不想删除在 04:00 运行的内容。

NoMethodError
-------------
undefined method `delete_lines' for cookbook: test_lnx_slm9upgrade, recipe: install_slm9 :Chef::Recipe
ruby cron chef-infra
1个回答
0
投票

看起来您没有

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

找到更多相关信息
© www.soinside.com 2019 - 2024. All rights reserved.