1、每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,“etc-年-月-日-时-分.tar.gz”
[root@www backup]# crontab -l
##每12小时备份一下/etc 到/backup中
0 */12 * * * tar -czvf /backup/etc-`date +%Y-%m-%d-%H-%M.tar.gz` /etc
2、rpm包管理功能总结以及实例应用演示。
rpm包查询、安装、卸载、仓库的建立
rpm命令:
rpm [OPTIONS] [PACKAGE_FILE]
-i 安装
-h 显示进度条
-U 升级
-e 卸载
-v 详细信息
-vv 更详细的信息
rpm -q PACKAGENAME
-a 列出所有已安装包
-f /PATH/TO/FILE 查询这个文件由哪个程序包提供
-p 用于实现对未安装的包查询
--changelog 查看升级日志
-l 列出程序包所生成的所有文件
-i 列出程序基本信息
-c 查询配置文件
-d 查询帮助文档
--provides 能力查询
-R 查询所有依赖包
3、yum的配置和使用总结以及yum私有仓库的创建。
/etc/yum.conf:为所有yum仓库提供公共配置
[main] 主配置
cachedir=/var/cache/yum/$basearch/$releasever 缓存文件鹿路径
keepcache=0 是否保存缓存本地文件
debuglevel=2 调试级别
logfile=/var/log/yum.log 安装日志的文件
exactarch=1 精确严格的平台release匹配
obsoletes=1 update的参数 允许更新陈旧的rpm包
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 追踪bug路径
distroverpkg=centos-release 当前版本号
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
[repositoryID] #仓库ID
baseurl=url://path/to/repository/ # yum仓库指明的访问路径
gpgcheck=0 #不检查完整性和来源合法性
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 > 清理本地缓存
---配合group可以用于一起安装
yum groupinstall group1 [group2] [...] 安装包组
yum groupupdate group1 [group2] [...] 升级包组
yum grouplist [hidden] [groupwildcard] [...] 显示包组列表
yum groupremove group1 [group2] [...] 移除包组
yum groupinfo group1 [...] 显示包组信息
创建私有yum仓库
备份原yum源
mkdir /etc/yum.repos.d.bak
mv /etc/yum.repos.d/* /etc/yum.repos.d.bak/
vim /etc/yum.repos.d/my.repo
[mybase]
name=LocalYum
baseurl=file:///mnt/cdrom 可以使用挂载光盘的
gpgcheck=0
enabled=1
或者使用createrepo
4、写一个脚本实现列出以下菜单给用户:
(1)disk:show disk info信息
(2)mem: show memory info信息
(3)cpu: show cpu info信息
(*)quit
vim display_info.sh
#!/bin/bash
#
while true
do
cat << END
===========================
1 > display disks info
2 > display memory info
3 > show cpu info
4 > quit
---------------------------
END
read -p "请选择 " option
case $option in
1)
fdisk -l /dev/sd[a-z];;
2)
cat /proc/meminfo;;
3)
lscpu;;
4)
exit 1;;
*)
echo " Useage [1-4]";;
esac
done
5、sed用法总结并结合实例演示
sed [OPTION]...'script' [input-file]
script:地址定界编辑命令
-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/somefile:保存模式空间匹配到的行至指定的文本中
r /path/from/somefile:读取指定文件的内容至当前文件被匹配到的行后面;文件合并
=:为模式匹配到的行打印行号
!:条件取反
s///:查找替换,其分隔符可自行指定,常用的有s@@@ ,s###
替换标记:
g:全局替换
w /path/somefile:将替换成功的结果保存至指定的文本中
p:显示替换成功的行
6、 用bash实现统计访问日志文件中状态码大于等于400的IP数量并排序
比如以nginx的访问日志可以
#!/bin/bash
nginx_log='/var/log/nginx/access.log'
code_400_num=$(grep -o '[4|5][0-9][0-9]' ${nginx_log} | wc -l)
code_400_sort=$(grep '[4|5][0-9][0-9]' ${nginx_log} | sort)
echo $code_400_num
echo $code_400_sort
7、 使用自制的yum源安装ftp、openssh、curl、wget、tcpdump等软件包
mkdir /myrepo
随便找点包放进去
cp /opt/centos/Packages/ftp openssh curl tcpdump /myrepo
createrepo /myrepo
修改repos.d文件
vim /etc/yum.repos.d/my.repo
[mybase]
name=myrepo
baseurl=file:///myrepo/ 可以使用挂载光盘的
gpgcheck=0
enabled=1
安装
yum install -y ftp openssh curl wget tcpdump