学习总结第五期

1、每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,"etc-年-月-日-时-分.tar.gz"

 

crontab -e */1 * * * * /usr/bin/tar -zPcf /data/backups/etc-`date +\%F-\%H-\%M`.tar.gz /etc     # 注意tar命令要用绝对路径;tar命令的f参数要放在最后,P参数可以防止出现邮件报错;%要用转义符。

  

2、rpm包管理功能总结以及实例应用演示。

 

rpm包的功能:将编译好的应用程序的各组成文件打包成一个或者多个程序包文件,从而方便的实现程序包的安装、升级、卸载和查询等功能。

组织格式:(1)程序包的清单文件(即安装或者卸载时需要运行的脚本),每个程序包都单独实现

     (2)数据库:/usr/lib/rpm/目录下,主要是提供程序包的名称和版本、包与包的依赖关系、软件功能说明以及安装生成各文件路径及校验信息等

获取程序包的途径:

(1)系统的发行版的光盘或者官方的文件服务器或者镜像站点,主要有http://mirrors.aliyun.com;http://mirrors.suhu.com ; http://mirrors.163.com

(2)项目的官方站点:如http.apache.org ; www.zabix.org

(3)第三方组织,如epel或者搜索工具(pkgs.org 、 rpmfind.net 、rpm.pbone.net)

(4)自己制作的rpm包

rpm程序包管理

Centos系统上rpm命令管理程序包(安装、升级、卸载、查询和校验以及数据库维护)

安装

格式:rpm [OPTIONS]  [Package_file]

                      -i | --install  :安装

[install-options] :-v:显示安装过程中的详细信息

        -h:以#显示进度条

        --test:测试安装,不真正安装,仅报告依赖信息和冲突信息

        --nodeps:忽略依赖关系

        --replacepkgs:覆盖安装

        --force:强制安装

常用组合选项:-ivh;-ivvh(显示更加详细的信息)

演示:安装zsh程序包

~]# rpm  -ivh  zsh-5.0.2-7.e17.x86_64.rpm

升级

rpm {-U | --update }[install options] PACKAGE_FILE

      -U :升级或安装

rpm {-F | --freshen }[install options] PACKAGE_FILE

      -F:升级

组合使用:-Uvh;-Fvh

[install options] :

--test:测试安装,不真正安装,仅报告依赖信息和冲突信息

        --nodeps:忽略依赖关系

        --oldpackages:降级到旧版本

注意:(1)不要对内核执行升级,linux允许多个内核共存,因此可以直接安装多个不同版本的内核

   (2)如果程序包的配置文件安装之后曾被修改,升级时,新版本的文件不会覆盖老版本的配置文件,而是把新版本的配置文件重命名后保存(加后缀.rpmnew)

卸载:移除已经安装的程序包

rpm {-e |--erase}  [OPTIONS] PACKAGE_FILE

                              --allmatches:若一个程序包同时安装多个版本,则一次性卸载

         --nodeps:忽略依赖关系

         --test:测试卸载

查询:查看某包是否已经安装,以及检查安装的所有的包,还可以查询某包的具体信息

用法:rpm {-q | --query} [selece-options]  [query-options]  

[selece-options] :挑选选项

        rpm -q PACKAGE_NAME:查询指定的包是否已经安装以及其版本

        rpm  -qa :查询已经安装的程序包

        rpm  -qf /PATH/TO/SMEFILE :查询某文件是由哪个安装包生成

        rpm -qpi:查询尚未安装的程序包的相关信息      

        --whatprovides CAPABILITY :查询制定的CAPABBILITY是由哪个安装包生成

        --whatrequires CAPABILITY:查询制定的CAPABBILITY是被哪个安装包所依赖

 [query-options] :查询选项

(1)--change:查询某rpm包的修改日志

如:~]# rpm -q --change bash

(2)-l | --list :列出某安装包生成的文件列表

如:~]# rpm -ql bash 

(3)-i :查询某包的简要说明信息

如:rpm -qi bash

(4)-c:查询某包安装完成后生成的所有配置文件

如:~]#rpm -qc bash

(5)-d:查询指定程序包提供的帮助文档

如:~]#rpm -qd bash

(6)--provides:列出指定程序包提供的CAPABILITY;--whatprovides:查询bash能力由哪个程序包提供

如:~]#rpm -q  --provides bash  ;      ~]#rpm -q  --whatprovides bash 

(7)--requires:查询某包依赖的CABABILITY

如:rpm -q --requires bash

