IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> day11:“管道”的妙用 -> 正文阅读

[系统运维]day11:“管道”的妙用

Linux 管道使用竖线|连接多个命令,这被称为管道符。管道的作用是将一个命令的输出作为另一个命令的输入,这样的话就方便多个命令结合使用。

例如:

由于 ls -l /etc 的内容较多,不方便查看,我们可以使用管道,将命令的输出,作为 more命令的输入。

afei@ubuntu:~$ ls -l /etc | more
total 1116
drwxr-xr-x  3 root root    4096 Aug 19 03:40 acpi
-rw-r--r--  1 root root    3028 Aug 19 03:29 adduser.conf
......
内容较多,省略显示
drwxr-xr-x  2 root root    4096 Aug 19 03:40 calendar
drwxr-s---  2 root dip     4096 Aug 19 03:40 chatscripts
--More--

注意:看到这里的你,不要去尝试用重定向符号替代管道符号使用,后果会很糟糕,你将把重定向指向的命令重写破坏掉。

一个管道明令使用的案例:

(以下参考C语言中文网)

当我们需要备份 wiki 数据库的文件的时候,以 mysql 为例,可以这样操作:

mysqldump -u root -p '123qwe' wiki > /tmp/wikidb.backup
gzip -9 /tmp/wikidb.backup
scp /tmp/wikidb.backup username@remote_ip:/backup/mysql/

上述这组命令主要做了如下任务:

  • mysqldump 命令用于将名为 wike 的数据库备份到文件 /tmp/wikidb.backup;其中-u-p选项分别指出数据库的用户名和密码。
  • gzip 命令用于压缩较大的数据库文件以节省磁盘空间;其中-9表示最慢的压缩速度最好的压缩效果。
  • scp 命令(secure copy,安全拷贝)用于将数据库备份文件复制到 IP 地址为 remote_ip 的备份服务器的 /backup/mysql/ 目录下。其中username是登录远程服务器的用户名,命令执行后需要输入密码。

上述三个命令依次执行。然而,如果使用管道的话,你就可以将 mysqldump、gzip、ssh 命令相连接,这样就避免了创建临时文件 /tmp/wikidb.backup,而且可以同时执行这些命令并达到相同的效果。

使用管道后的命令如下所示:

mysqldump -u root -p '123456' wiki | gzip -9 | ssh username@remote_ip "cat > /backup/wikidb.gz"

这些使用了管道的命令有如下特点:

  • 命令的语法紧凑并且使用简单。
  • 通过使用管道,将三个命令串联到一起就完成了远程 mysql 备份的复杂任务。
  • 从管道输出的标准错误会混合到一起。

上述命令的数据流如下图所示:

?(参考C语言中文网)

?几个用例:

当要查看的信息比较多的时候,可以使用管道,利用 grep 来进行筛选,例如,我们要在众多的配置文件中找到跟网络相关的,可以如下操作

afei@ubuntu:~$ ls -l /etc | grep network
drwxr-xr-x  6 root root    4096 Aug 19 03:38 network
drwxr-xr-x  8 root root    4096 Aug 19 03:30 networkd-dispatcher
-rw-r--r--  1 root root      91 Dec  5  2019 networks
afei@ubuntu:~$ 

当然,管道是可以和重定向符号一起合并使用的,如下,可以将上述示例的内容保存到文件 file.text 中

afei@ubuntu:~$ ls -l /etc | grep network > file.text
afei@ubuntu:~$ 

统计文件中字符的行数,可如下操作:

afei@ubuntu:~$ cat file.text | wc -l
3
afei@ubuntu:~$

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-10-20 12:54:25  更:2021-10-20 12:55:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:26:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码