Questions tagged «buffer»

该标签用于有关内核缓冲区高速缓存(包括管道缓冲区)的问题。这些用于存储最近访问的文件和/或频繁访问的文件。

13
关闭管道中的缓冲
我有一个脚本,它调用两个命令: long_running_command | print_progress 该long_running_command打印进度,但我不开心吧。我print_progress用来使其更美观(即,我将进度打印在一行中)。 问题:将管道连接到stdout还会激活4K缓冲区,到漂亮的打印程序不会得到任何东西……没有任何东西……没有任何东西 ……:) 如何禁用4K缓冲区long_running_command(不,我没有源)?
395 shell  pipe  buffer 

6
管道缓冲区有多大?
作为注释,我对为什么makefile中的“ | true”与“ || true”用户cjm 产生相同的效果感到困惑: 避免的另一个原因 true是如果命令产生的输出足以填充管道缓冲区,它将阻塞等待true的读取。 我们是否可以找出管道缓冲区的大小?
146 pipe  buffer 

12
vim-如何使用当前粘贴缓冲区执行“更改单词”
我的粘贴缓冲区中有一些文本,例如,我做了一个yw(洋语),现在缓冲区中有“ foo”。 我现在转到“ bar”一词,我想用我的粘贴缓冲区替换它。 要手动替换文本,我可以这样做cw,然后键入新单词。 我该如何做一个“更改单词”,但使用粘贴缓冲区的内容而不是手动键入替换单词? 我现在最好的选择是转到要替换的单词的开头并执行dw(删除单词),然后转到另一个位置并执行yw(猛击单词),然后返回替换区域并执行p(粘贴),这有点笨拙,尤其是当它们不在同一屏幕上时。
86 vim  vi  replace  buffer 

3
您应该同步进行的哲学是否存在真理?同步; 同步; 同步?
当我于2000年在Cisco Systems的Linux上首次被引入Linux时,我得到了该sync命令的优点,该命令用于将缓冲区刷新到磁盘以防止文件系统损坏/数据丢失。不仅那里的同事告诉我,而且大学的朋友告诉我,总是要运行sync“几次”或“一堆”,即5到10次,而不是一次。 从那以后我一直保持着这种习惯,但是,这有什么好处吗?有人听说过吗?而且最重要的是,任何人都可以为您需要sync多次运行才能使其有效的想法提供良好的理论依据/经验证据吗?

3
如何更改Vim缓冲区的名称
是否可以在vim中更改缓冲区的名称? 具体来说,我正在使用Conque Shell在vim中打开shell(每个shell在缓冲区中),并且使用多个shell,我看到: 10: bash - 1 11: bash - 2 在我的缓冲区列表中。我想用更有意义的名称重命名这些缓冲区(例如,“ mercurial”而不是“ bash-2”)。可能吗?
26 vim  buffer 

5
限制Linux中缓冲区缓存的大小
有没有办法告诉Linux内核仅将一定百分比的内存用于缓冲区高速缓存?我知道/proc/sys/vm/drop_caches可以用来临时清除缓存,但是是否有任何永久设置阻止它增长到超过主内存的50%? 我之所以想这样做,是因为我有一台运行Ceph OSD的服务器,该服务器不断从磁盘提供数据,并在几个小时内设法将整个物理内存用作缓冲区缓存。同时,我需要运行将分配大量物理内存(几GB的10s)的应用程序。与普遍的看法相反(请参阅有关缓冲区高速缓存的几乎所有问题的建议),通过丢弃干净的高速缓存条目来自动释放内存并不是瞬时的:缓冲区高速缓存已满时,启动我的应用程序可能需要一分钟( *),在清除缓存(使用echo 3 > /proc/sys/vm/drop_caches)后,同一应用程序几乎立即启动。 (*)根据Vtune在称为的函数中,在启动的这一分钟内,应用程序在新内存中出现故障,但将其100%的时间花费在内核中pageblock_pfn_to_page。此功能似乎与查找大型页面所需的内存压缩有关,这使我相信碎片实际上是问题所在。

1
回滚和回滚缓冲区到底是什么?
像bash和中的程序中的“回滚”和“回滚缓冲区” screen是什么,它们与tty,正在运行的程序以及stdin / stdout / stderr有什么关系? 这是到目前为止(在archlinux wiki中)发现的“ scrollback”的唯一定义: Scrollback是在文本控制台中实现的功能,允许用户返回以查看滚动到屏幕之外的文本行。为此,可以在视频适配器和显示设备之间创建一个专门为此目的创建的缓冲区。回滚缓冲区。 但是,这给我提出了更多问题: 它是在“子例程”中还是在“功能”中表示“功能”? 此回滚缓冲区是否有Unix标准或API? 在程序的“堆栈”中,例如在终端仿真器vim中screen启动的bashLaunch in sshLaunch中,启动了在终端模拟器中启动的这些程序中的哪些程序? 我也用screen,以转储回溯到一个文件中。该文件的顶部有很多空白,并且看来终端仿真器向我显示的“视图”只是缓冲区的底部几行。 这就是为什么这样的程序vim可以临时访问父Shell的回滚缓冲区,从而“清除”整个终端窗口? 还是vim使用自己的回滚缓冲区(以某种方式覆盖在父级回滚缓冲区的顶部)?

