本文共 7658 字,大约阅读时间需要 25 分钟。
[root@localhost backup]# tar -czv -f /backup/etc-"$(date +%F-%H-%M)".tar.gz /etc #测试基本命令是否可以正确运行[root@localhost backup]# crontab -e #编辑循环任务 0 */12 * * * tar -czv -f /backup/etc-"$(date ++%F-%H-%M)".tar.gz /etc
二进制应用程序的组成部分:
二进制文件、库文件、配置文件、帮助文件 程序包管理器: debian:deb文件,dpkg包管理器 redhat:rpm文件,rpm包管理器 rpm:Redhat Package Manager RPM Package Manager UEFI(统一扩展固件接口)硬件支持GPT,使操作系统启动 软件运行和编译: ABI:Application Binary Interface WINDOWS和Linux不兼容 ELF PE 库级别的虚拟化: Linux:WINE Windows:Cygwin API:Application Prigramming Interface POSIX:Portable OS 程序源代码–>预处理–>编译–>链接 静态编译:.a 动态编译:。so包命名:
源代码:name-VERSION.tar.gz|bz2|xz VERSION:major.minor.release rpm包命名方式: name-VERSION-release.arch.rpm 例:bash-4.2.46-19.el7.x86)64.rpm VERSION:major.minor.release release:release.OS 常见的arch: x86:i386,i486,i586,i686 x86_64:x86_64,amd64 powerpc:ppc 跟平台无关:noarch 包:分类和拆包 Application-VERSION-ARCH.rpm:主包 Application-devel-VERSION-ARCH.rpm:开发子包 Application-utils-VERSION-ARCH.rpm:其他子包 Application-libs-VERSION-ARCH.rpm:其他子包 包之间:可能存在依赖关系,甚至循环依赖 解决依赖包管理工具 yum:rpm包管理器的前端工具 apt-get:deb包管理器前端工具 zypper:suse上的rpm前端管理工具 dnf:Fedora 18+ rpm 包管理器前端管理工具包管理器:
程序包管理器: 功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作。 包文件组成(每个包独有) RPM包内的文件 RPM的元数据,如名称,版本,依赖性,描述等。 安装或卸载时运行的脚本 数据库(公共):/var/lib/rpm 程序包名称及版本 依赖关系 功能说明 包安装后生产的各文件路径及校验码信息程序包的来源:
管理程序包的方式: 使用包管理器:rpm 使用前端工具:yum,dnf 获取程序包的途径: (1)系统发版的光盘或官方的服务器: centos镜像: https: (2)项目官方站点 (3)第三方组织: Fedora-EPEL:http: (4)自己制作:第三方的建议检查包的合法性rpm包管理:
centos系统上使用rpm命令管理程序包: 安装、卸载、升级、查询、校验、数据库维护 安装: rpm{-i|–install}[install-options]PACKAGE_FILE… -v:verbose -vv: -h:以#显示程序包管理执行进度 rpm -ivh PACKAGE_FILE…[install-options]:
--test:测试安装,但不真正执行安装,即dry run模式 --nodeps:忽略依赖关系 --replacepkgs|replacefiles --nosignature:不检查来源合法性 --noscripts:不执行程序包脚本 %pre:安装前脚本;–nopre %post:安装后脚本;–nopost %pre:安装前脚本;–nopreun %pre:安装前脚本;–nopostunrpm包升级:
升级: rpm{-U|–upgrade}[install -options] PACKAGE FILE… rpm{-F|–freshen}[install -options] PACKAGE FILE… upgrade:安装有旧版程序包,则"升级"(如果不存在旧版程序包,则"安装" fresh:安装有旧版程序包,则"升级"(如果不存在旧版程序包,则不知想升级操作 rpm -Uvh PACKAGE_FILE… rpm -Fch PACKAGE_FILE… --oldpackage:降级 --force:强制安装 注意: (1)不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核 (2)如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留包查询:
rpm{-q|–query}[select-options]【query-options】 [select-options] -a:所有包 -f:查看指定的文件由哪个程序包安装生成 -p rpmfile:针对未安装的程序包文件做查询操作 --whatprovides CAPABILIITY:查询指定的CAPABILITY由哪个包所提供 --whatrequires CAPABILIITY:查询指定的CAPABILITY由哪个包所依赖 rpm2cpio 包文件|cpio -itv 预览包内文件 rpm2cpio 包文件|cpio -id ”*.conf“ 释放包内文件[query-options]
--changelog:查询rpm包的changelog -c:查询程序的配置文件 -d:查询程序的文档 -i:information -l:查看指定的程序包安装后生成的所有文件 --scripts:程序包自带的脚本 --provides:列出指定程序包所提供的CAPABILITY -R:查询指定的程序包所依赖的CAPABILITY 常用查询用法: -qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE, -qd PACKAGE -qpi PACKAGE_FILE,-qpl PACKAGE_FILE,… -qa 包卸载: rpm{-e|–erase}[–allmatches]【–nodeps】【–noscripts】【–notriggers】【–test】PACKAGE_NAME…包校验:
包来源合法性验证及完整性验证 完整性验证:SHA256 来源合法性验证:RSA 公钥加密 对称加密:加密、解密使用同一密钥 emsp; 非对称加密:密钥是成对儿 public key:公钥,公开所有人 secret key:私钥,不能公开 导入 所需要公钥 rpm -k|checksig rpmfile 检查包的完整性和签名 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 CentOS 7 发行版光盘提供:RPM-GPG-KEY-Centos-7 rpm -qa “gpg-pubkey”rpm数据库:
数据库重建: /var/lib/rpm rom{–initdb|–rebuilddb} initdb:初始化 如果事先不存在数据库,则新建之 否则,不执行任何操作 rebuildb:重建已安装的包头的数据库索引目录(1)disk:show disk info信息
(2)mem: show memory info信息 (3)cpu: show cpu info信息 (*)quit#!/bin/bashch="plese choose the menu(1-4):"select menu in disk mem cpu quit;do case $menu in disk) df -h break ;; mem) free -h break ;; cpu) lscpu break ;; quit) killall select.sh break ;; *) echo error ;; esacdone
处理文本的工具sed
Stream EDitor,行编辑器 sed是一种流编辑器 ,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如’D’的特殊命令,那会在两个循环之间情况模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。 功能主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等 参考sed工具
sed[option]…‘scrept’ inputfile… 常用选项: -n:不输出模式空间内容到屏幕,即不自动打印 -e:多点编辑 -f:/PATH/SCRIPT_FILE:从指定文件中读取编辑脚本 -r:支持使用扩展正则表达式 -i.bak:备份文件并原处编辑 script: “地址命令” 地址定界: (1)不给地址:对全文进行处理 (2)单地址: #:指定的行,$:最后一行 /pattern/:被此处模式所能够匹配到的每一行 (3)地址范围: #,# #,+# /pat1/,/pat2/ #,/pat1/ (4)~:步进 1~2奇数行 2~2偶数行 编辑命令: d:删除模式空间匹配的行,并立即启用下一轮循环 p:打印当前模式空间内容,追加到默认输出之后 a[]text:在指定行后面追加文本(支持使用\n实现多行文本) i[]text:在行前面插入文本 c[]text:替换行为单行或多行文本 w/path/somefile:保存模式匹配的行至指定文件 r/path/somefile:读取指定文件的文本至模式空间中匹配到的行后 =:为模式空间中的行打印行号 !:模式空间中匹配行取反处理 **sed///:**查找替换,支持使用其他分隔符,s@@@,s### 替换标记: g:行内全局替换 p:显示替换成功的行 w/path/to/somefile:将替换成功的行保存至文件中 /etc/default/grub这个文件可以影响网卡命名,方便批量管理机器 要实现不同系统网卡名一样,所以在这后面加 字符高级编辑命令:
P:\n回车 换行 如果模式空间有几行,只打印第一行,如果是小p就全部打印 h:模式空间读出来覆盖保持空间 H:模式空间读出来追加保持空间 g:从保持空间去除内容覆盖至模式空间 G:保持模式内容追加至模式空间 x:把模式空间中的内容与保持空间中的内容进行互换 n:读取匹配行的下一行覆盖模式空间第一行 N:第一行第二行都在模式空间/ 读取匹配行的下一行追加模式空间 d:删除模式空间的行 D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本,并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间不包含换行符,则会发出d命令那样启动正常的新循环 如果有好几行会删除第一行,并且不会读新的下一行sed示例:
sed ‘2p’ /etc/passwd_____显示第二行,默认全部打印,第二行打印2遍 sed -n ‘2p’ /etc/passwd 只打印第二号 sed -n ‘1,4p’ /etc/passwd 只打印1~4行 sed -n ‘/root/p’ /etc/passwd _____打印包含root行 sed -n '2,/root/p /etc/passwd _____打印第2行到包含root的行 sed -n ‘/^KaTeX parse error: Expected group after '_' at position 6: /=' _̲____ file 空行显示行…/p’ -e ‘/^$/=’ _____空行显示行号并且把行业打印出来 sed ‘/root/a\superman’ etc/passwd行后 _____在包含root行后面追加supermanZ字符串 sed ‘/root/i\superman’ etc/passwd 行前 _____在包含root行前面加superman sed ‘/root/c\superman’ etc/passwd 代替行 _____在包含root行替代superman nl /etc/passwd | sed '2a tea '_____在第二行追加 tea#!/bin/bashread -p "please input ipcount >= " ip awk '{print $1}' /var/log/httpd/access_log20190 | sort |uniq -c |sort -n|awk '$1>=$ip {print $1,$2}'
[root@localhost scripts]# yum install -y ftp --enablerepo=Local Yum[root@localhost scripts]# yum install -y openssh --enablerepo=Local Yum[root@localhost scripts]# yum install -y wget --enablerepo=Local Yum[root@localhost scripts]# yum install -y tcpdump --enablerepo=Local Yum
转载地址:http://vzkgn.baihongyu.com/