Linux CentOS7 基础:重定向和文件查找
1. 文件描述符定义:是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行 I/O 操作的系统调用都通过文件描述符;文件描述符是一个简单的非负整数,用以标明每一个被进程所打开的文件,程序刚刚启动的时候,第一个打开的文件是 0,第二个是 1,依此类推。输入输出标准说明:STDIN:标准输入,默认设备是键盘,文件编号为0STDOUT:标准输出,默认设备是...
目录
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:计划任务文件的位置
更多推荐
所有评论(0)