【问题标题】:Is there an equivalent of tail -f on Windows?在 Windows 上是否有相当于 tail -f 的功能?
【发布时间】:2016-04-05 15:20:36
【问题描述】:

很多时候我发现自己不得不在 Windows 上跟踪日志文件的演变。有没有相当于Linux的

tail -f <filename>

Windows 终端上的命令,最好无需安装外部软件?其他 SO 帖子讨论了安装第三方程序。

【问题讨论】:

  • 编辑:最好不用安装第三方软件
  • 写一个 bat 文件或使用 PowerShell 算作安装外部软件吗?如果他们算数,那么答案是无法完成。
  • PowerShell 是的,可以在简单 cmd 中运行的 .bat 文件是受欢迎的,但最好还是不要太多开销
  • Microsoft 提供了一个 tail 版本(作为资源工具包的一部分,IIRC),如果限制专门针对第三方软件而不是所有未作为 Windows 的一部分提供的软件,这可能是合适的.

标签: windows shell command-line-interface


【解决方案1】:

在 Powershell 中,您可以使用带有 -Wait 标志的 Get-Content

Get-Content filename.log -Wait

您可以将 Get-Content 缩短为 gc。建议作为可能重复的那个问题有一个答案,其中提到了这个和一些有用的额外参数 - 见https://stackoverflow.com/a/188126。不过,我不确定它是否真的是重复的,因为这个问题是关于 Linux tail 的一般 Windows 替代品,而不是关于 tail -f

【讨论】:

  • 这不是等效的,因为它将整个文件显示到标准输出,这对于多兆字节长的日志文件非常无用。 tail -f 不会这样做。
  • 这可以与 tail 选项一起使用 Get-content 文件名 -Wait -Tail 5。这模拟了 tail -f 行为
【解决方案2】:

在 Powershell 中使用:

cat .\<file_name> -Tail 10 -Wait

【讨论】:

  • 这个只显示最新的行,接受的答案从头开始显示整个文件,然后是新添加的行。这就是我的方式。谢谢。
【解决方案3】:

是的。你可以在 windows 上使用tail,这是一个很小的代价来访问 windows 上的许多 GNU 工具以及tail。因为它与git for windows 捆绑在一起,所以它经过大量测试并且很稳定。

首先从https://gitforwindows.org/安装git-bash

接下来,使用 Windows 路径将 git-bash 放入并重新启动您的工作站:

setx path "%path%;C:\Program Files\Git\bin\"

现在,您应该可以使用tail -n 20 -F logging_file.log 跟踪任何文件并显示最后 20 行。

如果您使用的是 Linux/Unix,并且想要连续查看日志,您可以使用以下命令: ssh username@10.15.3.3 'bash -c "tail -n 20 -F /c/Users/username/Desktop/logging_file.log"'

【讨论】:

  • 其他替代品:适用于 Linux、Cygwin、MinGW 的 Windows 子系统。
  • 是的..这些也太棒了..我通常只坚持git-bash,主要是基于这样的假设,因为git-bash是随Windows默认安装的git安装的,它必须受到更多的考验。 git-bash 实际上使用了mingw64。这些解决方案也有点繁重..所以可能容易出现更多错误..所以除非必要,否则我尽量不使远程虚拟机上的事情复杂化..想知道..您是否找到了使用 WSL 的任何主要原因,特别是因为 @987654335 @在这里的时间更长了吗?大约一年前我尝试过WSL.. 它到处都是错误..
  • 它拥有完整的、真正的 Linux 支持。它在实际的 Linux 内核上运行实际的 ELF 二进制文件。由于不兼容,某些软件包根本无法移植到 Cygwin 或 MinGW,但它们在 WSL 下可以正常工作。
  • 在 WSL 中运行 tail -f(即使在最新的 Ubuntu 18.04.1 版本中)会导致我的 Windows 进程(一个 AutoHotkey 脚本)在附加文件时因异常而崩溃。 WSL 仍然有问题。
  • 嗯,tail -f 以前对我来说工作得很好,直到现在。我不得不重新安装 W10,目前我已经安装了 WSL Ubuntu 18.04.3。该命令仅在写入 Windows 中的日志文件的进程关闭并留下尾文本文件时打印输出。我不知道自上一版本以来是否发生了一些变化
【解决方案4】:

我知道你说没有外部程序。但是对于那些已经安装了 Windows Subsystem for Linux (WSL) 并且他们无法使 tail 在 Ubuntu 16.04 LTS 中正常工作的人,我发现 this thread 有人找到了解决方法:

万一有人通过谷歌发现这个,似乎 WSL 中的 inotify 支持仅限于 WSL 文件访问,而不是 win32 文件访问,所以你必须告诉 tail 不要使用它:

tail -f /mnt/c/path/to/file ---disable-inotify

(是的,三个破折号)

【讨论】:

    【解决方案5】:

    Get-Content 文件名 -Wait -tail 1

    正如 nikobelia 所说,这对我有用,只是添加了 tail 选项,它按预期工作!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 2012-06-18
      • 2023-03-31
      • 1970-01-01
      • 2014-04-02
      • 2019-10-31
      • 1970-01-01
      相关资源
      最近更新 更多