删除 cron 作业及其评论,由 awk/sed 的 Puppet 创建的环境
remove cron jobs along with their comment, environment which were created by Puppet by awk/sed
有没有办法 remove/delete Puppet 使用 awk/sed 创建的 cron 作业?我知道我们可以通过 crontab -e
命令手动编辑,但这是一个脚本问题。
示例根 cron 是 /var/spool/cron/crontabs/root
中的一个文件。我想删除下面的行。
# Puppet Name: cron1
MAILTO=root@localhost.com,admin@localhost
* * * * * /bin/true
# Puppet Name: cron test
PATH="/usr/local/bin"
MAILTO=root@localhost.com
2-57 * * * * echo "test"
# Puppet Name: thank you
* * * * * echo "Thank you!"
....
Puppet cron 有模式:
- 开始于
# Puppet Name:
- 可以包含也可以不包含Cron环境。这可以是多行
谁知道怎么做,请帮忙。
谢谢!
您最好使用 Puppet 删除 Puppet 创建的 crontab 条目。
但是,如果您必须通过手动 shell 命令来完成,那么您可以通过此 sed
命令来完成:
sed -nie '/^# Puppet Name:/!{p;d};:p;n;/^[ \t]*\(\|#.*\|[A-Za-z_][A-Za-z_0-9]*[ \t]*=.*\)$/ b p' \
/var/spool/cron/crontabs/root
说明
该命令假定要删除的每组行都以“Puppet Name:”注释开头,并继续直到并包括下一行,该行既不是空白(但用于空白),也不是注释,也不是环境变量赋值。它就地修改指定文件 (-i
),禁用自动打印 (-n
)。表达式 (-e
) 执行以下操作:
- 如果读取的下一行不是以文本“
# Puppet Name:
”开头,则打印该行并开始下一个循环 ({p;d}
)。否则,
- 表达式中的这一点标记为“p”(
:p
);
- 静默(因为自动打印被禁用)读取下一行输入(
n
);
- 如果当前行是空白,是注释,或者是环境设置,则分支到标签 p (
b p
);
- else 到达表达式的末尾。默默地(因为自动打印被禁用)开始下一个循环。
有没有办法 remove/delete Puppet 使用 awk/sed 创建的 cron 作业?我知道我们可以通过 crontab -e
命令手动编辑,但这是一个脚本问题。
示例根 cron 是 /var/spool/cron/crontabs/root
中的一个文件。我想删除下面的行。
# Puppet Name: cron1
MAILTO=root@localhost.com,admin@localhost
* * * * * /bin/true
# Puppet Name: cron test
PATH="/usr/local/bin"
MAILTO=root@localhost.com
2-57 * * * * echo "test"
# Puppet Name: thank you
* * * * * echo "Thank you!"
....
Puppet cron 有模式:
- 开始于
# Puppet Name:
- 可以包含也可以不包含Cron环境。这可以是多行
谁知道怎么做,请帮忙。 谢谢!
您最好使用 Puppet 删除 Puppet 创建的 crontab 条目。
但是,如果您必须通过手动 shell 命令来完成,那么您可以通过此 sed
命令来完成:
sed -nie '/^# Puppet Name:/!{p;d};:p;n;/^[ \t]*\(\|#.*\|[A-Za-z_][A-Za-z_0-9]*[ \t]*=.*\)$/ b p' \
/var/spool/cron/crontabs/root
说明
该命令假定要删除的每组行都以“Puppet Name:”注释开头,并继续直到并包括下一行,该行既不是空白(但用于空白),也不是注释,也不是环境变量赋值。它就地修改指定文件 (-i
),禁用自动打印 (-n
)。表达式 (-e
) 执行以下操作:
- 如果读取的下一行不是以文本“
# Puppet Name:
”开头,则打印该行并开始下一个循环 ({p;d}
)。否则, - 表达式中的这一点标记为“p”(
:p
); - 静默(因为自动打印被禁用)读取下一行输入(
n
); - 如果当前行是空白,是注释,或者是环境设置,则分支到标签 p (
b p
); - else 到达表达式的末尾。默默地(因为自动打印被禁用)开始下一个循环。