仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 355|回复: 8
打印 上一主题 下一主题

[其他Linux] 来讲讲:Linux体系下管道被承受方封闭的成绩

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 16:11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
功能实在太强了,在配合exec参数或者通过管道重定向到xargs命令和grep命令,可以完成非常复杂的操作,如果同样的操作用图形界面的工具来完成,恐怕要多花十几陪的时间。
Linuxshell中的管道|长短常便利的功效,能够将一个程序的输入作为别的一个程序的输出,如许我们能够将多个命令“拼”在一同,省往了一时文件的烦琐。windows中也有相似的用法,好比dir|more,学过dos命令的应当都晓得吧。
既然是管道,那末就有一个出口和一个出口,各自对应一个使用程序,一般的情形下,出口使用程序的输入应该被出口使用程序全体承受,但在一些特别情形,出口使用程序会提早封闭管道,好比在查询svn的更新日记,只取前己行的时分:
$svnlog|head
----------------
r137|Fwolf|2007-05-2813:38:47+0800(Mon,28May2007)|4lines
更新纪录。
svn:Writeerror:Brokenpipe
因为head只必要用到输出的前10行(默许行数,也可由用户指定),再吸收剩下的输入也是过剩,便提早封闭了管道,管道出口的使用程序svn发明以后,便报错加入了。在这个例子中,毛病信息十分分明,但不是一切使用程序都如许的,好比上面这个:
$find.-name"*rc"|xargs-icat{}|head-1
[Desktop]
xargs:cat:terminatedbysignal13
毛病信息仿佛其实不太好了解,实践上它的意义是:xargs发明它的子历程cat因为旌旗灯号13被中断了。因为xargs自己属于轮回操纵,发明毛病以后就中断了轮回,这是其一;旌旗灯号13是在cat试图向一个已封闭的pipe管道中写数据的时分,体系发生的,cat收到以后就中断了。相似于在cat输入的过程当中,用户按下ctrl+c的效果。
怎样制止这类成绩呢?很复杂,管道前面利用不会提早封闭管道的程序便可,特别是分离xargs利用的时分,它发明堕落就不持续了。好比要用到head能够如许:
$catfile|head-1
固然cat仍旧会被signal13封闭,但bash是不会报错的,以是也只能针对一个文件举行操纵,即便是利用了通配符也只能head到第一个文件。假如要加上对文件的遍历,能够用到for:
$forfilein.*rc;docat$file|head-1;done
cat仍然会被封闭,可是for不会剖析它,持续轮回。head也能够间接指定文件名,如许我们就能够抛开cat了:
$find.-name"*rc"|xargs-ihead-n1{}
团体以为这是一种最完善的办理体例,便可以用到find壮大的搜刮指令,还不会触及到管道的成绩。不外假如文件名没有甚么特别请求,另有一种更复杂的体例:
$head-n1.*rc
在head的参数中间接用通配符指定文件

</p>
虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行。
分手快乐 该用户已被删除
沙发
发表于 2015-1-18 16:31:11 | 只看该作者
我是学习嵌入式方向的,这学期就选修了这门专业任选课。
莫相离 该用户已被删除
板凳
发表于 2015-1-22 22:40:44 | 只看该作者
任何一个叫做操作系统的东西都是这样子构成的:内核+用户界面+一般应用程序。
若天明 该用户已被删除
地板
发表于 2015-1-31 14:17:29 | 只看该作者
Windows?是图形界面的,Linux类似以前的?DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux?也能显示图形界面,也有开始菜单、桌面、图标等。
admin 该用户已被删除
5#
发表于 2015-2-6 19:51:57 | 只看该作者
可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?
冷月葬花魂 该用户已被删除
6#
发表于 2015-2-18 11:51:35 | 只看该作者
熟悉操作是日常学习Linux中的三大法宝。以下是作者学习Linux的一些个人经验,供参考:
深爱那片海 该用户已被删除
7#
发表于 2015-3-6 07:07:45 | 只看该作者
甚至目前许多应用软件都是基于它的。可是没有哪一个系统是十分完美的。
不帅 该用户已被删除
8#
发表于 2015-3-12 22:23:22 | 只看该作者
然我们对Linux的学习首先是通过对它的产生,发展,到今天仍然在不断完善开始的。
透明 该用户已被删除
9#
发表于 2015-3-20 04:20:34 | 只看该作者
Linux只是个内核!这点很重要,你必须理解这一点。只有一个内核是不能构成一个操作系统的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 09:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表