bash - Solaris 中的日志轮换(压缩/删除)脚本
问题描述
在 linux 环境中具有相同的日志轮换文件并且它们在那里工作。在 Solaris 中,我在运行这些脚本时遇到问题:
脚本的主要目的是删除所有超过 30 天的日志并压缩所有超过 5 天的日志。-not -name
使用它是因为我只想对旋转的日志文件进行操作,例如something.log.20181102
因为 .log 文件是当前文件并且我不想触摸它们。
#!/bin/bash
find ./logs -mindepth 1 -mtime +30 -type f -not -name "*.log" -delete
find ./logs -mtime +5 -not -name "*.log" -exec gzip {} \;
出现问题是因为它-mindepth
给出-not
了错误:
find: bad option -not
find: [-H | -L] path-list predicate-list
基于搜索,我必须以-prune
某种方式在查找中使用,但我不太确定如何使用。
解决方案
如果您查看find(1)
Linux(或gfind(1)
Solaris)上的手册页,您会看到
-not expr
Same as ! expr, but not POSIX compliant.
因此,您应该能够替换-not
为!
,尽管您需要使用反斜杠或单引号将其从 shell 中转义:
find ... \! -name "*.log" ...
请注意,在 Solaris 上,有一个名为的命令logadm
旨在帮助您处理此类事情,并且可能值得研究,除非您希望在 Solaris 和 Linux 上具有完全相同的行为。
推荐阅读
- r - hist3D 中的希腊字母
- r - 错误:软件包是由具有不同内部结构的 R 版本安装的;它需要重新安装才能与此 R 版本一起使用
- internationalization - 用阿拉伯语显示数字的正确方法
- python - 如何根据日期索引连接系列以形成 df 而不会丢失数据
- python - 如何使用 Selenium Webdriver 通过 xpath 查找?(Python)
- python - 在python中使用多个列表动态创建树图
- python-3.x - 类不调用 __init__
- vba - SumIf 语句 - 复杂的标准
- r - R ancova“如果错误”+“最小/最大警告”
- php - HTML 和 PHP 中的评论表单不显示