Linux基础知识-week5

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

先测试命令

tar -zcPf /backup/etc-$(date +%Y-%m-%d-%H-%M-%S).tar.gz /etc/*

这里的参数P,表示使用绝对路径

[root@study ~]# ls /backup

etc-2019-08-18-02-13-27.tar.gz

命令执行成功

然后编辑/etc/crontab文件, 创建任务

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

rmp命令:rpm [options] [package_file]

               安装: -i 或者- - install

               升级: -U –update -F –freshen

               卸载: -e  -- erase

               查询 -q --query

               校验: -V - - verify

               数据库维护:- - builddb, - - initdb

(1)安装

 rpm {-i|--install} [install-options] PACKAGE_FILE ...

      -v Print verbose information 输出安装信息

      --test -Do not install the package, simply check for and report potential conflicts.

      不实际安装rpm包

(2)重新安装

 [--replacefiles] [--replacepkgs]

               --replacepkgs 其实是一个install option

              Install the packages even if some of them are already installed on this system.

(3)升级

               rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

               升级或安装

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

               This will upgrade packages, but only ones for which an earlier version is installed.

               只升级

如果某源程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名后提供,filename.rpmnew

(4) 卸载

rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts]

           [--notriggers] [--test] PACKAGE_NAME ...

               -e --erase   package_name

               --allmatches:卸载所有匹配指定名称的程序包的各版本

               --test: 测试卸载 dry run模式

(5)  查询

rpm {-q|--query} [select-options] [query-options]

    select options:

               package_name: 查询指定的程序是否包已经安装,以及版本

               -a   --all:所有的包

               -f  --file Query package owning FILE.

                              查询指定的文件由哪个程序包安装生成

               {-p,--package PACKAGE_FILE]

               Query an (uninstalled) package PACKAGE_FILE. 需要结合query options使用

               --whatprovides capability 指定的capability有哪些程序包提供

               --whatrequires capability查询指定的capability被哪个包所依赖

    query options:

               [--changelog]  查询rpm的changelog

               [-c,--configfiles] 查询指定的程序的配置文件

               [-d,--docfiles]  查询指定的程序包提供的文档

              [--provides] List capabilities this package provide

               [-R,--requires] 查询程序包的依赖关系

               [--scripts] 查看程序包自带的脚本

               -i, --info Display package information, including name, version, and description.

               例如我们要查询一个已安装的rpm包的信息,可以如下使用:

               rpm -qi package_name

               如果要查询一个未安装rpm包的信息呢:

               rpm        -qpi package_name

(6) 校验

rpm {-V|--verify} [select-options] [verify-options]

获取并导入新的包制作者的密钥

centOS7:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

安装程序包时会自动验证

也可以手动验证

rpmkeys --import PUBKEY ...

rpmkeys {-K|--checksig} PACKAGE_FILE ...

可以在rpmkeys中查看相关信息

(7)rpm数据库管理

rpm数据库在: /var/lib/rpm,所有的查询都是通过此数据库进行

rpm {--initdb|--rebuilddb}

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

yum [options] [command] [package ...]

要使用yum,需要编辑yum的配置文件,提供yum源,两个配置文件为:

/etc/yum.comf  为所有仓库体提供公共配置

/etc/yum.repos.d/*.repo 指定具体的yum reposity

具体的使用命令

yum [options] [command] [package ...]

显示仓库列表:             

               yum repolist [all|enabled|disabled]

显示程序包

               yum list [all | blob_exp1] [blob_exp2] […]

               yum list {available|installed|updated} [blob_exp1]

安装程序包

               yum install package

重新安装

               reinstall

升级程序包

               update

降级

               downgrade

检查可用升级

               check-update

卸载程序包

               remove

查看程序包information

               info

查看指定的特性(可以是某文件)是由哪个程序包提供的

               provides | whatprovides feature1 …

清理本地缓存

               clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

构建缓存

               mackcache

搜索

               search string1

               以指定的关键字搜索程序包名及summary信息

显示依赖关系

                deplist

版本信息

               version

查看yum事务历史

               history

包组管理

               groupinstall grouyp1

               groupupdate       group

               grouplist

               groupremove

               groupinfo

创建本地yum源

(1)挂载光驱至/media/cdrom

               mkdir /media/cdrom

    mount -r /dev/cdrom /media/cdrom

    查看cdrom中的内容

确认目录中repodata

(2)创建local.repo

在/etc/yum.repos.d创建新的本地源

vim local.repo, 或者编辑/etc/yum.repos.d/CentOS-Media.repo

这里已经指定了baseurl, 只需要修改enabled=1即可

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

(1)disk:show disk info信息
(2)mem: show memory info信息
(3)cpu: show cpu info信息
(*)quit

#!/bin/bash
#

cat << EOF

disk) show disks info

mem) show memory info

cpu) show cpu info

*) QUIT

EOF

 
read -p "Your choice: " option

if [[ "$option" == "disk" ]];then

            fdisk -l /dev/[sh]d[a-z]

elif [[ "$option" == "mem" ]];then

            free -m

elif [[ "$option" == "cpu" ]];then

            lscpu

else

            echo "Unknown option"

            exit 3

fi

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

sed [option]… ‘scripts’ [input-file]

常用选项:

               -n : 不输出模式空间中的内容至屏幕    

               -e script, --expression=script: 多点编辑

               -f /path/to/sed_script_file

               -r –regexp-extended : 支持扩展正则表达式

               -i[SFFIX], --in-place[=SUFFIX]: 直接编辑原文件

地址定界:

               (1) 不给地址:对全文进行处理

               (2) 单地址:

                              #: 指定行

                              /pattern/: 被此模式所匹配到的每一行

               (3) 地址范围

                              #,#

                              #,+#

                              #, /pattern1/

                              /pattern1/, /pattern2/

                              $ 最后一行

               (4) 步进: ~

                              1~2 所有奇数行

                              2~2 所有偶数行

编辑命令:

               d: 删除

               例如 sed ‘1,5d’ /etc/fstab, 第1-5行没有输出

 

   p: print he current pattern space 显示模式空间中的内容

     a \text: append  在行后面追加文本text,支持使用\n实现多行追加 

   I \text: insert 在行前面插入文本text

例如在第三行前面插入一行

  c \text: 把匹配到的行替换为此处指定的文本

  w /path/to/somefile: 保存模式空间匹配到的行至指定的文件中

  r /path/from/somefile 读取指定文件的内容至当前模式匹配的行处, 文件合并

  =: 为模式空间匹配到的行打印行号

  ! : 条件取反    地址定界!编辑命令

  s///: 查找替换,其分隔符可以自行指定,常用的有s@@@, s###等

  g: 全局替换

       w /path/to/somefile 将替换成功的结果保存至指定文件中

       p: 显示替换成功的行

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

这个日志文件能提供一下吗

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

(1) 自建一个yum目录 mkdir /myyum, 设置为yum源

(2) copy几个RPM包至此目录,例如 ftp-0.17-67.el7.x86_64.rpm

(3) 创建自己的yum源

createrepo /myyum/

(4)编辑配置文件

[myyum]

name=my local yum

baseurl=file:///myyum/

gpgcheck=0

(5)检测更新yum源

yum repolist

已经添加上

现在安装ftp yum install ftp

猜你喜欢

转载自www.cnblogs.com/nuanyangyang/p/11374463.html