(8)--scripts:查询某包安装或卸载时的执行脚本(脚本由4类)

如:rpm -q --scripts bash

四类脚本:preinstall:安装过程开始之前执行的脚本

       postinstall:安装过程完成之后执行的脚本

       preuninstall:卸载之前执行的脚本

       postuninstall:卸载过程完成之后执行的脚本

示例:

[root@192 ~]# rpm -qi bash            #########查询bash的简要说明信息
Name        : bash
Version     : 4.2.46
Release     : 30.el7
Architecture: x86_64
Install Date: 2019年07月28日 星期二 21时34分37秒
Group       : System Environment/Shells
Size        : 3667709
License     : GPLv3+
Signature   : RSA/SHA256, 2018年04月25日 星期三 18时54分19秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : bash-4.2.46-30.el7.src.rpm
Build Date  : 2018年04月11日 星期三 08时55分22秒
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.gnu.org/software/bash
Summary     : The GNU Bourne Again shell
Description :
The GNU Bourne Again shell (Bash) is a shell or command language
interpreter that is compatible with the Bourne shell (sh). Bash
incorporates useful features from the Korn shell (ksh) and the C shell
(csh). Most sh scripts can be run by bash without modification.
[root@192 ~]# rpm -qc httpd                        ###########查询httpd包安装之后生成的配置文件
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean
/etc/sysconfig/httpd

  

校验:查询安装之后生成的文件是否发生了改变

格式:rpm {-V | verify} [select-option] [verify-option]

[root@192 ~]# rpm -V httpd

 

3、yum的配置和使用总结以及yum私有仓库的创建。

 

YUM: Yellowdog Update Modifier,完成RHEL系列前端自动解决依赖关系安装工具,依赖rpm存在

YUM配置文件路径

/etc/yum.conf:为所有yum仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置

/etc/yum.conf 主配置定义

[root@zabbix-mysql ~]# cat /etc/yum.conf
[main]      # 通用主配置段
cachedir=/var/cache/yum/x86_64/$releasever      # 缓存文件文件路径
keepcache=1     # 缓存到本地的文件是否保存 
debuglevel=2    # 调试级别   
logfile=/var/log/yum.log    # 安装的日志文件
exactarch=1     # 精确严格的平台 release 匹配
obsoletes=1
gpgcheck=1      # 检测来源合法性和完整性
plugins=1       # 支持插件机制
installonly_limit=5     同时安装多少程序包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release     #当前发行版本号从哪儿获取

[root@zabbix-mysql ~]# ll /var/cache/yum/x86_64/7
total 28
drwxr-xr-x 4 root root 4096 May 21 23:09 aliyun
drwxr-xr-x 4 root root 4096 Nov 21 18:50 base
drwxr-xr-x 4 root root 4096 Apr 16  2018 centos7-yum
drwxr-xr-x 4 root root 4096 Nov 21 18:50 extras
drwxr-xr-x 4 root root  132 Nov 20  2018 mysql57-community
drwxr-xr-x 4 root root  132 Nov 20  2018 mysql-connectors-community
drwxr-xr-x 4 root root  132 Nov 20  2018 mysql-tools-community
-rw-r--r-- 1 root root  183 May 21 23:09 timedhosts
-rw-r--r-- 1 root root    0 May 21 23:09 timedhosts.txt
drwxr-xr-x 4 root root 4096 Nov 21 18:50 updates
drwxr-xr-x 4 root root 4096 Nov 22 18:16 zabbix
drwxr-xr-x 4 root root   73 Nov 22 18:16 zabbix-non-supported

[root@zabbix-mysql ~]# tail /var/log/yum.log
Feb 14 17:33:08 Installed: apr-util-1.5.2-6.el7.x86_64
Feb 14 17:33:08 Installed: httpd-tools-2.4.6-88.el7.centos.x86_64
Mar 28 09:52:05 Installed: 2:nmap-ncat-6.40-16.el7.x86_64
Apr 08 10:55:19 Installed: libcgroup-0.41-20.el7.x86_64
Apr 08 10:55:19 Installed: libcgroup-tools-0.41-20.el7.x86_64
Apr 08 16:00:21 Updated: 14:libpcap-1.5.3-11.el7.x86_64
Apr 08 16:00:21 Installed: 14:tcpdump-4.9.2-3.el7.x86_64
Apr 28 21:52:15 Installed: iotop-0.6-4.el7.noarch
May 08 18:03:45 Installed: sysstat-10.1.5-17.el7.x86_64
May 21 23:09:34 Installed: 2:nmap-6.40-16.el7.x86_64

