第 11 节重定向和文件的查找
11.1 文件描述符 0,1,2
先来几句在 Linux 圈内的名言
1, 执行命令后没有信息提示最好的提示
2, 在 Linux 系统中一切皆文件
3, 搞 Linux 运维的一定要会看懂日志与报错信息, 哪怕它是英文的
11.1 文件描述符定义
文件描述符: 也就是系统内核为了高效管理系统中的文件, 给每个打开的文件分配一个非负整数, 便于管理
常用的文件描述符:
0--> 标准输入, 默认是键盘, 鼠标
1--> 标准输出, 默认是显示器
2--> 错误输出, 默认是显示器
单个进程最多可以打开多少个文件是有限制的, 可以这样处理:
例 1:
- [[email protected]ode-1 ~]# ulimit -n
- 1024
- [[email protected] ~]#ulimit -n 20480 #临时修改一个进程最多可以同时打开的文件数为 20480
- [[email protected] ~]# VIM limits.conf 和 nproc.conf
- # 可以通过修改这两个文件后重启生效
11.2 重定向的含义 - 管道的使用 - tee 命令
11.2.1 输出重定向
定义: 将命令的输出结果本来显示在显示器, 现重新定向保存到指定的文件里
重定向输出使用 ">" ">>" 操作符号
语法:
> 文件名 #表示将标准输出的内容, 写到后面的文件中, 如果此文件名已经存在, 将会覆盖原文件中的内容
>> 文件名 #表示将标准输出的内容, 追加到后面的文件中. 若重定向的输出的文件不存在, 则会新建该文件
此项内容在 RHCSA 中涉及, 比较重要
例 1: 查看当前主机的内存信息保存到 meminfo.txt 中
[[email protected] ~]# cat /proc/cpuinfo> CPU.txt
例 2: 将内核的版本信息追加到 CPU.txt
- [[email protected] ~]# uname -r>> meminfo.txt
- [[email protected] ~]# cat meminfo.txt
- total used free shared buff/cache available
- Mem: 1.8G 85M 1.6G 9.4M 98M 1.6G
- Swap: 2.0G 0B 2.0G
- 3.10.0-1062.12.1.el7.x86_64
例 3: 清空文件 meminfo.txt 内容
[[email protected] ~]#> meminfo.txt
曾经遇到接手一位客户的技术管理过的机器, 这位技术神人走之前不光运行了 history -c 还 > .bash_history
11.2.2 输入重定向
输入的内容方式不再从键盘上输入了, 举三个有用的例子
例 4:
- [[email protected] ~]# grep Mem meminfo.txt
- Mem: 1.8G 85M 1.6G 9.4M
- 98M 1.6G
例 5: 往 MySQL 指定数据库中导入数据
[[email protected] ~]#MySQL -u root -p123456 hellodb <hellodb.sql
例 6: 以 <<EOF 开始, 以 EOF 结尾的特殊符号之间是输入内容 .
- [[email protected] ~]# [[email protected] ~]# cat> aa.txt <<EOF
- 123
- 321
- 456
- 654
- EOF
- [[email protected] ~]# cat aa.txt
- 123
- 321
- 456
- 654
实际上成对的 EOF 可以用其他符号代替, 但必须成对出现
11.2.3 错误重定向
作用: 错误信息不再只显示在显示器上而是保存到特定文件中
操作符:
错误重定向: 2>
标准输入: 1 < 标准输出: 0>
例 7: 错误重定向的用法
- [[email protected] ~]# ls /etc/passwd 111> error.txt
- ls: cannot access 111: No such file or directory
只显示在显示器上
- [[email protected] ~]# cat error.txt
- /etc/passwd
将错误重定向在指定的文件中
- [[email protected] ~]# ls /etc/passwd 111 2> error.txt
- /etc/passwd
- [[email protected] ~]# cat error.txt
- ls: cannot access 111: No such file or directory
11.2.4/dev/null 与 / dev/zero 的作用
/dev/null: 写入此文件的内容会永久消失
/dev/zero: 会提供无限的空字符, 在扩展 swap 时可以用到
例 8:
- [[email protected] ~]# crontab -l
- /3 */sbin/ntpdate -u times.aliyun.com &> /dev/null
- [[email protected] ~]# dd if=/dev/zero of=allswap bs=1M count=512
- 512+0 records in
- 512+0 records out
- 536870912 bytes (537 MB) copied, 2.73801 s, 196 MB/s
- [[email protected] ~]# mkswap allswap && swapon -a
- [[email protected] ~]# free -h
- total used free shared buff/cache available
- Mem: 1.8G 85M 1.1G 9.3M 624M 1.5G
- Swap: 2.5G 0B 2.5G
11.2.5 管道 | 的使用
语法: command-a | command-b | command-c | ......
注意:
1, 管道命令只处理前一个命令正确输出, 不处理错误输出
2, 管道右边的命令, 必须能够接收标准输入的数据流命令才行
3, 管道符可以把两条命令连起来, 它可以链接多个命令使用
4, 前一个命令的输出是作为后面命令的输入来用的
例 9:
- [[email protected] ~]# yum list |grep jdk
- copy-jdk-configs.noarch 3.3-10.el7_5 base
- java-1.6.0-openjdk.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base
- java-1.6.0-openjdk-demo.x86_64 1:1.6.0.41-1.13.13.1.el7_3 base
- ......
11.2.6 tee 命令的用法
功能: 读取标准输入的数据, 并将其内容输出成文件.
语法: tee [-a][文件...]
参数:
默认是覆盖指定文件的内容
-a, --append 内容追加到给定的文件而非覆盖
例 10:
- [[email protected] ~]# df -hT | tee -a meminfo.txt
- [[email protected] ~]# cat meminfo.txt
- total used free shared buff/cache available
- Mem: 1.8G 85M 1.6G 9.4M 98M 1.6G
- Swap: 2.0G 0B 2.0G
- 3.10.0-1062.12.1.el7.x86_64
- Filesystem Type Size Used Avail Use% Mounted on
- devtmpfs devtmpfs 899M 0 899M 0% /dev
- tmpfs tmpfs 910M 0 910M 0% /dev/shm
- tmpfs tmpfs 910M 9.4M 901M 2% /run
- tmpfs tmpfs 910M 0 910M 0% /sys/fs/cgroup
- /dev/mapper/CentOS-root xfs 18G 2.3G 16G 13% /
- /dev/sda1 xfs 497M 141M 357M 29% /boot
- tmpfs tmpfs 182M 0 182M 0% /run/user/0
11.3 which-whereis-locate-grep-find 查找命令
11.3.1 which-whereis-locate-grep find 命令使用
查找文件一般有以下几个命令:
which 查看可执行文件的位置 (三星重要)
grep 过滤匹配或正则表达式; 一个文件搜索工具 (五星重要)
find 根据不同的条件查找相关文件 (五星重要)
在实际工作中常用到 which grep/egrep find
1)which 用法
which 命令: 查找此命令在系统中的位置
- [[email protected] ~]# which ntpdate
- /usr/sbin/ntpdate
2)grep 查找使用
作用: 过滤或使用正则表达式来搜索文本; 把结果显示出来
主要参数:
-v 取反
-i 忽略大小写
- ^# 以 #开头
- #$ 以 #结尾
^$ 空行
-n 对过滤的内容加上行号
| 或者的意思
例 11:
- [[email protected] ~]# ps -aux | grep sshd | grep -v grep
- root 894 0.0 0.2 112920 4328 ? Ss 19:30 0:00 /usr/sbin/sshd -D
- root 1009 0.0 0.3 157336 6004 ? Ss 19:35 0:00 sshd: [email protected]/0
- [[email protected] ~]# grep nologin$ /etc/passwd
- bin:x:1:1:bin:/bin:/sbin/nologin
- .....
- ntp:x:38:38::/etc/ntp:/sbin/nologin
- [[email protected] ~]#grep -v ^# /etc/SSH/sshd_config
这样还会有空白行存在
- [[email protected] ~]#egrep -v "^#|^$" /etc/SSH/sshd_config
- HostKey /etc/SSH/ssh_host_rsa_key
- ......
- Subsystem sftp /usr/libexec/openssh/sftp-server
- [[email protected] ~]#grep -n root /etc/passwd
- 1:root:x:0:0:root:/root:/bin/bash
- 10:operator:x:11:0:operator:/root:/sbin/nologin
3)find 命令使用 (必会, 参数比较多)
格式: find pathname -options [-print]
命令字 路径名称 选项 输出
参数:
pathname: 所查找的目录路径, 不输入代表当前目录例如用 .. 来表示上层目录, 用 / 来表示根目录. 可以是绝对路径也可以是相对路径
find 命令选项:
-name? 按照文件名查找文件 --"名字"
-perm? 按照文件权限来查找文件. 666 777 等
-user? 按照文件属主来查找文件 --"用户名"
-group? 按照文件所属的组来查找文件 --"组名称"
-mtime -n / +n? 按照文件的更改时间来查找文件,
n 表示文件更改时间距现在 n 天以内
n 表示文件更改时间距现在 n 天以前
-type? 查找某一类型的文件
b - 块设备文件
d - 目录
c - 字符设备文件
p - 管道文件
l- 符号链接文件
f - 普通文件
-size n 查找符合指定的文件大小的文件;+n 表示大于此数值,-n 表示大于此数值; 后面可以带单位:+20K
-exec 对匹配的文件执行该参数所给出的其他 Linux 命令, 相应命令的形式为' 命令 {} \;, 注意 { } 和 \; 之间的空格,{} 代表查到的内容
-a and 与运算; 条件同时成立才能有进一步操作
-o or 或运算; 条件成立其中一个就可以有进一步操作
! not 非运算; 条件不成立才能有进一步操作
例 12:
- [[email protected] ~]#find /etc -name *.conf
- /etc/resolv.conf
- /etc/pki/ca-trust/ca-legacy.conf
- /etc/yum/pluginconf.d/fastestmirror.conf
- ......
- [[email protected] ~]#find / -user wangtao -exec cp -a {
- } /root/findresults/ \;
- # 参数: -a #复制时, 保留原来文件的所有属性
- [[email protected] ~]#last -f /var/log/wtmp | awk '{print $3}' | sort | uniq -c
- 3 192.168.101.116
- 1 192.168.101.18
- 6 192.168.26.1
- 21 boot
- 12 Sat
- 2 Thu
- 1 Tue
作用: 查询曾经登录过此机器的 IP 及次数
11.4 命令判断
11.4.1 用到的三个特殊符号: ; && ||
前面已经讲过此三个符号的用法, 在此说明一下
; 命令按从左到右的顺序执行, 不考虑失败与否
&& 前一个命令执行成功才会执行后一个命令
最常用的是源码安装软件的时候: make && make install
|| 前一个命令执行失败才会执行后一个命令
[这几天作为党员参加了社区安全防疫工作中了, 更新确实有些慢, 实在对不住]
来源: http://www.bubuko.com/infodetail-3438915.html