Questions tagged «pipe»

Unix管道连接两个进程的文件描述符。使用在<unistd.h>中声明的POSIX pipe()函数创建管道。外壳程序使用“ |”在进程之间提供管道创建。

3
合并来自多个文件/管道的输入而不会阻塞行或阻塞?
是否有一种工具可以从多个文件或管道中获取输入并将其写入stdout,而不会阻塞读取,从而使各个输入行完整无缺?我基本上想将一堆输入多路复用到一个输出,而不会破坏线路。 $ combine file1 &lt;(prog2) ... &gt; nice-output.txt 我不在乎输出的顺序 只要某些输入有数据,它就不应阻塞 它应该是有效的(即,我可能会否决您的Perl一线投票;)
9 utilities  pipe 

1
Unix管道另一端的进程名称?
如果两个过程通过管道连接, &gt; cmd1 | cmd2 有什么方法cmd1可以找出管道另一边的过程名称(或PID cmd2)? 另外,反之亦然,是否有任何方法cmd2可以获取的名称/ PID cmd1? 我知道isatty(3)要检查输出是否到达终端(或输入来自终端),所以我想知道是否有办法找到更多有关另一端的信息。
8 linux  process  pipe  proc 

1
如何缓冲切割?
我只想从我的邮件日志文件中获取以“ @ xyz.nl”结尾的电子邮件地址。为此,我要做: # tail -f /var/log/mail.log | grep --i --line-buffered "@xyz.nl" | cut -d '@' -f 1 | cut -d '&lt;' -f 2 用grep进行--line-buffered是必需的,因为否则它将被缓冲,因为管道不被视为终端。Grep将输出以下行: Aug 29 11:56:01 localhost postfix/smtp[4124]: 05491500123: to=&lt;someone@xyz.nl&gt;, relay=123.456.123.456[123.456.123.456]:25, delay=2, delays=0.4/0/0.4/1.2, dsn=2.0.0, status=sent (250 2.0.0 u7T9twxN074009 Message accepted for delivery) 然后,第一个切割将使: Aug 29 11:56:01 localhost postfix/smtp[4124]: …
8 pipe  cut 

1
为什么文件到命名管道之间的重定向不起作用,而管道到cat却起作用?
这是使用nc的Unix中的简单回显服务器: mkfifo fifo cat fifo | nc -k -l 4458 -v | cat &gt;fifo (基于此) 如我所见,数据流的工作方式如下: fifo (my named pipe) | | (using cat) | v nc | | (using cat) | v fifo 这里是一个问题:为什么这不起作用? nc -k -l 4458 -v &gt;fifo &lt;fifo 你会发现,如果试图telnet以localhost对4458,你会得到一个“连接被拒绝”的错误。
8 pipe  socket  fifo 

5
是否有工具可根据要求将输出动态重定向到新文件
我目前正在将监视工具的输出重定向到文件,但是,我想做的是根据我的请求(使用键绑定)将该输出重定向到新文件,而无需停止所说的工具。 就像是 monitor_program | handle_stdout 在哪里handle_stdout,我可以定义一个新文件,将日志放在特定位置。 我知道我可以轻松编写它,但是我想知道是否已经有工具允许这样做。


4
如何获得stdin的大小?
我要压缩一个大目录,并且我想知道结果文件的大小。 我试过使用du: $ tar -cv dir | du -h - du: cannot access '-': No such file or directory 然后,我尝试使用文件版本“-”: $ tar -cv dir | du -h /dev/stdin 1.0K 我确定这个数字不正确。如何获得stdin的大小?

4
分割不同命令的输入并合并结果
我知道如何合并不同命令的结果 paste -t',' &lt;(commanda) &lt;(commandb) 我知道将相同的输入传递给不同的命令 cat myfile | tee &gt;(commanda) &gt;(commandb) 现在如何结合这些命令?这样我就可以 cat myfile | tee &gt;(commanda) &gt;(commandb) | paste -t',' resulta resultb 说我有一个文件 myfile: 1 2 3 4 我想制作一个新文件 1 4 2 2 3 4 3 2 6 4 1 8 我用了 cat myfile | tee &gt;(tac) &gt;(awk …

3
使用| $ variable中的竖线字符使它成为bash中的另一个参数;如何逃脱呢?
我有一个这样的bash脚本 export pipedargument="| sort -n" ls $pipedargument 但是它给出了错误 ls: |: No such file or directory ls: sort: No such file or directory 似乎将的内容"| sort -n"视为传递给的参数ls。 我如何才能将其转义,以便将其视为常规管道命令? 我试图有条件地设置$pipedargument。我想我可以有条件地执行命令的不同版本,但仍然想知道是否有办法使上述工作正常进行?

1
管道和重定向绑定优先级与分词,合词等有关?
我知道运算符';','&','&amp;&amp;'或'||'的相对绑定优先级 http://www.gnu.org/software/bash/manual/bashref.html#Lists 但是当管道与“ &amp;&amp;”一起出现在图片中时,我很难理解绑定强度,或者偶然发现了正确的命令,或者只是放弃了。 '|'的绑定优先级是什么 和“&gt;”与上述相比? 我感到困惑的示例: ls _thumbnails/video.mp4.jpg 2&gt;/dev/null &amp;&amp; echo "thumbnail already generated. Not regenerating" \ &amp;&amp; exit \ || ffmpeg_thumbnail_create video.mp4 2&gt;/dev/null \ &amp;&amp; ls _thumbnails/video.mp4.jpg \ &amp;&amp; echo "Thumbnail successfully created" \ &amp;&amp; exit \ || echo "Thumbnail creation failed" \ | tee ~/thumbnails.log 上面的目标是在且仅当一个缩略图不存在时创建缩略图(我每天运行一次cronjob)。而且我不喜欢没有错误时ffmpeg的大量输出(这不是Unix方式)。还有其他情况,所以不要开始给我建议,这些建议使用单独的语句或特定于这些程序的特殊选项。我想了解绑定优先级。


3
我可以通过管道将任意两个进程互相连接吗?
在这个页面,从设计和4.4BSD操作系统的实现,据说: 管道和套接字之间的主要区别在于,管道需要一个公共的父进程来建立通信通道 但是,如果我记录正确,则创建新流程的唯一方法是fork使用现有流程。因此,我真的看不到两个进程如何没有一个共同的祖先。那么,我认为任何一对进程都可以通过管道相互传递对吗?
8 linux  process  pipe  bsd  fork 

2
如何将通知通过管道发送到状态栏中?
我正在尝试在Arch Linux中使用图形化的最小通知系统。具体来说,我对诸如dzen2或conky之类的程序感兴趣,这些程序允许使用更多基于文本的状态栏。 是否有可能管的通知(如libnotify,notify-send除外),从像dzen2和Conky的程序作出了状态栏?有没有我可以尝试的更简单或更有文献记载的方法? 我目前使用Openbox,但希望偶尔切换WM,因此,与WM无关的建议将不胜感激。

5
使用标准命令行工具解析命令输出中的所有IP地址
我有几个包含一堆IP地址的日志文件。我希望能够通过程序来匹配和解析IP地址,从而传递数据。 IE cat / var / log / somelogfile | 主办 这会变成一条线 10:13被10.13.13.10访问 进入 由myhostname.intranet访问的10:45 我的想法是将sed和host结合使用可能有一种方法,但是我不知道该怎么做。我知道我可以编写一个简单的脚本来做到这一点,但我宁愿能够使用内置工具。有什么建议么?
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.