#写入内容到/tmp/input.txt
[root@node1 ~]# echo -e "Hello\nWorld\nThis is a test\n\nAnother line\n\nLast line" > /tmp/input.txt
[root@node1 ~]# cat /tmp/input.txt
语句分析:
- '/^$/ d'是一个删除操作,匹配空行(由^$表示)并删除。
- s/([a-Z].*)/AAA\1BBB/是一个替换操作,匹配任何以大写字母开头的行,并将其替换为AAA、原始行内容和BBB
[root@node1 ~]# sed -r '/^$/ d; s/([a-Z].*)/AAA\1BBB/' /tmp/input.txt
思路:1.创建文件
2. 配置免密登入
3. rsync将文件传入指定服务器下
4. 编写 crontab
[root@node1 ~]# mkdir /tmp/logs
[root@node1 ~]# mkdir /tmp/logs/{1..6}.log
[root@node1 ~]# ll /tmp/logs/
语句分析:
ssh-keygen是一个用于生成、管理和转换SSH密钥的工具。在你提供的命令ssh-keygen -f ~/.ssh/id_rsa -N '' -q中:
- ssh-keygen是命令本身,用于生成SSH密钥。
- -f ~/.ssh/id_rsa是-f选项后面跟着的参数,表示生成的密钥文件的路径,这里是~/.ssh/id_rsa。
- -N ''是-N选项后面跟着的参数,表示密钥的密码,这里是空字符串(''),表示没有密码。
- -q选项表示安静模式,不显示任何信息。
所以,这个命令的意思是在~/.ssh/id_rsa路径下生成一个没有密码的SSH密钥,并且在生成过程中不显示任何信息
[root@node1 ~]# ssh-keygen -f ~/.ssh/id_rsa -N '' -q
[root@node1 ~]# ssh-copy-id [email protected]
- # rsync是命令本身,用于同步文件和目录。
[root@node1 ~]# rsync -avz /tmp/logs/*.log 192.168.78.130:/tmp/logs/
[root@node3 ~]# mkdir /tmp/logs/
[root@node3 ~]# ll /tmp/logs/
编写计划任务:
0 15 * * 1 rsync -avz /tmp/logs/*.log 192.168.78.130:/tmp/logs/
[root@node3 ~]# crontab -e
[root@node3 ~]# crontab -l
[root@node1 ~]# vim find.sh
#!/bin/bash
#查看/tmp/back.tar.gz 文件是否存在,存在则删除
[ -f /tmp/back.tar.gz ] && rm -f /tmp/back.tar.gz
find /tmp/ -type f -name '*_s1.jpg' -mtime -1 -exec tar rf /tmp/back.tar.gz {} \; 2>/dev/null
#查看压缩文件的内容
tar tvf /tmp/back.tar.gz
语句分析:
find /tmp/ -type f -name '*_s1.jpg' -mtime -1 -exec tar rf /tmp/back.tar.gz {} \; 2>/dev/null
- find:这是一个用于在文件系统中查找文件的命令。
- -type f:这个选项告诉find只查找文件(不包括目录)。
- -name '*_s1.jpg':这个选项告诉find只查找名字以'_s1.jpg'结尾的文件。
- -mtime -1:这个选项告诉find只查找在过去24小时内修改过的文件。
- -exec:这个选项允许你对找到的每个文件执行一个命令。在这里,命令是tar rf /tmp/back.tar.gz {} \;,这将把找到的每个文件添加到名为/tmp/back.tar.gz的tar存档中。
- 2>/dev/null:这个部分将错误输出重定向到/dev/null,也就是说,任何错误信息都会被丢弃,不会显示在控制台上。
- 所以,整个命令的意思是:在当前目录及其子目录中查找所有在过去24小时内修改过并且名字以'_s1.jpg'结尾的文件,然后把这些文件添加到名为/tmp/back.tar.gz的tar存档中,同时丢弃所有错误信息。
[root@node1 ~]# bash find.sh
RevertInput “this is para1” para2 para3
应该输出:
para3
para2
this is para1
(注:需要注意第一个参数中的空格)
[root@node1 ~]# vim Illegal.sh
#!/bin/bash
RevertInput() {
if [ $# -ne 3 ] # ne 是not equal 不等于
then
echo "Illegal parameters"
else
for ((i=3;i>=1;i--))
do
echo ${!i} #变量的间接引用 “{!}”
done
fi
}
RevertInput "this is para1" para2 para3
[root@node1 ~]# cat Illegal.sh
[root@node1 ~]# sh Illegal.sh #执行脚本
[root@node1 ~]# vgcreate VG1 /dev/sda
Physical volume "/dev/sda" successfully created.
Volume group "VG1" successfully created
[root@node1 ~]# lvcreate -n LV1 -L 5g VG1
Logical volume "LV1" created.
# lsblk是一个在Linux中用于列出所有连接到系统的块设备的命令。
[root@node1 ~ ]# lsblk
# lvextend是命令本身,用于扩展逻辑卷的大小。
# -L +1G是-L选项后面跟着的参数,表示要增加的大小,这里是+1G,表示增加1GB
[root@node1 ~]# lvextend -L +1G /dev/VG1/LV1
Size of logical volume VG1/LV1 changed from 5.00 GiB (128nts) to 6.00 GiB (1536 extents).
Logical volume VG1/LV1 successfully resized.
[root@node1 ~]# lsblk
# lvreduce是一个用于减小逻辑卷大小的命令
# -L -2G是-L选项后面跟着的参数,表示要减少的大小,这里是-2G,表示减少2GB
[root@node1 ~]# lvreduce -L -2g /dev/VG1/LV1
WARNING: Reducing active logical volume to 4.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce VG1/LV1? [y/n]: y
Size of logical volume VG1/LV1 changed from 6.00 GiB (153nts) to 4.00 GiB (1024 extents).
Logical volume VG1/LV1 successfully resized.
[root@node1 ~]# lsblk
[root@node1 ~]# yum install iotop -y
[root@node1 ~]# iotop -o
-o, --only: 只显示正在进行I/O操作的进程或线程。