**yum仓库(*.repo)配置文件定义**

[root@zabbix-mysql yum.repos.d]# cat aliyun.repo
[aliyun]        # 仓库ID
name=aliyun     
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64    # yum 仓库指定的访问路径(阿里源)
enabled=1   # 启用此仓库
gpgcheck=0  # 检查完整性和来源合法性

YUM 常用命令

  • yum repolist 显示仓库列表
  • yum list 显示程序包
  • yum search 模糊查找程序包
  • yum install 安装程序包
  • yum remove 卸载程序包
  • yum update [package1] [package2] [...] 升级操作
  • yum downgrade package1 [package2] [...] 降级操作
  • yum info [package1] [package2] [...] 查看程序包简要信息
  • yum provides | whatprovides feature1 [feature2] [...] 查看指定的特性(可以是某文件)是由哪个程序包所提供
  • yum clean <packages | metadata | expire-cache | rpmdb | plugins | all > 清理本地缓存
// 查看yum仓库
[root@zabbix-mysql yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                repo name                                             status
!aliyun                                                aliyun                                                10,019 repolist: 10,019 // 模糊查询安装包 [root@zabbix-mysql yum.repos.d]# yum search ftp Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile ================================================ N/S matched: ftp ================================================= ftp.x86_64 : The standard UNIX FTP (File Transfer Protocol) client lftp-scripts.noarch : Scripts for lftp syslinux-tftpboot.noarch : SYSLINUX modules in /var/lib/tftpboot, available for network booting tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP) tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP) vsftpd.x86_64 : Very Secure Ftp Daemon vsftpd-sysvinit.x86_64 : SysV initscript for vsftpd daemon curl.x86_64 : A utility for getting files from remote servers (FTP, HTTP, and others) lftp.i686 : A sophisticated file transfer program lftp.x86_64 : A sophisticated file transfer program wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols Name and summary matches only, use "search all" for everything. // 查询已安装与未安装的匹配我包 [root@zabbix-mysql yum.repos.d]# yum list *ftp* Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Installed Packages ftp.x86_64 0.17-67.el7 @centos7-yum Available Packages lftp.i686 4.4.8-11.el7 aliyun lftp.x86_64 4.4.8-11.el7 aliyun lftp-scripts.noarch 4.4.8-11.el7 aliyun syslinux-tftpboot.noarch 4.05-15.el7 aliyun tftp.x86_64 5.2-22.el7 aliyun tftp-server.x86_64 5.2-22.el7 aliyun vsftpd.x86_64 3.0.2-25.el7 aliyun vsftpd-sysvinit.x86_64 3.0.2-25.el7 aliyun 

创建私有 yum 仓库

  • 第一种:使用发行光盘作为yum仓库

    • 挂载光盘或ISO文件到某一挂载点
    mkdir /mnt/cdrom        
    mount /dev/sr0 /mnt/cdrom
    • 备份原来的yum源:
    mkdir /etc/yum.repos.d/bak       
    mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/   
    • 增加一个光盘的yum源
    #vi /etc/yum.repos.d/mybase.repo        
    [mybase]        
    name=LocalYum        
    baseurl=file:///mnt/cdrom        
    gpgcheck=0        
    enabled=1
  • 第二种,使用本地或网络rpm包手动创建

    • 第一步:安装createrepo
    • 第二步:确定repository输出方式:有两种,本地输出与网络输出。
      本地输出:提供一个放置rpm包的本地路径
      网络输出 :提供一个文件服务器,配置好ftp服务或http服务(注意防火墙要开放对应端口)

    ​ ftp服务:

    ​ 安装程序包:vsftpd

    ​ 文件存放路径:/var/ftp/pub

               启动服务:service vsftpd start
    
      http服务:

    ​ 安装程序包:httpd

    ​ 文件存放路径:/var/ftp/pub

    ​ 启动服务:service httpd start

    • 第三步:把rpm 程序包文件放入准备好的目录中,可以从光盘复制rpm 包过去。
    • 第四步:对此目录运行 createrepo 命令即可,到此就完成了本地仓库的创建。
    • 测试所创建的yum 仓库是否可用
  • 在/etc/yum.repos.d/ 目录下创建一个以repo结尾的文件,示例如下:

[root@localhost yum.repos.d]# yum info createrepo   //查看已安装的createrepo信息
[root@localhost yum.repos.d]# mkdir -p /yumtest/Packages    
[root@localhost yum.repos.d]# cp /media/cdrom/Packages/* /yumtest/Packages/     //下载所需要的所有文件到本地某个路径
[root@localhost yum.repos.d]# createrepo /yumtest/   //创建关联关系,完成后生成repodata
root@localhost yum.repos.d]# cat Local.repo    //配置yum源文件
[Local]
name=Local Yum
baseurl=file:///yumtest/
#baseurl=http://<repo_host>/Packages     //当为http网络输出时,用此配置。<repo_host>仓库主机IP,Packages为http发布目录下的软件包目录
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1

