试图为此运行一个bash脚本,因为我想把它放到cron中,每天晚上运行以从文件中提取错误并写入在同一目录下的文件:从一个文件grep错误,并把它们放在一个新的文件,但不覆盖新文件
我的脚本,它只是挂起翻出什么:
#!/bin/bash
tail -f /var/log/syslog | grep -i "error" > /var/log/syserrorlog.log
在运行此,我想这个写入/更新相同的文件,而不是将其覆盖。
试图为此运行一个bash脚本,因为我想把它放到cron中,每天晚上运行以从文件中提取错误并写入在同一目录下的文件:从一个文件grep错误,并把它们放在一个新的文件,但不覆盖新文件
我的脚本,它只是挂起翻出什么:
#!/bin/bash
tail -f /var/log/syslog | grep -i "error" > /var/log/syserrorlog.log
在运行此,我想这个写入/更新相同的文件,而不是将其覆盖。
将您的>
更改为>>
(后者表示追加)。此外,tail -f
将按定义挂起:它将监视文件以获取新数据。
如果你的系统记录每天都在旋转,那么你可以简单地使用
#!/bin/bash
cat /var/log/syslog | grep -i "error" >> /var/log/syserrorlog.log
如果不旋转,你可以添加一个grep
,以过滤掉有关日期
尝试使用管道logrotate
。这是用于定期轮换日志的守护进程(例如,存档日志文件,然后每天晚上清除它们)。它支持许多配置选项,其中之一是postrotate
- 旋转完成后执行的自定义脚本。说明从logrotate
的手册页复制:
postrotate/endscript
postrotate和endscript(两者必须由他们自己上出现线条)之间的界限被执行(使用/ bin/sh的)在 日志文件旋转后。这些指令可能只出现在日志文件定义 中。通常,日志文件的绝对路径作为脚本的第一个参数传递给 。如果指定了共享脚本,则将整个 模式传递给该脚本。另见prerotate。请参阅共享脚本 和nosharedscripts以进行错误处理。
系统日志也是一个标准的守护进程,所以它应该有配置文件在/etc/logrotate.d/
。你可以在那里添加你的命令。
谢谢..明天早上我会试试这个,让你知道结果 – Kerry
完美...感谢您的帮助 – Kerry