All day
find命令
1.主要进⾏⽂件搜索
2.基本语法 find [⽂件路径] [选项 选项的值]
-name *
-type f|d
常⻅的选项
-name 根据⽂件的名称搜索⽂件,⽀持通配符*
-type f代表普通⽂件,d代表⽬录
1、按名字查询——-name 文件名
找到httpd.conf⽂件
搜索名字含tab的文件:
[root@peter ~]# find /etc/ -name *tab
[root@peter ~]# find /etc/ -name '.*'
搜索以.sh结尾的文件:
[root@peter ~]# find /etc -name "*.sh" -o -type d
[root@peter ~]# find /mnt -name "cbd*" -o -type f
[root@peter ~]# find /boot -type d | wc -l (利用管道符统计文件个数)
获取/etc/中以.conf结尾的文件
2.按文件大小查询
(1)-size +或- 文件大小(文件大小) [常⽤单位 k M G]
size值 搜索等于size的⽂件 -size值 (0,size值) +size值 (size值,正⽆穷)
查找/opt目录下大于2M的文件并将其删除:
[root@web2 ~]# find /opt/ -size +2M -exec rm -rf {} \;
[root@peter ~]# find /boot/ -size +300k
查找大于10M小于50M的数据:
[root@peter ~]# find /boot/ -size +10M -size -50M
(2)扩展命令 dd,使⽤dd创建扩展命令,⽣成指定⼤⼩的测试⽂件,
格式:dd if=/dev/zero of=⽂件名称 bs=1M count=1
if表示输⼊⽂件 of表示输出⽂件 bs代表字节为单位的块⼤⼩ count代表被复制的块,其中/dev/zore是⼀个字符设备,会不断地返回0字节的⽂件
[root@web2 ~]# dd if=/dev/zero of=/opt/a.txt bs=100M count=1 # 创建名称为a.txt,⼤⼩为100M的⽂件
[root@web2 ~]# dd if=/dev/zero of=/opt/b.txt bs=5M count=1
记录了1+0 的读⼊
记录了1+0 的写出
5242880字节(5.2 MB)已复制,0.0111468 秒,470 MB/秒
[root@web2 ~]# ls -lh /opt/ # 查看⽂件信息,使⽤⽂件⼤⼩单位 默认m
-rw-r--r--. 1 root root 5.0M 7月 15 20:06 aaa.mp4
[root@localhost opt]# ls -l
总⽤量 16384
-rw-r--r--. 1 root root 1048576 7⽉ 14 14:37 a.txt
-rw-r--r--. 1 root root 5242880 7⽉ 14 14:42 b.txt
3、按文件权限查找:
[root@localhost ~]#find -perm -u=root /opt
4、按文件的最后修改时间查询
格式:find ⽂件路径 -mtime +days/-days -mtime 根据⽂件最后修改时间搜索⽂件 +号 搜索⼏天之前的⽂件信息 -号 搜索⼏天之内的⽂件信息
案例1 搜索三天以前的信息,不包含第三天的,⽽且只搜txt⽂件
案例2: 搜索三天以内的.txt⽂件 ,包含今天
5.stat 获取文件的时间信息(创建、修改和访问)
格式:[root@web1 ~]# stat /opt/test.conf
创建文件
格式:touch -m -d 日期时间格式 文件名称(文件不存在就创建,存在时只修改时间)
案例:
创建文件并用p选项指定文件修改时间
[root@web1 ~]# touch /opt/b.txt -m -d "2024-7-14 00:00"
修改或创建文件,并设置最后修改时间
[root@web1 ~]#touch -m -d "2024-7-14 00:00" /opt/abc.txt # 设置最后修改时间为7-14
[root@web1 ~]# stat /opt/abc.txt # 查看文件信息
6.scp 实现linux系统和linux之间的克隆操作
scp下载⽂件
语法: scp [选项] 本地主机资源路径 {远程主机}⽤户名@主机ip:放置路
上传⽂件,将克隆机中的a.txt⽂件上传到源主机中
其他常用选项:
-p:保留文件的最后修改时间、最后访问时间和权限模式;
-c:使用指定的加密算法进行数据加密;
-q:不显示传输进度信息;
-P:指定 SSH 服务器的端口号(如果不是默认的 22 端口);
-i:指定用于身份验证的私钥文件路径(如果使用 SSH 密钥对进行认证)。
如果远程主机上的 SSH 服务器使用非标准端口 2222,可以使用以下命令上传文件:
scp -p 2222 /path/to/local/file user@remote:/path/to/destination
如果希望使用 SSH 密钥对进行身份验证,可以通过添加-i选项指定私钥文件的路径:
scp -i /path/to/private_key /path/to/local/file user@remote:/path/to/destination
[root@localhost ~]# ls /opt/
[root@localhost ~]# ssh -lroot -p22 192.168.2.11 #ssh管理克隆机
[root@localhost ~]# scp /opt/a.txt root@192.168.135.129:/opt/ # 将克隆机上的a.txt 上传到 源主机上
root@192.168.2.11's password:
txt
[root@localhost ~]# ssh -lroot -p22 192.168.2.11 # 把克隆机中的folder⽬录上传到源主机的opt⽬录
[root@web1 ~]#scp -r /opt/d0/a.txt root@192.168.2.12:/opt #-r表示递归,上传目录及目录下的文件
[root@localhost ~]# scp -r /opt/folder/ root@192.168..2.11:/opt/
[root@localhost ~]#systemctl start sshd # 必须启⽤ssh服务
[root@localhost ~]#systemctl stop sshd
7、dd:创建文件时规定文件大小
dd介绍:
dd 是一个用于复制文件和转换文件的工具。
在这个命令中:
if=/dev/zero 表示输入文件为 /dev/zero,这是一个提供连续零字节的设备文件。
of=/opt/hh.txt 指定输出文件为 /opt/hh.txt。
bs=100M 表示每次读写的块大小为 100 兆字节(M)。
count=1 表示读写的块数量为 1。
综合起来,这个命令的作用是在 /opt 目录下创建一个大小为 100 兆字节的文件 hh.txt,文件的内容全部为零。
在opt1目录下创建a.txt,b.txt,c.txt
8.计划任务cron
选项:-e 编辑计划任务 -l 查看现有计划任务
用途:按照设置的时间间隔为用户反复执行某一项固定系统任务
软件包:cronie、 crontabs 系统服务:crond 日志文件:/var/log/cron
[root@web2 ~]# ls /opt/
d0
[root@server0~]# tail /var/log/cron //了解cron执行消息....
Nov 11 21:20:01 localhost CROND[12759]: (root) CMD(/usr/lib64/sa/sa1 1 1)
分、时、日、月、周
30、23、 *、 *、 *
30、23、 *、 *、 5
30、23、 *、 *、 7
30、23、 *、 *、 1-5
30、23、 *、 *、 1,3,7
*、23、 *、 *、 1,3,7
5、 *、 *、 *、 7 # 每个小时的第5分钟执行一次
*/5、 *、 *、 *、 7 # 每5分钟执行一次
30、 8、 *、 *、 */8 # 每8周早上8点半
30、 8、 1、 *、 1 # 满足任何一个1,就执行一次
案例:
[root@web2 ~]# which ls # 注意:要使用完整路径 which命令
alias ls='ls --color=auto'
/usr/bin/ls
每分钟自动将/opt下的文件名写到root目录下的list中
[root@web2 ~]# crontab -e # 编辑计划任务
[root@web2 ~]# crontab -l # 查看计划任务
*/1 * * * * /usr/bin/ls /opt/ >> /root/list # 每分钟执行一次
49 * * * * /usr/bin/echo "我是希腊女神echo" > /root/echo.txt # 每小时的49分执行一次
[root@web2 ~]# whereis tar
tar: /usr/bin/tar /usr/include/tar.h /usr/share/man/man1/tar.1.gz
每2分钟将/etc目录下的文件打包放到/tmp下,命名为/tmp/etc.tar.gz
[root@web2 ~]# crontab -l
*/2 * * * * /usr/bin/tar -zcvf /tmp/etc.tar.gz /etc/ # 以上的任务会覆盖前⾯的⽂件,需要在指令中添加时间因素
*/1 * * * * /usr/bin/tar -zcvf /tmp/etc_$(date "+\%Y\%m\%d\%H\%M\%S").tar.gz /etc/ # 在脚本中出现%,必须使⽤转义符\
[root@web2 ~]# ls /tmp/ # 查看备份⽂件
etc_20240715205001.tar.gz
9.tree:用于以树状结构显示目录和文件
基本用法: 直接在终端输入 tree
,将显示当前目录的树状结构。
指定目录: 如果要显示特定目录的树状结构,只需在命令后添加目录路径,例如:
tree /home/user/directory
控制显示深度: 使用 -L
选项指定显示的深度,例如显示 2 层深度:
tree -L 2
只显示目录: 使用 -d
选项,例如:
tree -d
显示文件权限等详细信息: 使用 -p
选项,例如:
tree -p
输出到文件: 可以将树状结构输出到文件中,例如:
tree > tree_output.txt
10、crontab:计划任务
Crontab 介绍:
Crontab 是类 Unix 操作系统(包括 Linux 系统)中的一个用于设置定时任务的工具。
它通过一种特定的语法来指定任务执行的时间规则。例如,* * * * * command 表示每分钟执行一次 command 命令。
其时间设置字段从左到右依次为:分钟(0 - 59)、小时(0 - 23)、日(1 - 31)、月(1 - 12 或 jan - dec)、星期(0 - 7 或 sun - sat,0 和 7 都表示星期日)。
研究时间戳
11、touch:创建文件时规定创建时间
touch创建文件,没有文件就新建,有文件就修改
touch 文件名称 -m -d “日期时间格式”
创建文件并用p选项指定文件修改时间
[root@web1 ~]# touch /opt/b.txt -m -d "2024-7-14 00:00"
修改或创建文件,并设置最后修改时间
[root@web1 ~]#touch -m -d "2024-7-14 00:00" /opt/abc.txt # 设置最后修改时间为7-14
[root@web1 ~]# stat /opt/abc.txt # 查看文件信息\