1、每12小时备份并压缩etc目录至backup目录中,保存文件名称格式为,etc-年-月-日-时-分.tar.gz先测试命令tar-zcPfbackupetc-$(date+
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 <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