“less”命令显示输出所花费的时间

2024-02-08

我有一个可以产生大量输出的脚本。脚本在该点暂停几秒钟T.

现在我正在使用less命令来分析脚本的输出。 所以我执行./script | less。我让它运行足够的时间,以便脚本完成执行。

现在,我按 Pg Down 键查看 less 命令的输出。令人惊讶的是,当滚动到这一点时T我注意到输出再次暂停了几秒钟。

该脚本不需要任何输入,并且在我开始分析 less 的输出时肯定已经完成。

有人可以解释当脚本执行完毕时, less 的输出中几秒钟的暂停是如何明显的吗?


您的脚本正在与less via a pipe。管道是连接两个端点的内存中字节流:您的脚本和less程序,前者将输出写入其中,后者从中读取。

由于管道是在内存中的,所以如果它们任意增大,那就不好受了。因此,默认情况下,在任何给定时刻管道内可以写入的数据(已写入,但尚未读取)都是有限的。 Linux 上默认为 64k。如果管道已满,并且您的脚本尝试写入该管道,则写入会阻塞。所以你的脚本实际上并没有工作,它在执行某个操作时在某个时刻停止了write() call.

如何克服这个问题?调整默认值是一个糟糕的选择;相反,使用的是在读取器中分配一个缓冲区,以便它读入缓冲区,释放管道,从而让写入程序工作,但只向您显示(或处理)输出的一部分。less有这样一个缓冲区,并且默认情况下会自动扩展它,但是,它不会在后台填充它,它只会在您读取输入时填充它。

So what would solve your problem is reading the file until the end (like you would normally press G), and then going back to the beginning (like you would normally press g). The thing is that you may specify these commands via command line like this:

./script | less +Gg

但您应该注意,您必须等到整个脚本的输出加载到内存中,因此您将无法立即查看它。less对此还不够复杂。但如果这就是您真正需要的(浏览输出的开头,而./script仍在计算其结束),您可能需要使用临时文件:

 ./script >x & less x ; rm x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“less”命令显示输出所花费的时间 的相关文章

  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • OSX bash 最小化窗口

    在 Mac 中并使用 bash shell 我想执行一个包含单个命令 启动 Jupyter Lab 的文件并立即最小化终端窗口 有没有办法在不安装第三方软件的情况下做到这一点 是的 只需使用osascript https ss64 com
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • 动态参数值取决于另一个动态参数值

    启动前提 非常严格的环境 Windows 7 SP1 Powershell 3 0 使用外部库的可能性有限或不可能 我正在尝试重写之前创建的 bash 工具 这次使用 PowerShell 在 bash 中 我实现了自动完成功能 以使该工具
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • 如何查找所有以句号结尾的单词?

    我有一个包含许多以 a 结尾的单词的文件 其中大部分是缩写 例如 etc p s 如何输出一个仅显示一次所有这些单词的列表 所有单词前面都有一个空格 因此可以使用该空格来查找单词的开头 没有一个单词出现在该行的开头 文件中没有句子 因此句点
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • 如何从 bash 数组中删除元素而不展平数组

    我想创建一个采用 bash 数组的函数 如下所示 a element zero element one element two 并删除一个元素 如 元素一 并留下一个数组 如下所示 a element zero element two 这样
  • 使用 MYSQL 将 h:mm pm/am 时间格式插入数据库

    我正在尝试将以 h mm am pm 格式写入的时间插入到存储为标准 DATETIME 格式 hh mm ss 的数据库中 但我不知道如何将发布的时间转换为标准格式所以数据库会接受它 这是我到目前为止一直在尝试的 title POST in
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • 如何授予 apache 使用 NTFS 分区上的目录的权限?

    我在一台带有 20GB 硬盘的旧机器上运行 Linux Lubutu 12 10 我有一个 1 TB 外部硬盘 上面有一个 NTFS 分区 在该分区上 有一个 www 目录 用于保存我的网页内容 它在启动时自动安装为 media t515
  • 为arm构建WebRTC

    我想为我的带有arm926ej s处理器的小机器构建webrtc 安装 depot tools 后 我执行了以下步骤 gclient config http webrtc googlecode com svn trunk gclient s
  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • docker容器大小远大于实际大小

    我正在尝试从中构建图像debian latest 构建后 报告的图像虚拟大小来自docker images命令为 1 917 GB 我登录查看尺寸 du sh 大小为 573 MB 我很确定这么大的尺寸通常是不可能的 这里发生了什么 如何获
  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • bash中的用户名、密码程序

    我有一个程序 要求用户输入用户名和密码 然后将其存储在文本文件中 第一列是用户名 第二列是密码 我需要一个命令 在用户输入用户名和新密码时替换密码 如下我拥有的 bin bash admin menu Register User echo

