Logrotate lastaction脚本不工作
问题描述:
我有一个lastaction脚本我试图在我的“日志”文件夹中运行,因为我想移动日志/归档文件夹内的日志文件夹中的所有文件和文件夹。所以,我只是增加Logrotate lastaction脚本不工作
mv log/* log/archive/2014
显然不够,我得到一个错误,归档文件夹无法移动到其自身的子目录,所以我尝试添加额外的参数给移动命令移动除了存档文件夹的一切。
mv !(archive) log/* log/archive/2014
这个确切的命令,如果从CLI执行,工作得很好,但lastaction/endscript块内添加时,它抛出以下消息
logrotate_script: 2: logrotate_script: Syntax error: "(" unexpected
任何人对为什么出现这种情况的任何线索?
答
您正在使用bash
作为您的shell。您还启用了extglob
设置。
当logrotate执行该shell脚本时,其中一个或另一个不是真的。
另外,mv
命令看起来很奇怪。如果archive
在日志下,那么我不明白为什么!(archive)
没有log/
作为前缀。无论前面的extglob
glob如何,log/*
仍应与log/archive
匹配。 (这是我认为你想要mv log/!(archive) log/archive/2014
,假设你不想忽略来自mv
的警告。)
语法(mv log /!(archive))不适用于cli ,因为它会抛出“bash:!:event not found” – 2014-09-24 06:40:45
'mv!(archive)'工作过(像在你的OP中),但是'mv log /!(archive)'不?你有'extglob'启用?在你的shell中如果前者工作后者应该。在logrotate脚本中,您需要使用bash并确保启用了“extglob”,但历史扩展应该不成问题,因为默认情况下它应该在脚本中禁用。 – 2014-09-24 11:12:11