Linux CentOS7 重定向和文件查找

1. 文件描述符

定义:

是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行 I/O 操作的系统调用都通过文件描述符;文件描述符是一个简单的非负整数,用以标明每一个被进程所打开的文件,程序刚刚启动的时候,第一个打开的文件是 0,第二个是 1,依此类推。

输入输出标准说明:

STDIN:标准输入,默认设备是键盘,文件编号为0

STDOUT:标准输出,默认设备是显示器,文件编号为1,可以重定向到文件

STDERR:标准错误,默认设备是显示器,文件编号为2,可以重定向到文件

查看和进程相关的文件:

查看一个进程打开的文件:ll /proc/进程ID/fd

查看和临时设置一个进程最多打开多少个文件:ulimit -n,ulimit -n 2048

2. 重定向

输出重定向:

定义:将命令的正确输出结果保存到指定的文件中,而不是直接显示在显示器的屏幕上

语法:> 文件名 #表示将标准输出的内容,写到文件中;如果此文件已经存在,将会覆盖原文件中的内容

           >> 文件名 #表示将标准输出的内容,追加到文件中;如果此文件不存在,将会新建该文件

举例:

           查看当前主机的CPU的类型并保存到cpu.txt文件中(不显示在屏幕中):cat /proc/cpuinfo > cpu.txt

           将内核的版本信息追加到cpu.txt:uname -a >> cpu.txt

           清空一个文件:> cpu.txt

输入重定向:

定义:不使用标准输入端口输入文件,而是使用指定的文件作为标准输入设备

语法:< 文件名 

错误重定向:

定义:将命令执行过程中出现的错误信息(选项或参数错误)保存到指定的文件,而不是直接显示在显示器的屏幕上

作用:将错误信息保存到文件中

举例:

           将错误显示的内容和正确显示的内容分开:ls /etc/passwd xxx 2> a.txt

EOF:

用法介绍:“EOF”通常与“<<”结合使用,“<”作为子命令或子shell的输入,直到遇到“EOF”,再次返回到主调shell,可将其理解为分界符(delimiter)。

举例:

  

null黑洞和zero空文件:

把/dev/null看作“黑洞”,所有写入它的内容都会永久丢失,从它那无法读取到任何内容。

/dev/zero在类UNIX系统中是一个特殊的文件,它会提供无限的空字符(NULL,ASCII NUL,0x00)。典型的用法是用它来产生一个特定大小的空白文件。

举例:

           使用DD命令产生一个50M的文件:dd if=/dev/zero of=b.txt bs=1M count=50

           查看一个文件的大小:du -sh b.txt

           正确的内容写入一个文件,错误的信息写入一个文件:ls /tmp xxx >1.txt 2>2.txt

           把正确消息和错误消息输入到相同的位置:ls /tmp xxx &> 1.txt

管道:

注意:

           (1)管道命令只处理前一个命令的正确输出;

           (2)管道右边的命令,必须能够接收标准输入的数据流命令才行;

           (3)管道符可以把两条命令连起来,它可以链接多个命令使用。

举例:ps -aux | grep sshd

tee:

功能:读取标准输入的数据,并将其内容输出成文件

举例:

           将磁盘使用的信息写入文件:df -h|tee m.txt

           将磁盘使用的信息追加到文件:df -h|tee -a m.txt

3. 文件查找

which:

which useradd:查看可执行文件的位置

whereis:

whereis useradd:查看可执行文件的位置及相关文件

locate:

updatedb,locate root

grep:

语法:grep 关键字 文件

grep -v 关键字 文件:查询不包括关键字的条目

grep -i 关键字 文件:查询忽视大小写

grep ^# 文件:查询以#开头的条目

grep #$ 文件:查询以$结尾的条目

grep ^$ 文件:查询空行

grep -n 关键字 文件:查询并加行号

grep "nologin\|root" /etc/passwd:“或”查找

find:

格式:find pathname -options

find pathname -name:按照文件名查找文件

find pathname -perm:按照文件权限查找文件

find ./ -perm 755:查找文件权限为755的文件

find pathname -user:按照文件属主查找文件

find pathname -group:按照文件属组查找文件

find pathname -mtime -n/+n:按照文件的更改时间查找文件,-n/+n表示文件更改时间距现在n天以内/以前

find pathname -size n:按照文件的大小来查找文件

find pathname -type:查找某一类型的文件,b 块设备文件,d 目录文件,c 字符设备文件,p 管道文件,l 符号链接文件,f 普通文件

find . -name "*.txt" -exec mv {} /opt \;:找到当前目录下txt格式的目录并移动到/opt

mtime 文件最后一次修改的时间,atime 文件最后一次访问的时间,ctime 文件最后一次变化的时间(修改时间)

find /opt -size +20k -a -size -50k:-a 且,-o 或,+ 大于,- 小于

find /bin/ -maxdepth 1 -perm 755:查找/bin 目录下权限等于 755 的可执行的文件

4. 命令判断

; 不考虑左右命令的相关性 cd /xxx ; touch a.txt

&& 只有前面的命令执行成功,后面的命令才会执行 cd /etc && touch a.txt

|| 如果前面的命令执行成功,后面的命令就不去执行了;或者如果前面的执行不成功,才会去执行后面的命令 ls /etc/passwd || cd /etc

5. 计划任务

at单次执行计划任务:

       (1)启动atd服务:systemctl status atd,systemctl restart atd,systemctl enable atd

       (2)at 时间:at 20:20,at 20:20 2020-1-1,at now +10min

       (3)输入要执行的命令:mkdir /root/th

       (4)结束:ctrl d

       (5)查看计划任务:at -l

       (6)删除计划任务:atm 计划任务的编号

cron周期性的计划任务:

       主文件(说明文件):/etc/crontab

       systemctl status crond:查看crond服务的状态

       systemctl restart crond:重启crond服务

       systemctl enable crond:开机自动启动crond服务

       crontab -e:创建一个计划任务

       1 1 9 * * /root/backup.sh:分 时 日 月 周 执行一个备份脚本,命令最好用绝对路径

       crontab -l:查看计划任务

       crontab -r:删除计划任务

       0 0 1,2,3 * * /root/backup.sh:每月的1、2、3日凌晨0点0分执行一个备份脚本

       0 0 1-10 * * /root/backup.sh:每月的1至10日凌晨0点0分执行一个备份脚本

       */5 * * * * /root/backup.sh:每5分钟执行一个备份脚本

       /var/spool/cron/root:计划任务文件的位置

发布了48 篇原创文章 · 获赞 67 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/maergaiyun/article/details/104340785