标签:echo 命令 模式 change 读取 相关 atl hash 因此
1.每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为,"etc-年-月-日-时-分.tar.gz"tar zcfP /backup/$(date +%F-%H-%M).tar.gz /etc/
rpm命令按照用途可以分为 安装、升级、卸载、查询、校验、数据库维护六个区块,
rpm命令: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 ...
rpm -ivh PACKAGE_FILE ...
GENERAL OPTIONS:
-v:verbose,详细信息
-vv:更详细的输出
[install-options]:
-h:hash marks输出进度条;每个#表示2%的进度;
--test:测试安装,检查并报告依赖关系及冲突消息等;
--nodeps:忽略依赖关系;不建议;
--replacepkgs:重新安装
--nosignature:不检查包签名信息,不检查来源合法性;
--nodigest:不检查包完整性信息;
# rpm -i example.rpm 安装example.rpm包;
# rpm -iv example.rpm 安装example.rpm包并在安装过程中显示正在安装的信息;
# rpm -ivh example.rpm 安装example.rpm包并在安装过程中显示正在安装的信息及安装进度;
2)升级
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
--oldpackage: 降级;
--force: 强制升级;
# rpm -Uvh example.rpm 升级example.rpm包
注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核;
(2) 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
3)卸载
rpm {-e|--erase} [--allmatches][--nodeps] [--noscripts][--test] PACKAGE_NAME ...
--allmatches:卸载所有匹配指定名称的程序包的各版本;
--nodeps:忽略依赖关系
--test:测试卸载,dry run模式
# rpm -e example 卸载软件example,注意:只输入软件包名即可,而不是文件名
4)查询
rpm {-q|--query} [select-options] [query-options]
[select-options]
PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
-a, --all:查询所有已经安装过的包;
-f FILE:查询指定的文件由哪个程序包安装生成;
-p, --package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
[query-options]
--changelog:查询rpm包的changlog;
-l, --list:程序安装生成的所有文件列表;
-i, --info:程序包相关的信息,版本号、大小、所属的包组,等;
-c, --configfiles:查询指定的程序包提供的配置文件;
-d, --docfiles:查询指定的程序包提供的文档;
--provides:列出指定的程序包提供的所有的CAPABILITY;
-R, --requires:查询指定的程序包的依赖关系;
--scripts:查看程序包自带的脚本片断;
用法:
-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ...
#rpm -q example 查询example软件包
5)校验软件包
rpm {-V|--verify} [select-options] [verify-options]
rpm -V pkg 校验软件包
6)数据库重建
通过rpm 命令查询一个rpm 包是否安装了,也是要通过rpm 数据库来完成的;有时rpm 系统出了问题,不能安装和查询,可能会是数据库出现问题,可以使用下面命令重建
rpm管理器数据库路径:/var/lib/rpm/
查询操作:通过此处的数据库进行;
获取帮助:
CentOS 6:man rpm
CentOS 7:man rpmdb
rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]
--initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;
--rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;
yum(yellow dog, Yellowdog Update Modifier)程序包管理器的前端工具,是一个在Fedora、RedHat、SUSE中的前端软件包管理器。基于rpm包管理,能够从指定服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次性安装所有依赖的软件包
客户端配置文件指定对应服务器访问方式如下几种:
ftp://
http://
nfs://
file:///
配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义:
[repositoryID]
name=repo_name #显示的名称
baseurl=url://path/to/repository/ #路径可以是网络上的也可以是本地访问路径
enabled={1|0} #是否启用包来源合法性验证
gpgcheck={1|0} #是否启用仓库
gpgkey=URL #公钥文件
enablegroups={1|0}
failovermethod={roundrobin|priority} 默认为:roundrobin,意为随机挑选;
cost=1000 #仓库开销,用来做优先级,数值越小,优先级越大默认为1000
yum的常用命令
yum insatll package 安裝软件包
yum list 列出所有可用的package和package組
yum clean all 清除所有缓冲数据
yum deplist package 列出一个包所有依赖的包
yum remove package 卸载一个包
yum创建私有仓库
创建yum仓库:
createrepo [options] <directory>
(1)disk:show disk info信息
(2)mem:show memory info信息
(3)cpu:show cpu info信息
(*)quit
#!/bin/bash
cat << EOF
(1)disk:show disk info信息
(2)mem:show memory info信息
(3)cpu:show cpu info信息
(*)quit
EOF
read -p "请输入OPTION:" option
case $option in
1)
fdisk -l /dev/[hs]d[a-z]
;;
2)
free -m
;;
3)
lscpu
;;
*)
echo "quit"
exit
;;
esac
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed用法格式:
sed [OPTION]... ‘script‘ [input-file] ...
script:地址定界编辑命令
sed常用选项:
-n:不输出模式空间中的内容至屏幕;
-e script, --expression=script:多点编辑;能指定多个编辑命令
-f /PATH/TO/SED_SCRIPT_FILE每行一个编辑命令;
-r, --regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件 ;
地址定界:
(1) 空地址:对全文进行处理;
(2) 单地址:
#:指定行;
/pattern/:被此模式所匹配到的每一行;
(3) 地址范围
#,#: 指定行到指定行
#,+#: 从指定数字行加上指定数字,例如3,+8 ,从第三行开始到第十行(包括第三行)
#,/pat1/ 从指定行到第一次匹配到的pat结束
/pat1/,/pat2/ 从第一次匹配到的pat到第二次匹配到的pat
$:最后一行;
(4) 步进:~
1~2:所有奇数行
2~2:所有偶数行
编辑命令:
d:删除;
p:显示模式空间中的内容;
a \text:在行后面追加文本“text”,支持使用\n实现多行追加;
i \text:在行前面插入文本“text”,支持使用\n实现多行插入;
c \text:把匹配到的行替换为此处指定的文本“text”;
w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;
r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
=:为模式匹配到的行打印行号;
!:条件取反;
地址定界!编辑命令;
s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
替换标记:
g:全局替换;
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
p:显示替换成功的行;
示例:
1) -n与p合用
查看/etc/passwd文件的1-3行
[root@www ~]# cat -n /etc/passwd|sed -n ‘1,3p‘
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
打印/etc/passwd文件的奇数行
[root@www ~]# cat -n /etc/passwd|sed -n ‘p;n‘
1 root:x:0:0:root:/root:/bin/bash
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11 operator:x:11:0:operator:/root:/sbin/nologin
13 gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
15 nobody:x:99:99:Nobody:/:/sbin/nologin
17 vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
19 abrt:x:173:173::/etc/abrt:/sbin/nologin
21 nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
23 ntp:x:38:38::/etc/ntp:/sbin/nologin
25 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
27 oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
29 test:x:500:500::/home/test:/bin/bash
2)d删除
删除第一行
[root@www ~]# cat -n a|sed ‘1d‘
2 Kernel \r on an \m
3
删除/etc/fstab文件中以#开头的行
[root@www ~]# sed ‘/^#/d‘ /etc/fstab
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=a237ccf4-03c2-44e2-aa7d-b793d08d8fef /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
取/etc/fstab最后一行
[root@www ~]# sed ‘$!d‘ /etc/fstab
proc /proc proc defaults 0 0
3)s查找替换
替换/etc/passwd文件里root为大写ROOT
[root@www ~]# sed ‘s/root/ROOT/‘ /etc/passwd ##默认会替换行里第1个匹配
ROOT:x:0:0:root:/root:/bin/bash
[root@www ~]# sed ‘s/root/ROOT/g‘ /etc/passwd ##加g选项会全局替换
ROOT:x:0:0:ROOT:/ROOT:/bin/bash
输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;
echo "/var/log/messages/" | sed ‘s@[^/]\+/\?$@@‘
sed -n -r ‘/\<40[0-9]\>/p‘ /var/log/httpd/access_log|cut -d" " -f1 |sort|uniq -c
使用光盘镜像中的包模拟创建本地仓库
[root@www ~]# mount -r -t iso9660 /dev/cdrom /media/cdrom/
[root@www ~]# mkdir -p /yumrepo/Packages ###创建本地packages目录
###将需要的Packages拷贝到本地目录
cp /media/cdrom/Packages/ftp-0.17-67.el7.x86_64.rpm /yumrepo/Packages/
cp /media/cdrom/Packages/openssh-* /yumrepo/Packages/
cp /media/cdrom/Packages/curl-7.29.0-35.el7.centos.x86_64.rpm /yumrepo/Packages/
cp /media/cdrom/Packages/wget-1.14-13.el7.x86_64.rpm /yumrepo/Packages/
cp /media/cdrom/Packages/tcpdump-4.5.1-3.el7.x86_64.rpm /yumrepo/Packages/
###使用createrepo命令创建本地yum源(如果没有此命令可以使用yum -y install createrepo安装)
[root@www yumrepo]# createrepo /yumrepo/
Spawning worker 0 with 15 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
修改yum配置文件,将仓库指向本地源
[root@www ~]# cd /etc/yum.repos.d/
[root@www yum.repos.d]# vim local.repo
[yumrepo]
name=yumrepo
baseurl=file:///yumrepo
enabled=1
gpgcheck=0
[root@www yum.repos.d]# yum repolist #######查看yum仓库
已加载插件:fastestmirror, security
Loading mirror speeds from cached hostfile
* base: mirror.lzu.edu.cn
* extras: mirror.lzu.edu.cn
* updates: mirrors.cqu.edu.cn
仓库标识 仓库名称 状态
base CentOS-6 - Base 6,713
extras CentOS-6 - Extras 35
updates CentOS-6 - Updates 251
yumrepo yumrepo 15
repolist: 7,014
安装ftp、openssh、curl、wget、tcpdump等软件包
yum install -y ftp openssh curl wget tcpdump
标签:echo 命令 模式 change 读取 相关 atl hash 因此
原文地址:http://blog.51cto.com/5190716/2331271