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的警告。)

+0

语法(mv log /!(archive))不适用于cli ,因为它会抛出“bash:!:event not found” – 2014-09-24 06:40:45

+0

'mv!(archive)'工作过(像在你的OP中),但是'mv log /!(archive)'不?你有'extglob'启用?在你的shell中如果前者工作后者应该。在logrotate脚本中,您需要使用bash并确保启用了“extglob”,但历史扩展应该不成问题,因为默认情况下它应该在脚本中禁用。 – 2014-09-24 11:12:11