2
管道,数据如何在管道中流动?
我不了解数据在管道中的流动方式,希望有人可以澄清其中的情况。 我认为命令管道以逐行方式处理文件(文本,字符串数组)。(如果每个命令本身一行一行地工作。)文本的每一行都通过管道,命令不必等待前一个命令完成对整个输入的处理。 但似乎并非如此。 这是一个测试示例。有几行文字。我将它们大写,并重复每行两次。我这样做cat text | tr '[:lower:]' '[:upper:]' | sed 'p'。 要遵循此过程,我们可以“交互式”运行它-跳过中的输入文件名cat。管道的每一部分都逐行运行: $ cat | tr '[:lower:]' '[:upper:]' alkjsd ALKJSD sdkj SDKJ $ cat | sed 'p' line1 line1 line1 line 2 line 2 line 2 但是完整的管道确实在等我完成输入,EOF然后才打印结果: $ cat | tr '[:lower:]' '[:upper:]' | sed 'p' I am writing... …

3
防止打开不必要的缓冲区
我使用emacs进行日常JavaScript编辑,以便在缓冲区之间切换(使用Cx LEFT和Cx RIGHT),我对此表示满意(即使我很难知道要修改的文件的路径)。 我的问题: 在我一直拥有*scratch*并*Messages*开业的公司中,我认为放入(kill-buffer "*scratch*").emacs可以解决问题,但事实并非如此,您有什么建议吗? 当我打开文件时,我总是执行TAB自动完成功能,因此,每次创建*Messages*包含完成选项的新缓冲区时,如何阻止创建,或更佳的是,如何使emacs杀死它?做出了我的选择? 如果您认为我正在做的事情不是我应该按照顶部所说的那样进行,那请说出您的意见。
18 emacs  buffer 


1
用于在内核空间捕获数据包的缓冲区大小?
通过的手册页tcpdump,看来如果缓冲区已满,内核可以丢弃数据包。我想知道是否: 该大小是可配置的和/或 在哪里可以看到发行版的大小? 在手册页中(为便于参考): ``被内核丢弃的数据包''(这是由于tcpdump运行所在的OS中的操作系统中的数据包捕获机制由于缺少缓冲区空间而丢弃的数据包的数量;如果OS向应用程序报告了该信息;如果不是,它将报告为0)。

3
100%分页到页面缓存中的文件被另一个进程修改后会发生什么
我知道修改页面缓存页面后,它会被标记为脏页面并需要回写,但是在以下情况下会发生什么: 方案: 文件/ apps / EXE是可执行文件,已完全分页到页面缓存中(所有页面都在缓存/内存中),并由进程P执行 然后,连续发行版将/ apps / EXE替换为全新的可执行文件。 假设1: 我假设进程P(以及其他任何具有引用旧可执行文件的文件描述符的人)将继续使用旧的/ apps / EXE内存,并且尝试执行该路径的任何新进程都将获得新的可执行文件。 假设2: 我假设,如果不是文件的所有页面都映射到内存中,那么在出现页面错误要求文件中的页面已被替换之前,一切都会好起来的,并且可能会发生段错误? 问题1: 如果用vmtouch等文件锁定文件的所有页面,这是否会完全改变方案? 问题2: 如果/ apps / EXE位于远程NFS上,那会有什么不同吗?(我认为不是) 请更正或验证我的2个假设,并回答我的2个问题。 我们假设这是一个带有某种3.10.0-957.el7内核的CentOS 7.6盒子 更新:进一步考虑,我想知道这种情况是否与其他脏页情况没有区别。 我猜写新二进制文件的过程将进行读取并获取所有缓存页面,因为它们都已被分页,然后所有这些页面都将被标记为脏。如果它们被锁住了,则在ref计数变为零后,它们将只是无用的页面而占用核心内存。 我怀疑当前执行的程序结束时,其他任何东西都将使用新的二进制文件。假设一切正确,我猜只有在仅部分文件进入页面时才有意思。

2
“ tail -f | iconv -fsjis”不输出任何内容
我想要tail -f一个文件,但是它的内容是sjis编码的,所以我需要将其转换为终端的本机(utf-8)编码。 当我做 尾-fx | iconv -fsjis 没有输出。如 尾x | iconv -fsjis 确实起作用,起初我以为这是一个缓冲问题,但是尝试unbuffer并stdbuf按照关闭管道中的缓冲中的描述进行操作并没有帮助。 实际上,即使将超过10k的数据添加到x中,也不会有输出,所以我想这不是一个缓冲问题(如果我没记错的话,缓冲区是4k),但是iconv仅在以下情况下才开始输出它收到一个EOF。 那么,如何尾部跟踪我的sjis编码文件?
14 tail  buffer 


5
实用程序来缓冲管道中无限数量的数据吗?
有没有可以贴在管道中的实用程序来降低读写速度? $ producer | buf | consumer 基本上,我希望有一个实用程序buf能够尽可能快地读取其输入,并将其存储在内存中,以便在尽可能快地运行consumer时花费它的美好时光producer。
13 pipe  io  buffer 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.