我的目录中有许多文件。我想浏览目录,并将每个文件的最后一行放入一个新文件中。IE,这个新文件应该包含目录中每个文件的最后一行。我尝试使用
tail -n 1 | cat > newfile.txt
Run Code Online (Sandbox Code Playgroud)
但在每一行之间插入了源文件名。我也尝试编写一个 shell 脚本,但它唯一成功的就是创建目标文件,然后无限期地运行而不添加数据。执行此操作的正确方法是什么?任何帮助深表感谢。
我有一个简单的脚本,它设置日志记录,tail -f
在日志文件上运行,然后在退出后tail
执行一些清理。基本上是这样的
echo 'monitoring started'
tail -f /var/log/some.log
echo 'never gets here'
Run Code Online (Sandbox Code Playgroud)
问题是,tail
按 Ctrl+C 退出也会中断脚本执行,因此不会调用清理。有没有办法“正确”退出tail
并恢复脚本调用?我找到了一些基于保存PID并通过超时杀死它的解决方案,但这不是我想要的,我可能需要监控几分钟或几个小时,所以我想要一个手动切换。
我正在寻找Powershell
cmd 来打印目录中任何文件的最后 5 行数据。
理想情况下
Get-Content -Tail 5 -Wait .\test.log
将在最后 5 行的特定文件上打印尾部。如果有任何新内容被附加到该文件,它将继续打印。
同样,我想跟踪目录中的所有文件。如果任何文件被修改,则打印内容。
试过这样的东西,没有用!
Get-Content -Tail 5 -Wait .\folder*.log
我在远程计算机的文件夹中有一个 python 脚本。为了执行它,我从本地计算机创建一个 ssh 会话,转到该文件夹并运行。
我使用的命令:
ssh remotehost
user@remotehost:~$ cd /my/folder
user@remotehost:~$ python abc.py >> abc.log
Run Code Online (Sandbox Code Playgroud)
现在问题是 ssh 会话。该脚本需要花费大量时间,并且由于互联网问题,ssh 会话终止且脚本未完成。假设遥控器始终启动并运行。
我可以运行脚本而不关心 ssh 会话终止并tail -f abc.log
随时使用 ssh 吗?
我正在编写一个屏障来阻止脚本的执行,直到记录某个关键字为止。该脚本非常简单:
tail -F -n0 logfile.log | while read LINE; do
[[ "$LINE" == *'STOP'* ]] && echo ${LINE} && break;
done
Run Code Online (Sandbox Code Playgroud)
或者
tail -F -n0 logfile.log | grep -m1 STOP
Run Code Online (Sandbox Code Playgroud)
问题是它不会在检测到关键字后立即退出,而是仅在写入下一行后才退出。IE:
printf "foo\n" >> logfile.log # keeps reading
printf "foo\n" >> logfile.log # keeps reading
printf "STOP\n" >> logfile.log # STOP printed
printf "foo\n" >> logfile.log # code exits at last
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不能依赖这样一个事实:在“STOP”之后将记录另一行(至少不在对我的目的有用的间隔内)。
到目前为止找到的解决方法是tail
另一个我确信会经常更新的文件,但是“干净”的解决方案是什么,以便代码在记录STOP后立即退出?
我知道如何使用特定行数来拖尾文本文件,
tail -n50 /this/is/my.log
Run Code Online (Sandbox Code Playgroud)
但是,如何使该行计数成为变量?
假设我有一个大型日志文件,它由某个程序每天附加到,日志文件中的所有行都以这种格式的日期时间开头:
Day Mon YY HH:MM:SS
Run Code Online (Sandbox Code Playgroud)
每天我都想输出日志文件的尾部,但只输出前几天的记录。假设这个输出在午夜之后运行,我不担心尾部会溢出到第二天。
我只是希望能够根据昨天日期的第一次出现来计算出要拖尾的行数...
那可能吗?
我正在做来自haskell.mooc.fi/Exercises7的Set7.hs
\n-- Ex 5: reverse a NonEmpty list.\n--\n-- PS. The Data.List.NonEmpty type has been imported for you\n\n-- below doesn\'t work\n-- reverseNonEmpty :: NonEmpty a -> NonEmpty a\n-- reverseNonEmpty (h:|tail) = head reversed :| (tail reversed)\n-- where \n-- reversed = reverse (h:tail)\n\n-- below works\nreverseNonEmpty :: NonEmpty a -> NonEmpty a\nreverseNonEmpty (h :| tail) = head reversed :| revTail\n where\n reversed = reverse (h : tail)\n -- revTail = (tail reversed) - this doesn\'t work, but WHY???\n (_:revTail) …
Run Code Online (Sandbox Code Playgroud) 我正在为我们的系统添加一些nagios警报-其中一些警报将监视某些事件触及nginx / apache日志的速度(或从这些日志中解析值。)到目前为止,解决问题的方法是一个简单的shell脚本tail-将日志记录25秒左右到一个临时文件,终止该进程,然后在临时文件上运行awk等。目的是在25秒内获取日志“样本”,然后进行分析。
这显然不理想,这是由于这些临时文件导致磁盘IO的增加-我真正想要的是“增强的” tail -f,它可以在一定的秒数后干净地终止管道。即:
tail -f --interval'5秒'| grep“ / serve”
会将日志拖尾5秒钟,并向我显示所有具有“ / serve”的行。
我以为我可以快速编写一个ruby脚本来完成此操作,但是我想确保没有更统一的方法来完成此操作。从较高的层次上讲,有没有更好的方法可以对最近N秒内的日志进行采样(并且不,我宁愿不解析时间戳等)。
我有这个问题......回答非常好,它也是.但是,奇怪的是,如果日志文件有一个唯一的最后一行(即前几行与前一行不同),它会正确返回最后一行,tail -n 1 "file"
但如果最后几行与最后一行相似,它返回所有相似的行.
让我演示给你看....
它正在阅读的文件是......
frame= 1065 fps= 30 q=1.6 size= 11977kB time=35.54 bitrate=2761.1kbits/s
frame= 1081 fps= 30 q=2.7 size= 12174kB time=36.07 bitrate=2765.0kbits/s
frame= 1097 fps= 30 q=2.7 size= 12332kB time=36.60 bitrate=2759.9kbits/s
frame= 1113 fps= 30 q=3.0 size= 12487kB time=37.14 bitrate=2754.4kbits/s
frame= 1129 fps= 30 q=2.4 size= 12652kB time=37.67 bitrate=2751.3kbits/s
frame= 1145 fps= 30 q=2.4 size= 12824kB time=38.20 bitrate=2749.7kbits/s
frame= 1161 fps= 30 q=2.4 size= 12996kB time=38.74 bitrate=2748.1kbits/s
frame= 1176 fps= 30 q=2.7 size= 13162kB …
Run Code Online (Sandbox Code Playgroud) 这就是我想要做的:
如果我给
$hello world
我,我会得到world
我在做什么是这样的:
tail (unwords (words "$hello world"))
但我得到了 "hello world"
不是world
为了做到这一点,我该怎么办?