设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
快捷导航
发布信息
搜索
搜索
首页
优惠促销
云服务器
独立服务器
站群服务器
母鸡服务器
服务器托管
全球云服务器
技术文档
联系
每日签到
本版
文章
帖子
用户
主机测评网
»
论坛
›
技术文档
›
其他教程
›
在Linux服务器中使用pipe和命名pipe示例
返回列表
发新帖
在Linux服务器中使用pipe和命名pipe示例
[复制链接]
|
主动推送
75
|
0
|
2024-9-11 15:04:01
|
显示全部楼层
|
阅读模式
Linux服务器中最强大的shell操作符之一就是pipe。在本文中,我们将看到常规pipe和命名pipe的工作原理,如何使用它们以及它们之间的区别。
竖条符号|表示pipe。由于pipe的存在,你可以将一个命令的输出作为输入,并将其送至另一个命令。换句话说,pipe是一种重定向的形式,在Linux中用于将一个程序的输出送到另一个程序中进行进一步处理。
当然,你并不局限于单一的pipe命令。你可以随意堆叠它们。
pipe或未命名的pipe命令的语法是任意两个命令之间的|字符。
command1 | command2 | ... | commandN
pipe在Linux中是如何工作的
为了了解pipe是如何工作的,让我们来看看下面的例子。
假设我们有一个目录,里面有很多不同类型的文件,我们想知道这个目录中某一类型的文件有多少。我们想知道这个目录中有多少个特定类型的文件。我们可以使用ls很容易地得到一个文件列表。
ls
为了区分我们感兴趣的文件类型,我们将使用grep。我们要找到名字或文件扩展名中含有 "txt "的文件。
我们将使用特殊的shell字符|来引导ls的输出到grep。
ls | grep txt
ls的输出没有被发送到终端窗口。因此,结果并没有显示在屏幕上,而是被重定向到grep命令的输入端。我们在上面看到的输出来自grep,它是这个链中的最后一条命令。
现在,让我们开始扩展我们的链。我们可以通过添加wc命令来计算 "txt "文件。我们将在wc中使用-l选项(行数)。
ls | grep txt | wc -l
grep不再是链中的最后一条命令,所以我们看不到它的输出。grep的输出被输入到wc命令中,我们在终端窗口中看到的输出来自wc。我们在终端窗口中看到的输出来自于wc。wc报告说,在目录中有2个文件 "txt"。
什么是Linux中的命名pipe
顾名思义,这些都是有名字的pipe。普通pipe和命名pipe的一个关键区别是,命名pipe在文件系统中是存在的。也就是说,它们以文件的形式出现。
命名pipe是一种使用被赋予特定名称的pipe将信息从一个计算机进程传递到另一个计算机进程的方法。命名pipe也被称为FIFO,即First In, First Out的意思。
您可以使用mkfifo命令创建一个命名pipe。例如
mkfifo mypipe
你可以通过文件权限部分的p位来判断一个文件是否是一个命名的pipe。
ls -l mypipe
命名pipe实际上是文件系统本身的文件。与标准pipe不同,命名pipe是作为文件系统的一部分被访问的,就像其他类型的文件一样。
命名pipe的内容驻留在内存中,而不是写入磁盘。只有当pipe的两端都被打开时,它才会被传递。而且在pipe的另一端被打开并读取之前,你可以多次向pipe写入内容。通过使用命名pipe,你可以建立一个进程,在这个进程中,一个进程向一个pipe写入,另一个进程从一个pipe读取,而不必太过担心尝试时间或仔细协调它们的交互。
为了了解命名pipe是如何工作的,让我们来看看下面的例子。首先,让我们创建一个命名pipe。
mkfifo mypipe
现在让我们用这个pipe来消耗消息。
tail -f mypipe
打开另一个终端窗口,给这个pipe写一条信息。
echo "hi" >> mypipe
现在在第一个窗口中你可以看到打印出来的 "hi"。
因为是pipe,消息已经被消耗掉了,如果我们检查文件大小,可以看到还是0。
ls -l mypipe
由于命名的pipe只是一个文件,要删除一个文件,我们可以使用rm命令。因此,要删除我们在前面的例子中创建的pipe,我们将运行以下命令
rm mypipe
何时使用常规或命名pipe
使用常规pipe而不是命名pipe取决于我们要寻找的特性。其中一些可以是持久性,双向通信,有一个文件名,创建一个过滤器,以及限制访问权限等等。
例如,如果我们想多次过滤一个命令的输出,使用匿名pipe似乎是最合适的选择。另一方面,如果我们需要一个文件名,而又不想把数据存储在磁盘上,我们要找的是一个命名pipe。
总之,下一次你在Linux终端处理命令时,发现自己要在命令之间移动数据时,希望pipe能让这个过程变得快速而简单。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
luly靓
118
主题
0
回帖
10
积分
新手上路
新手上路, 积分 10, 距离下一级还需 40 积分
新手上路, 积分 10, 距离下一级还需 40 积分
积分
10
加好友
发消息
回复楼主
返回列表
网络技术教程
软件使用教程
Windows教程
Centos教程
Ubuntu教程
Linux其他教程
综合教程
其他教程
其他文档
服务器商家推荐
华夏互联
蓝速云
米图云
全球云
文章
1
苹果电脑MAC系统登录Windows远程桌面
2
Debian拓展硬盘工具。cloud-utils-growpart、xfsprogs
3
安卓Android手机怎么使用V2rayNG?
4
WINDOWS系统电脑怎么使用WINXRAY?
5
notepad++.8.5.7编辑器,代码编辑器
6
DirectX修复工具增强版_V4.3.0.40864版本DLL修复工具C++安装
7
Visual C++运行库合集包完整版VisualCppRedist_AIO_x86_x64
8
ChromeSetup谷歌浏览器一键安装