[root@localhost yum.repos.d]# yum repolist       //查看配置好的yum仓库

 

4、写一个脚本实现列出以下菜单给用户:

 (1)disk:show disk info信息

 (2)mem: show memory info信息

 (3)cpu: show cpu info信息

 (*)quit

[root@etcd03 tmp]# cat test1.sh
#!/bin/bash
read -p "Your choice:" choice
case $choice in
disk)
        fdisk -l;;
mem)
        cat /proc/meminfo;;
cpu)
        lscpu;;
*)
        exit;;
esac

   

5、sed用法总结并结合实例演示

       常用选项

-n:不输出模式空间中的内容至屏幕;
-e script, --expression=script:多点编辑;
-f  /PATH/TO/SED_SCRIPT_FILE   : 每行一个编辑命令;
-r, --regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;
  • 地址定界
1)空地址:什么都不填写时,表示对全文进行处理
2)单地址
     #:表示对指定的行
   /pattern/:被此模式所匹配到的每一行,其中模式两边的/不能省略
  • 地址范围(#表示任意数字)
#,#:从某行到某行,第二个#大于第一个#
#,+#:从某行开始加多商行 #,/pattern1/:从某行开始到第一次配到模式的行 /pattern1/,/pattern2/:从第一次匹配到的模式1到第二次匹配到哦的模式2 步进:~,#~# 从第几行 1~2:所有奇数行。从第一行开始,每次加两行读取 2~2:所有偶数行。从第二行开始,每次加两行读取
  • 编辑命令
d:         删除;
p:         显示模式空间中的内容;
a  \text:  在行后面追加文本“text”,支持使用\n实现多行追加;
i  \text:  在行前面插入文本“text”,支持使用\n实现多行插入;
c  \text: 把匹配到的行替换为此处指定的文本“text”; w /PATH/TO/SOMEFILE: 保存模式空间匹配到的行至指定的文件中; r /PATH/FROM/SOMEFILE: 读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并; =: 为模式匹配到的行打印行号; !: 条件取反; s///: 查找替换,其分隔符可自行指定,常用的有s@@@, s###等; 替换标记: g:全局替换; w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中; p:显示替换成功的行;
  • 字符串替换匹配模式
#替换/etc/passwd中的:分割符为- UID:字符
cat /etc/passwd | cut -d : -f1,3 | sed 's/:/ - UID: /'
root - UID: 0 bin - UID: 1
  • 直接修改后的数据替换原始文件
sed -i 's/text/replace/g' file

#/3g标记替换第3次出现后的匹配:
echo "thisthisthisthisthis" | sed 's/this/THIS/3g'
thisthisTHISTHISTHIS
  • 已匹配字符串标记 &
#通过正则表达式\w\+匹配每一个单词,然后用[&]替换它。&对应于之前所匹配到的单词。
echo "this is an example" | sed 's/\w\+/[&]/g'
[this] [is] [an] [example]
  • 子串匹配标记 (\1)
echo "sever EIGHT" | sed 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/g'
EIGHT sever

 

6、 用bash实现统计访问日志文件中状态码大于等于400的IP数量并排序

 

#!/bin/bash
nginx_log='/usr/local/nginx/logs/host.access.log'
code_400_count=$(awk '($9 >= 400) {print $1}' ${nginx_log} | sort -rn | uniq -c)
echo $code_400_count

   

7、 使用自制的yum源安装ftp、openssh、curl、wget、tcpdump等软件包

**关闭其它非自制yum源,设置*.repo文件中相应的enabled=0**

yum install -y ftp --enablerepo=Local Yum
yum install -y openssh --enablerepo=Local Yum
yum install -y curl --enablerepo=Local Yum
yum install -y wget --enablerepo=Local Yum
yum install -y tcpdump --enablerepo=Local Yum

  

猜你喜欢

转载自www.cnblogs.com/yurong001122/p/11260920.html