1、每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,"etc-年-月-日-时-分.tar.gz"
首先确保crond守护进程处于运行状态
Centos7
systemctl status crond.service
输出结果:
Active: active (running)
或者命令
service crond status
Centos6
service crond status
输出结果
crond (pid 2221) is running...
编辑
mkdir /backup/ #创建目录
tar -zcvf /backup/etc-"$(date +%F-%H-%M)".tar.gz /etc/ 测试命令
输出结果:
[root@benny/backup]#ls
etc-2019-08-27-23-20.tar.gz
输入命令
crontab -e
* */12 * * * tar -zcvf /backup/etc-"$(date +%F-%H-%M)".tar.gz /etc/
查看目前的时程表
[root@benny~]#crontab -l
* */12 * * * tar -zcvf /backup/etc-"$(date +%F-%H-%M)".tar.gz /etc
2、rpm包管理功能总结以及实例应用演示。
①功能总结
②实例应用演示
下载一下prm包作为测试文件:
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
查看rpm包信息:
rpm -qpi lrzsz-0.12.20-36.el7.x86_64.rpm
输出结果
Name : lrzsz
Version : 0.12.20
Release : 36.el7
Architecture: x86_64
Install Date: (not installed)
Group : Applications/Communications
Size : 184846
License : GPLv2+
Signature : RSA/SHA256, 2014年07月04日 星期五 11时35分32秒, Key ID 24c6a8a7f4a80eb5
Source RPM : lrzsz-0.12.20-36.el7.src.rpm
Build Date : 2014年06月10日 星期二 07时29分11秒
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem
Vendor : CentOS
URL : http://www.ohse.de/uwe/software/lrzsz.html
Summary : The lrz and lsz modem communications programs
查看rpm包的内容:
rpm -qpl lrzsz-0.12.20-36.el7.x86_64.rpm
输出结果:
/usr/bin/rb
/usr/bin/rx
/usr/bin/rz
/usr/bin/sb
/usr/bin/sx
/usr/bin/sz
/usr/share/locale/de/LC_MESSAGES/lrzsz.mo
/usr/share/man/man1/rz.1.gz
/usr/share/man/man1/sz.1.gz
查看rpm包的依赖:
rpm -qpR lrzsz-0.12.20-36.el7.x86_64.rpm
输出结果:
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.15)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libnsl.so.1()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1
安装rpm包:
rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm
输出结果:
准备中... ################################# [100%]
正在升级/安装...
1:lrzsz-0.12.20-36.el7 ################################# [100%]
查询系统是否安装指定的rpm包
rpm -qa lrzsz
输出结果:
lrzsz-0.12.20-36.el7.x86_64
卸载rpm包:
rpm -e lrzsz
查询文件属于那个包:
rpm -qf /usr/bin/sz
输出结果:lrzsz-0.12.20-36.el7.x86_64
查询命令属于那个包:
[root@benny~]#rpm -qf $(which rz)
lrzsz-0.12.20-36.el7.x86_64 #输出结果
3、yum的配置和使用总结以及yum私有仓库的创建。
yum的配置
-
yum 的配置文件分为两部分:main 和repository
main 部分定义了全局配置选项,整个yum 配置文件应该只有一个main。常位于/etc/yum.conf 中。
[main] cachedir=/var/cache/yum //yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,默认设置为/var/cache/yum keepcache=0 //安装完成后是否保留软件包,0为不保留(默认为0),1为保留 debuglevel=2 //Debug 信息输出等级,范围为0-10,缺省为2 logfile=/var/log/yum.log //yum 日志文件位置。用户可以到/var/log/yum.log 文件去查询过去所做的更新。 pkgpolicy=newest //包的策略。一共有两个选项,newest 和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository 中同时存在,yum 应该安装哪一个,如果是newest,则yum 会安装最新的那个版本。如果是last,则yum 会将服务器id 以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。 distroverpkg=redhat-release //指定一个软件包,yum 会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm 包。 tolerant=1 //有1和0两个选项,表示yum 是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum 不会出现错误信息。默认是0。 exactarch=1 //有1和0两个选项,设置为1,则yum 只会安装和系统架构匹配的软件包,例如,yum 不会将i686的软件包安装在适合i386的系统中。默认为1。 retries=6 //网络连接发生错误后的重试次数,如果设为0,则会无限重试。默认值为6. obsoletes=1 //这是一个update 的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。 plugins=1 //是否启用插件,默认1为允许,0表示不允许。我们一般会用yum-fastestmirror这个插件。 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum # Note: yum-RHN-plugin doesn't honor this. metadata_expire=1h installonly_limit = 5 # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
repository 部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d 目录下的各文件中。
[base] name=CentOS-$releasever - Base - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 // [serverid] name=Some name for this server baseurl=url://server1/path/to/repository/ enabled={1|0}#enabled=1开启本地更新模式 gpgcheck={1|0}# gpgcheck=1表示检查;可以不检查gpgcheck=0 gpgkey=#检查的key;如果上面不检查这一行可以不写。
-
serverid 是用于区别各个不同的repository,必须有一个独一无二的名称;
-
name 是对repository 的描述,支持像releaseverbasearch这样的变量;
-
baseurl 是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:
baseurl=url://server1/path/to/repository/ url://server2/path/to/repository/ url://server3/path/to/repository/
其中url 支持的协议有 http:// ftp:// file:// 三种。baseurl 后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl 只能有一个,也就是说不能像如下格式:
baseurl=url://server1/path/to/repository/ baseurl=url://server2/path/to/repository/ baseurl=url://server3/path/to/repository/
-
yum的使用总结
创建yum私有库
①对etc/yum.repos.d/的Centos-Base.repo进行备份
mv Centos-Base.repo Centos-Base.repo.back
②修改Centos-Base.repo文件
[Base]
name=CentOS-$releasever-Base
baseurl=file:///media
gpgchek=1
③对光盘进行挂载
mount /dev/cdrom /media/
④重新加载yum
yum clean
yum makecache
⑤查看yun源
[root@benny/etc/yum.repos.d]#yum repolist
输出结果
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
Base
(1/2): Base/group_gz
(2/2): Base/primary_db
源标识 源名称
Base CentOS-7-Base
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64
repolist: 23,392
4、写一个脚本实现列出以下菜单给用户:
(1)disk:show disk info信息
(2)mem: show memory info信息
(3)cpu: show cpu info信息
(*)quit
vim cr.sh
#!/bin/bash
#********************************************************************
#Author: benny
#QQ: 759354304
#Date: 2019-09-02
#FileName: cr.sh
#URL: http://www.benny.com
#Description: The test script
#Copyright (C): 2019 All rights reserved
#********************************************************************
cat << EOF
disk:show disk info;
men: show memory info;
cpu:show cpu info
(*)QUIT
EOF
read -p "your chice:" option
if [[ "$option" == "disk" ]]; then
fdisk -l /dev/[sh]d[a-z]
elif [[ "$option" == "men" ]]; then
free -m
elif [[ "$option" == "men" ]]; then
lscpu
else
echo "Unkown option"
exit 3
fi
5、sed用法总结并结合实例演示
-
用法总结
sed 的选项、命令、替换标记
命令格式
sed [options] 'command' file(s) sed [options] -f scriptfile file(s)
选项
-e<script>或--expression=<script>:以选项中的指定的script来处理输入的文本文件; -f<script文件>或--file=<script文件>:以选项中指定的script文件来处理输入的文本文件; -h或--help:显示帮助; -n或--quiet或——silent:仅显示script处理后的结果; -V或--version:显示版本信息。 -r,支持正则表达式
参数
文本:指定待处理的文本文件列表
a\ 在当前行下面插入文本。 i\ 在当前行上面插入文本。 c\ 把选定的行改为新的文本。 d 删除,删除选择的行。 D 删除模板块的第一行。 s 替换指定字符 h 拷贝模板块的内容到内存中的缓冲区。 H 追加模板块的内容到内存中的缓冲区。 g 获得内存缓冲区的内容,并替代当前模板块中的文本。 G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。 l 列表不能打印字符的清单。 n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。 N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。 p 打印模板块的行。 P(大写) 打印模板块的第一行。 q 退出Sed。 b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。 r file 从file中读行。 t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。 T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。 w file 写并追加模板块到file末尾。 W file 写并追加模板块的第一行到file末尾。 ! 表示后面的命令对所有没有被选定的行发生作用。 = 打印当前行号码。 # 把注释扩展到下一个换行符以前。
sed 替换
g 表示行内全面替换。 p 表示打印行。 w 表示把行写入一个文件。 x 表示互换模板块中的文本和缓冲区中的文本。 y 表示把一个字符翻译为另外的字符(但是不用于正则表达式) \1 子串匹配标记 & 已匹配字符串标记
-
实例演示
演示文件
[root@benny~]#cat >test_sed.txt<
1 ,TOM,TWC > 2,jerry,wto > 3,smith,zcv > 4,Brown,BBC > 5, willianms > 6,jones,zhzhidrda > EOF
在文件指定行后追加文件
sed '3a 888,Anderson,son' test_sed.txt
输出结果1 ,TOM,TWC 2,jerry,wto 3,smith,zcv 888,Anderson,son 4,Brown,BBC 5, willianms 6,jones,zhzhidrda
在文件指定后追加多行文本
sed '3a 888,Anderson,son\n999,Martin,MHTZ' test_sed.txt
输出结果:
1 ,TOM,TWC 2,jerry,wto 3,smith,zcv 888,Anderson,son 999,Martin,MHTZ 4,Brown,BBC 5, willianms 6,jones,zhzhidrda
删除文件中一行指定的文本
sed '2d' test_sed.txt
输出结果:
1 ,TOM,TWC 3,smith,zcv 4,Brown,BBC 5, willianms 6,jones,zhzhidrda
删除文件指定的多行文本
'2,5d' test_sed.txt
输出结果:
1 ,TOM,TWC 6,jones,zhzhidrda
替换操作:s命令
` sed 'sed 's$t$O$g' test_sed.txt
输出结果:
1 ,TOM,TWC 2,jerry,wOo 3,smiOh,zcv 4,Brown,BBC 5, willianms 6,jones,zhzhidrda
打印输出文件的指定行的内容
sed -n '3p' test_sed.txt
输出结果:
3,smith,zcv
特殊用法实例:
sed -n 'n;p' FILE:显示偶数行; sed '1!G;h;$!d' FILE:逆序显示文件的内容; sed ’$!d' FILE:取出最后一行; sed '$!N;$!D' FILE:取出文件后两行; sed '/^$/d;G' FILE:删除原有的所有空白行,而后为所有的非空白行后添加一个空白行; sed 'n;d' FILE:显示奇数行; sed 'G' FILE:在原有的每行后方添加一个空白行;
6、 用bash实现统计访问日志文件中状态码大于等于400的IP数量并排序
[root@benny~]#awk '$9>400{print $1}' /var/log/httpd/access_log* |uniq -c |sort -nr
输出结果:
2 10.0.0.1
7、 使用自制的yum源安装ftp、openssh、curl、wget、tcpdump等软件包
ⅰ、查看以上软件是否安装
yum list installed fpt openshh curl wget tcpdump```
若安装进行卸载
rpm -e --nodeps wget curl tcpdump
yum remove 完全移除软件包,包括所有依赖项此命令很危险,不建议使用,可能会误卸载别的软件所需要的依赖项
Ⅱ、在当前yum下查找是否存在以上软件,yum源来自`CentOS-7-x86_64-Everything-1810.iso`包含大部分软件
yum list ftp openshh curl wget tcpdump
出结果为:
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
可安装的软件包
curl.x86_64 7.29.0-51.el7 Base
ftp.x86_64 0.17-67.el7 Base
tcpdump.x86_64 14:4.9.2-3.el7 Base
wget.x86_64 1.14-18.el7 Base
Ⅲ、直接安装
yum install -y ftp openshh curl wget tcpdump```
Ⅳ、检查安装结果
[root@benny~]#yum list installed fpt openshh curl wget tcpdump
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
已安装的软件包
curl.x86_64 7.29.0-51.el7 @Base
tcpdump.x86_64 14:4.9.2-3.el7 @Base
wget.x86_64 1.14-18.el7 @Base