随机推荐

  • python“set.intersection”对于n个集合的时间复杂度

    我想知道该问题的复杂性set intersection蟒蛇 我查看了 python 的文档和在线 wiki 但没有找到该方法对于多组的时间复杂度 The python wiki 关于时间复杂度列表 https wiki python org
  • 为 ComboBox 项目分配值

    我目前正在尝试为 winform 的货币制作一个下拉框 组合框 这是我到目前为止所拥有的 但我注意到下拉框的数据绑定版本有一个特殊选项 所以我想知道是否可以创建与此类似的东西 而无需对整个字符串进行比较或在数据库中创建表 列表和组合框可以包
  • 遍历并修改C json字符串

    在 C 中遍历和修改 JSON 字符串的正确方法是什么 具体来说 我有一个字符串 body buf 打印出来时 print length d n s n body len body len body buf 它看起来像这样 length 1
  • 如何在 Android 中共享文本和图像

    我想分享我的应用程序的内容 文字与图像 对于这个问题 我写了下面的代码 Intent sharingIntent new Intent Intent ACTION SEND sharingIntent setType sharingInte
  • 如何在 Symfony2 中自定义/本地化断言消息?

    当你使用 Assert NotBlank约束并且给定字段为空 那么您会收到错误 该值不应为空 我想在应用程序范围内更改此消息 而不更改 Symfony2 源代码 如何做到这一点 自定义验证错误消息非常简单 但乍一看似乎并不棘手 默认区域设置
  • 从 sql 文件恢复单个表转储

    我有 sql 文件的完整转储 例如dump full sql尺寸的1 3GB 它有一些像这样的表 dancing core spice dancing sea beast forde clear one forde super now 现在
  • 枚举mysql查询中使用的表?

    有没有办法枚举mysql查询中使用的表 可以说我有疑问 SELECT FROM db people people facts pf INNER JOIN db system connections sm ON sm source id pf
  • 如何查看 Chrome 扩展程序的总安装数?

    我正在通过 Chrome 网上商店分发 Chrome 扩展程序 但我无法找到网上商店告诉我我的扩展程序有多少 总安装量 的地方 我想知道自从我第一次上传扩展程序以来总共有多少人安装了它 在谷歌上进行一些快速搜索 在谷歌帮助部分中找到了以下文
  • Mac OS 和 FreeBSD 之间 kqueue 处理 fifo 的差异?

    我正在开发一个应用程序 该应用程序使用 fifos 进行 IPC 并使用事件通知 API 例如 epoll 或 kqueue 来监视 fifos 以获取要读取的数据 应用程序期望 如果 fifo 的写入器终止 则读取器将通过事件通知 API
  • xcopy 包含文件夹

    这应该是一个简单的问题 但我一直找不到答案 我想将文件夹 不仅仅是内容 复制到桌面 我尝试过的所有内容都只包含该文件夹的内容 我已经尝试了下面的内容 但内容仍然只是复制 xcopy C Users user Folder C Users u
  • Sencha Touch - 需要嵌套列表示例

    我需要一个简单的嵌套列表视图示例 类似这样的事情 source roosteronacid com http www roosteronacid com mockup png 当您单击某个项目时 您将过渡 滑动 到包含另一个列表的下一个视图
  • 在 Eclipse“作为小程序运行”中也更改我的小程序的大小

    我目前正在做我的第一个小程序 在测试结果时 我希望能够在预览窗口中的 eclipse 中运行它 而不是总是将小程序部署到 jar 中并在浏览器中打开页面 浏览器缓存杀了我 我总是需要重新启动浏览器 不管怎样 当我尝试使用 运行方式 gt J
  • 为什么不能推断这些泛型类型?

    我有以下代码 public static class CardView public static object Column
  • 如何在 Matplotlib 中为文本添加动画?

    我正在尝试为 Matplotlib 图中的文本框设置动画 但似乎无法使其工作 有谁知道如何正确执行此操作 下面是一个例子 from matplotlib import animation import matplotlib pyplot a
  • 从网络摄像头录制视频流并将 blob 上传到服务器

    所以我有一个网站可以记录来自用户网络摄像头的视频流并将其转换为 blob 使用getUserMedia 我现在想将此 blob 发送到服务器 以便可以保存和处理视频 我在通过 ajax 发送 blob 文件时遇到问题 我尝试过使用 form
  • 如何使用 AJAX 更新选择菜单而不使用表单内的

    我正在使用 ajax 调用来更新选择菜单 ajax 调用通过从不同的 php 文件运行来将列表放入我的选择菜单中 这是 JS 插入片段 if req status 200 document getElementById countydiv
  • Pyplot:共享轴并且子图之间没有空间

    这与 或者更确切地说是后续 有关matplotlib 中共享轴方形子图的新 pythonic 风格 https stackoverflow com questions 13629994 new pythonic style for shar
  • 如何对使用层方法的 lambda 逻辑进行单元测试?

    您好 我有 AWS Lambda 我想为其添加一个层 我希望能够只测试 lambda 的单个方法 然而 其中许多都使用层逻辑 因此在我看来这并不容易 做到这一点的最佳方法是什么 一种方法是封装层 主机位于某处并将其用作依赖项 既然如此 为什
  • Delphi XE - TRibbon 操作始终将焦点发送到 MainForm

    当我将 TRibbon 控件放置在不是应用程序 MainForm 的窗体上时 TRibbon 的操作 即剪切 粘贴 将始终在执行操作后将焦点返回到 MainForm 即使保存 TRibbon 的 TForm 不是 MainForm 的子级
  • “less”命令显示输出所花费的时间

    我有一个可以产生大量输出的脚本 脚本在该点暂停几秒钟T 现在我正在使用less命令来分析脚本的输出 所以我执行 script less 我让它运行足够的时间 以便脚本完成执行 现在 我按 Pg Down 键查看 less 命令的输出 令人惊