每12小时备份压缩/etc/目录到/backup中,格式为etc-年-月-日-时-分-秒.tar.gz
增加crontab任务
1 */12 * * * /usr/bin/tar -cpzf /backup/etc-`date +%Y-%m-%d-%H-%M-%S`.tar.gz /etc
rpm命令详解
rpm命令是RPM软件包管理工具。
RPM有多种基本的模式:他们是安装、查询、验证、删除等。
安装模式:rpm -i
查询模式:rpm -q
验证模式:rpm -V或-verify
删除模式:rpm -e
1.安装一个软件包
rpm -ivh
2.升级一个软件包
rpm -Uvh:如果软件包未安装,直接安装
rpm -Fvh:如果软件包未安装,则什么也不做
3.删除已安装软件包
rpm -e
4.安装参数
--force 强制安装
-- nodeps 忽略依赖,强制安装
rpm -ivh XXX.rpm --nodeps --force
5.查询一个包是否被安装
rpm -q
6.获取软件包的信息
rpm -qi
7.列出该包中有哪些文件
rpm -ql
8.列出某文件由哪个软件包安装生成的
rpm -qf
9.列出所有已安装的软件包
rpm -qa
yum的配置和使用
yum(全称为Yellow dog Updater,Modified)是一个有Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并安装,可以自动处理依赖关系,并且一次安装所能依赖的软件包。yum提供了查找、安装、删除一个、一组甚至全部软件包的命令。
语法:yum [options] [command] [package ...]
其中[options]可选,包括-h(帮助),-y(安装过程提示选择全部为"yes"),-q(不显示安装过程)等。[command]为要进行的操作,[package...]是操作的对象。
安装
yum install 全部安装
yum install package1 安装指定软件包package1
yum groupinstall group1 安装程序组group1
更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1
查找和显示
yum info package1 显示软件包package1信息
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况
yum groupinfo group1 显示指定程序组group1信息
yum search string 根据关键字string查找安装包
删除程序
yum remove package1 删除程序包package1
yum eraser package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况
清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的headers
yum clean oldheaders 清除缓存目录下旧的headers
yum clean
yum clean all (=yum clean packages;yumclean oldheaders)清除缓存目录下的软件包及旧的headers
自建yum仓库
yum函数介绍
不管哪家的YUM源,都会有一个特殊的的文件夹路径,这对理解yum函数很重要,下面用https://opsx.alibaba.com/mirror,以centos7系统为例介绍。
让我们查看yum仓库中的"CentOS-Base.repo"文件
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
其中$开头的就是yum函数
$releaserver:代表系统的版本,对Yum而言指的是redhat-release版本,指向发行版的主版本号,只替换为主版本号,如RedHat 6.5,则替换为6
$basearch:系统基本架构,如果是8686,i586等基本架构就为i386,如果是X86_64就是X86_64了。
$arch:系统架构
比如现在的系统是CetnOS7.6,系统架构是x86_64
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
会自动替换为
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
自建仓库需要用到的命令介绍
createrepo(create repo):创建仓库,在自建仓库时,使用命令createrepo会自动帮我们生成repodata文件作为软件的仓库,而其目录下有四个必要文件:filelists.xml.gz,other.xml.gz,primary.xml.gz,repomd.xml,其中最重要的是repomd.xml文件。一般出现的找不到repodata目录或文件的原因通常有三个:一个是路径问题;二是没有生成repodata目录;三是*.repo配置文件冲突
createrepo默认没有安装,需要提前安装。
yum -y install createrepo
自建YUM仓库的方法
- 基于光盘镜像创建YUM仓库
- 同步互联网YUM源
这里使用基于光盘镜像的方式自建YUM源
1.提供一个web服务器
firewall-cmd --zone=public --add-service=http
setenforce 0
yum -y install nginx
systemctl start nginx
2.给自建仓库提供数据
mount /dev/cdrom /mnt
cp -a /mnt/Packages/* /usr/share/nginx/html
3.使用createrepo给自建仓库提供元数据
[root@node2 ~]# createrepo /usr/share/nginx/html/
Spawning worker 0 with 3576 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@node2 ~]# ll /usr/share/nginx/html/repodata/
total 11824
-rw-r--r--. 1 root root 2863333 Dec 16 08:47 2fa319ec9571fef9ffb3924ed2c1f7b86027b5be33e0a90c83ee36e44b9f8097-primary.sqlite.bz2
-rw-r--r--. 1 root root 1382995 Dec 16 08:47 6563b06860f25c5a1fa3fda1e571d1efbc298258ab7fef94b2b075316a2fbd87-primary.xml.gz
-rw-r--r--. 1 root root 2902099 Dec 16 08:47 65666f9c4ae025e8363f203bc436b6f8810ca6eeb92a9674945e9401846f400b-filelists.xml.gz
-rw-r--r--. 1 root root 2882134 Dec 16 08:47 9df0dccbf380d7af65397d20846942062c7e270dd81a6c36824dd360caad464f-filelists.sqlite.bz2
-rw-r--r--. 1 root root 1189885 Dec 16 08:47 d683b9a986e59a7b0347c34b28137c89611b4013d1f569f22e79f014e83bfb74-other.sqlite.bz2
-rw-r--r--. 1 root root 872337 Dec 16 08:47 ef04b6dc0b5b437bed9e05a44e5f9978d62781d640ebcf09dc4098a806c774fd-other.xml.gz
-rw-r--r--. 1 root root 3008 Dec 16 08:47 repomd.xml
可以看到/usr/share/nginx/repodata目录已经自动生成所有元数据,仓库信息等文件。
4.配置和验证yum仓库
[nginx-repo]
name=self nginx repo
baseurl=http://192.168.2.72/
enabled=1
gpgcheck=0
如果需要验证RPM包的合法性就需要复制/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7到自建仓库中去,另外还需要在self.repo文件中开启gpgcheck=1。操作如下
cp /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 /usr/share/nginx
[nginx-repo]
name=self nginx repo
baseurl=http://192.168.2.72/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[root@localhost ~]# yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,019
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 12,744
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 314
nginx nginx repository 136
nginx-repo self nginx repo 3,576
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 598
repolist: 27,387
5.rsync同步官方YUM源
当自己的YUM仓库建立好了之后,可能需要同步官方的YUM源,另外也可能需要同步一些比如Fedora EPEL的yum源。如果对方支持rsync的话可以使用rsync同步。
如果:CentOS阿里yum源
rsync -avrtH --delete rsync://mirrors.aliyun.com/centos/7/ /usr/share/nginx/html
here document在bash脚本中使用
#!/bin/bash
cat << EOF > output.sh
(1) disk: show disk info
(2) mem: show mem info
(3) cpu:show cpu info
(*) quit
EOF
cat output.sh
sed用法
sed:Stream Editor文本流编辑,sed是一个"非交互的"面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输出到屏幕,可以把只匹配到内容出到屏幕。还可以对原文件改动,但不再输出到屏幕结果。
语法
sed [option] 'sed command' filename
sed的脚本格式
sed [option] -f 'sed script' filename
命令选项
-n:只打印模式匹配的行
-e:直接在命令行模式上进行sed动作编辑,此为默认选项
-f:将sed的动作写在一个文件内,用-f filename执行filename内的sed动作
-r:支持扩展表达式
-i:直接修改文件内容
sed在文件中查询文本的方式
x x为行号
x,y 表示行号从x到y
/pattern 查询包含模式的行
/pattern /pattern 查询包含两个模式的行
/pattern/,x 在给定行号上查询包含模式的行
x,/pattern/ 通过行号和模式查询匹配的行
x,y! 查询不包含指定行号x和y的行
sed的编辑命令
p 打印匹配行(和-n一起使用)
= 显示文件行号
a 在定位行号后附加新文本信息
i 在定位行号后插入新文本信息
d 删除定位行
c 用新文本替换定位行
w filename 写文到一个文件,类似输出重定向 >
r filename 从另一个文件中读文本,类似输入重定向 <
s 使用替换模式替换相应模式
l 显示与八进制ASCII代码等价的控制符
{} 在定位行执行的命令组,用分号隔开
n 从另一个文件中读文本下一行,并从下一条命令而不是第一条命令开始对其的处理
N 在数据流中添加下一行以创建用于处理的多行组
g 将模式2粘贴到/pattern n/
y 传送字符,替换单个字符