如何Linux Shell截取日志文件?

Bash

1 前言

一个问题,一篇文章,一出故事。
笔者最近使用Linux Shell截取日志文件。
由于有的文件会随时有新的日志写入且如果文件被直接重命令会导致日志写入失败。即日志文件不适宜直接删除且需要实现日志文件另存,于是整理此Shell处理逻辑。

2 最佳实践

2.1 截取日志的步骤

2.1.1 取得文件的最后行号

wc -l < /var/log/messages

以上以“/var/log/messages”为范例,执行后可见如下输出,

3615

2.1.2 根据最后行号另存文件

head -n 3615 /var/log/messages > /var/log/messages.save

2.1.3 删除已经另存的文件内容

sed -i -e "1,3615d" /var/log/messages

2.2 截取日志脚本范例

#!/bin/bash

logFile="/var/log/messages"
fileEnd=`wc -l < "$logFile"`
head -n "$fileEnd" "$logFile" > "$logFile"'.save'
sed -i -e "1,${fileEnd}d" $logFile
没有评论

发表回复

Bash
如何实现文件夹路径转纯数字符串?

1 前言 一个问题,一篇文章,一出故事。 由于由于需要设置某目录的配额,配额要求为每个目录指定一个项 …

Bash
如何统计Linux打开文件前10进程?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台服务最近压力比较大,打开的文件数量不断地往 …

Bash
如何获取VSFTP昨天活跃和有效用户?

1 前言 一个问题,一篇文章,一出故事。 笔者生产环境有台老旧的FTP服务器,用户众多。笔者希望每天 …