1, 每 12 小时备份并压缩 / etc / 目录至 / backup 目录中, 保存文件名称格式为,"etc - 年 - 月 - 日 - 时 - 分. tar.gz"
先测试命令
tar -zcPf /backup/etc-$(date +%Y-%m-%d-%H-%M-%S).tar.gz /etc/*
这里的参数 P, 表示使用绝对路径
- [[email protected] ~]# 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///: 查找替换, 其分隔符可以自行指定, 常用的有[email protected]@@, 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
来源: http://www.bubuko.com/infodetail-3161287.html