gpt4 book ai didi

linux - 获取最新的日志文件并存储在变量中

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:44 24 4
gpt4 key购买 nike

我正在寻找一个解决方案来 grep 最新的日志文件(例如 abc-20141028-005356.log),该文件已被修改。我可以使用命令“ls -1t |head -1”来执行此操作,它提供了解决方案,但日志文件夹中还有其他文件也被修改了。我尝试使用 head -2 来提供 2 个文件,然后进行 grepped文件...说“ls -1t | head -2 | grep abc-”。

真正的问题是当我们拥有与最新数据和新时间和日期相同的文件名时。我如何将最新的日志文件存储到具有相同重复文件名和日期和时间尾部的变量。

PATH=`cd $1 ; ls -1t | head -1`
LOGFILE=$1$PATH

$1=/opt/server1/logs/

请多多指教

我无法根据时间戳 grep 一个唯一的文件,例如 abc-20141028-005356.log 被修改,下一个文件是 abc-20141028-005358.log,这只是一个时间差异.. 但完整的文件名保持不变。

需要一个解决方案,在其中我可以将最新修改的文​​件分配给一个变量,而不管文件名和时间戳(最新修改)

I have couple of files here

total 0
-rw-r--r-- 1 root root 0 Nov 4 11:14 abc-20141028-005348.log
-rw-r--r-- 1 root root 0 Nov 4 11:14 abc-20141028-005358.log
-rw-r--r-- 1 root root 0 Nov 4 11:19 abc-20141029-005358.log
-rw-r--r-- 1 root root 0 Nov 4 11:19 abc-20141029-005360.log

This is the latest file i get if i use the below

[root@abcd RKP]# ls -1t | head -1
abc-20141029-005360.log

The above can be done when there is only files starting with abcd-***. Now i have the below files

-rw-r--r-- 1 root root 0 Nov 4 11:14 abc-20141028-005348.log
-rw-r--r-- 1 root root 0 Nov 4 11:14 abc-20141028-005358.log
-rw-r--r-- 1 root root 0 Nov 4 11:19 abc-20141029-005358.log
-rw-r--r-- 1 root root 0 Nov 4 11:19 abc-20141029-005360.log
-rw-r--r-- 1 root root 0 Nov 4 11:21 EFG-20141028-005348.log
-rw-r--r-- 1 root root 0 Nov 4 11:21 EFG-20141028-005358.log
-rw-r--r-- 1 root root 0 Nov 4 11:21 EFG-20141029-005358.log

When i do the above command

[root@abcd RKP]# ls -1t | head -1
EFG-20141029-005358.log

I want only files which are modified on abcd-XXXXX.XXXX based on the last modfied time.

I'm sorry for making this so confused. Please let me know if you need anything more.

The solution may be simple, but I'm not getting how to do this. !!!!

谢谢你成功了....

谢谢 ... 成功了。在我的脚本中运行上面的代码时,我得到了这个错误行 30: [: : integer expression expected

知道我错过了什么。同一部分的脚本如下。

 if [ -e $POSFile ]; then
# Read last Position
lastPosition=`cat $POSFile`
fi
fileLength=`stat -c %s $LOGFILE`

if [ "$lastPosition" -gt "$fileLength" ]; then
# Log file rolled
lastPosition=0;
fi

difference=`expr $fileLength - $lastPosition`
# New Spot To POSFile

enter code here

echo $fileLength > $POSFile

最佳答案

要获取某个目录 $1 中以 abc- 开头的最新文件:

ls -t "$1"/abc-* | head -n1

如果没有文件匹配这个模式,你会得到一个No such file or directory错误。在这种情况下,检查 $1 的值。一些有用的命令:

echo $1
ls "$1"
ls "$1"/abc-*

您帖子中的小脚本片段应该是:

LOGFILE=$(ls -t "$1"/abc-* | head -n1)

我还注意到您正在尝试将 PATH= 设置为某些内容。那可能不会有好下场。 shell 中的 PATH 变量比较特殊,它包含 shell 查找可执行文件的路径列表。为变量使用不同的名称,例如 path= 就可以(全部小写)。

关于你问题的第二部分:

line 30: [: : integer expression expected

这必须来自这一行:

if [ "$lastPosition" -gt "$fileLength" ]; then

-gt 的两边必须是整数才能工作。添加一些 echo 行来检查这些变量是否真的是数字,例如:

echo lastPosition=$lastPosition
echo fileLength=$fileLength
if [ "$lastPosition" -gt "$fileLength" ]; then

此外,最好用 $(...) 重写所有 `...`

关于linux - 获取最新的日志文件并存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26742671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com