第8天压缩 xarges sed命令 yum配置 rpm包文件修复
seq 10
seq 10 |xargs echo [[email?protected] ~]#seq 1 10 |xargs echo [[email?protected] ~]#seq 1 10 |xargs 1 2 3 4 5 6 7 8 9 10 [[email?protected] ~]#seq 1 10 |xargs echo 1 2 3 4 5 6 7 8 9 10 [[email?protected] ~]# xargs 默认是属于把所有 前一个命令输入如果输出显示是空行则把空行空格全部压缩成为单个空格在输出 seq 10 |xargs -n 2 [[email?protected] ~]#seq 1 10 |xargs -n 2 1 2 3 4 5 6 7 8 9 10 echo user{1..10} |xargs -n 1 useradd [[email?protected] ~]#echo user{1..10} |xargs -n 1 useradd [[email?protected] ~]#`echo "user1 user2 " |xargs -n 1 passwd `< f1 echo {1..100000}| xargs > f1 用echo打印数字 xargs 按达到一定条件就换行 xargs 经常配合find 命令 compress 默认是f1.Z compress和gzip如果有后缀系统自动生成颜色 compress m gzip m gunzip m.gz gzip -c m > m1.gz 把压缩结果重定向文件 gzip 可以标准输入压缩,对一些命令执行结果 cat m | gzip >m2.gz 优势不一定是文件可以是命令执行结果,例如数据库备份 [[email?protected] test]#find / -name "*.sh" -ls |gzip >f1.gz zcat f1.gz bzip2 ...file.. 后缀是.bz2 压缩比比gzip高 [[email?protected] test]#bzip2 -k f1 [[email?protected] test]#expr xz 如内核网站 后缀.xz 比bzip 又强大 xz比较慢 但压缩比高 xz--help zip可以压缩文件夹,window又发送到 压缩zip文件夹 zip -r 压缩名字 目标文件夹 [[email?protected] test]#unzip -p bbb.zip 显示文件全部 解 zip -r /dir /data/test/dir /dir 压缩生产文件名 后边是压缩文件 cpio格式 du -sh /etc 看etc文件多大 tar (tape aRchive 磁带存档 ) 支持打包和压缩 -r -f 追加 tar 不加横线bsd风格 加 -tvf unix风格 -j bzip2 -zcvf -Jcvf 打包排除一些文件 -exclude -X,--exclude-from=FILE exclude patterns listed in FILE tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefileli 指定输入文件列表,排除文件列表 网站上传有限制,这样可以切割上传 [[email?protected] test]#split -b 2000 -d f3.tar.bz f3tarbz -rw-r--r-- 1 root root 2000 Mar 22 08:56 f3tarbz00 -rw-r--r-- 1 root root 2000 Mar 22 08:56 f3tarbz01 -rw-r--r-- 1 root root 2000 Mar 22 08:56 f3tarbz02 -rw-r--r-- 1 root root 1180 Mar 22 08:56 f3tarbz03 [[email?protected] test]#cat f3tarbz* >f31.tar.bz -rw-r--r-- 1 root root 7180 Mar 22 08:58 f31.tar.bz -rw-r--r-- 1 root root 7180 Mar 22 08:44 f3.tar.bz [[email?protected] test]#split -b 2000 f3.tar.bz f3tarbz 看一下 initramfs-3.10.0-957.el7.x86_64.imgzip cpio也是打过包的文件 cp -r /etc/ /test/ ldd查询文件所依赖的库 ldd /bin/cat sed强大命令 sed可以修改文件 sed支持正则表达式 sed对后项引用很多 sed 是基于行的方式处理 流编辑器 grep也是捉行 sed pattern space [[email?protected] test]#sed -n -e ‘[email?protected]^[email?protected]@‘ -e ‘/7/p‘ /etc/fstab SUPER=d622b96a-4877-4e69-a04c-7fc1b6b8f106 / xfs defaults 0 0 SUPER=45de8522-3568-4aac-b057-9491eb40ff58 /boot xfs de 首先在模式空间对uuid进行替换并且不再屏幕上打印,之后再模式空间替换把/7/打印 [[email?protected] test]#sed -n -e ‘/7/p‘ -e ‘[email?protected]^[email?protected]@‘ /etc/fstab # Created by anaconda on Tue Mar 5 20:25:07 2019 UUID=d622b96a-4877-4e69-a04c-7fc1b6b8f106 / xfs defaults 0 0 UUID=45de8522-3568-4aac-b057-9491eb40ff58 /boot xfs defaults 0 0 首先先对模式空间的7匹配打印到屏幕上,之后后把模式空间uuid替换super不输出屏幕 [[email?protected] test]#sed -n -e ‘/7/p‘ -e ‘[email?protected]^[email?protected]@p‘ /etc/fstab # Created by anaconda on Tue Mar 5 20:25:07 2019 UUID=d622b96a-4877-4e69-a04c-7fc1b6b8f106 / xfs defaults 0 0 SUPER=d622b96a-4877-4e69-a04c-7fc1b6b8f106 / xfs defaults 0 0 首先先对模式空间的7匹配打印到屏幕上,之后后把模式空间uuid替换super输出屏幕 [[email?protected] test]#sed -n ‘/7/p‘ /etc/fstab |sed ‘[email?protected]^[email?protected]@‘ [[email?protected] test]#sed -n ‘/7/p‘ /etc/fstab |sed -n ‘[email?protected]^[email?protected]@p‘ 效果一样 sed ‘script‘ input文件 p打印模式空间内容 cp /etc/paswd /test/ [[email?protected] test]#sed ‘/^1/p‘ f1 111 111 222 333 /^1/p 从模式空间找到^1的打印出来 sed ‘10p‘ passwd sed支持管道 sed -n ‘2p‘ passwd 只打印第二行 111 222 333 [[email?protected] test]#sed -n -e ‘[email?protected]^22.*@@‘ -e ‘w/data/test/f4‘ f1 [[email?protected] test]#cat f4 111 333 把模式空间222替换为空并且保存到f4 df | sed -n ‘/^#/p‘ /fstab sed -n ‘3,6p‘ 打印3到6 打印行号是-n [email?protected] test]#sed ‘=‘ f1 1 111 2 222 3 333 9点到10点 grep "24/May" access_log |sed -n ‘/2018:09:3/,/2018:09:50/p‘ sed 如果后行找不到就全显示 seq10 |sed ‘1~2p‘ [[email?protected] test]#seq 10 |sed -n ‘2~2p‘ 2 4 6 8 10 [[email?protected] test]#seq 10 |sed -n ‘2~3p‘ 2 5 8 sed ‘2d‘ 删除第二行 [[email?protected] test]#cat f4 111 333[[email?protected]centos7 test]#sed -n -e ‘2d‘ -e ‘w/data/test/f4‘ f1 删除模式空间第二行并且,保存模式空间内容到f4 sed ‘/^#/d‘ /etc/fstab 删除模式空间井号开头的行 seq 10 |sed ‘axyz‘ 默认换行显示 [[email?protected] ~]#name=`ls` [[email?protected] ~]#echo $name 111 222 early_cpio f1 f2 f3 f4 kernel passwd 非 命令不能在sed变量中引用```$user``` 会出现大问题,会把搜索的所有文件打开 111 basher:x:1014:1016::/home/basher:/sbin/nologn 111 sh:x:1015:1017::/home/sh:/sbin/nologn 111 nologin:x:1016:1018::/home/nologin:/sbin/nologn 111 sed: can‘t read 非: No such file or directory 下边少了x回车的原因(r回车) [[email?protected] test]#seq 3 | sed ‘axryz‘ 1 yz 2 yz 3 yz seq 10 |sed -n ‘3,6w seq2.log ‘ 把满足条件行放到f1.log文件w [[email?protected] ~]#seq 10 | sed -n ‘3,6w f1.log‘ [[email?protected] ~]#cat f1.l 3 4 5 6 seq 10 | sed ‘r /etc/issue‘ 按行读入文件内容 2 首先把模式空间空白行分行打印 屏幕 同时第二个从模式空间找出空白行加行号分行打印 [[email?protected] ~]#sed -n -e ‘/^$/p‘ -e ‘/^$/=‘ f1 2 3 5 6 sed 是按行读取 seq 10 | sed ‘=‘ 打印行行号 [email?protected]@@ 搜索替代 如vim 可以用正则表达式 echo abc | sed -r ‘[email?protected](a).*@[email?protected]‘ -r是扩展正则表达式 [[email?protected] ~]#echo abc |sed -r ‘[email?protected]^(a).*@[email?protected]‘ a cat /etc/default/grub | sed ‘/CMD/s/(.*)"$/1 xyz"/‘ 把1 2分组中间加东西 [[email?protected] ~]#sed -r ‘/CMD/[email?protected](^.*)(["])[email?protected]1 syz[email?protected]‘ /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet syz" 这用1分组后表示 [[email?protected] ~]#sed -r ‘/CMD/[email?protected](^.*)"[email?protected]1 syz"@‘ /etc/default/grub echo /aaa/bbb/ccc/ |sed -r ‘[email?protected](.*/)([^/]+)/[email?protected][email?protected]‘ [[email?protected] ~]#echo /aaa/bbb/ccc/ |sed -r ‘[email?protected](.*)/([^/]+)[/][email?protected][email?protected]‘ ccc [[email?protected] ~]#echo /aaa/bbb/ccc/ |sed -r ‘[email?protected](.*)/([^/]+)[/][email?protected][email?protected]‘ /aaa/bbb ifconfig eth0 | sed -rn ‘2s/.*inet//p‘ |sed ‘s/ .*//‘ 先把inet 替换为空再把空格后的所有字符替换为空 ifconfig ens33 |sed -nr ‘/&;inet&;/[email?protected]*inet @@p‘ |sed -r ‘[email?protected] .*@@‘ [[email?protected] ~]#ifconfig ens33 |sed -nr ‘/&;inet&;/[email?protected]@@p‘|sed -nr ‘[email?protected]^[ ]+([^ ]+).*@[email?protected]‘ 192.168.80.133 ifconfig eth0 | sed -rn -e ‘2s/.*inet//‘ -e sed ‘‘ [[email?protected] ~]#ifconfig ens33 |sed -rn -e ‘2s/.*inet //‘ -e ‘2s/ .*//p‘ 192.168.80.133 先在模式空间2行把.*inet 替换为空 之后在取模式空间第2行并且表现出来 ifconfig eth0 |sed -nr ‘2s/[^0-9]+([0-9.]+).*/1/p‘ vim sed.txt s/root/&er/p/g sed -f sed.txt passwd 网卡名不一样 net.ifnames=0 /boot/grup2/grub.cfg sed -n ‘/.*linux16/[email?protected]*@& [email?protected] ‘ /boot/grup2/grub.cfg [[email?protected] ~]#cat /etc/httpd/conf/httpd.conf sed ‘/^#/d;/^$/d‘ 2个命令一起做用分号隔开 -i.bak 是修改文件,并且备份一个以.bak结尾的源文件 [[email?protected] ~]#cat f1 11 22 [[email?protected] ~]#sed -i ‘a111‘ f1 [[email?protected] ~]#cat f1 11 111 111 111 [[email?protected] ~]#paste f1 f1.bak 11 11 www 111 111 www 111 www 111 111 22 www 111 模式空间 保持空间 如果模式空间处理没处理完 找个地方放保持空间放一放 [[email?protected] ~]#sed P f1 111 111 222 222 333 333 [[email?protected] ~]#sed -n ‘n;p‘ f1 222 -h 把模式空间覆盖 保持空间 [[email?protected] ~]#cat f1 111 222 333 先读取下一行在 [[email?protected] ~]#sed -n ‘n;p‘ f1 222 软件包管理 特定格式的文本文件就是源码,转换2进制才能真正执行 源码编译二进制安装 红帽8.0版本centos 8.0 是dnf 管理代替yum管理 ubuntu软件管理 重点rpm yum ABI 编译语言安装步骤 源代码 ---预处理 -----编译 -----汇编 -----链接 ldd /bin/cat 查看依赖库路径 ll /lib64/libc.so.6 重点库的作用比二进制程序更重要 作业 10 rm /lib64/libc.so.6 源码可以选择编译之后生成二进制 (想用什么功能取什么功能符合生产需求) java2次编译过程 第一次是先中间编译的中间码,之后虚拟机系统转换解释执行 开发语言 http2.4 .38 find linux / -name ".c" |wc -l 应用级开发 Packages 里全都是现成二进制文件 命名1软件名称 2版本号 3编译次数,打包次数 4红帽企业版5 x86 64 64位操作系统 i68632系统 noarch哪个cpu都行 ls .rpm |sed -nr ‘s/^..([^.]+).rpm$/2/p‘ |sort |uniq -c mount /dev/cdrom /mnt 神奇的自动挂载命令 安装神奇自动挂载光盘目录autofs 1/在http://www.rpmfind.net官网找到autofs依赖安装hesiod-3.2.1-3.el7.x86_64.rpm在安装autofs [[email?protected] Packages]#rpm -ivh /misc/cd/Packages/autofs-5.0.5-139.el6.x86_64.rpm [[email?protected] mnt]#rpm -ivh /run/media/ckw/CentOS 7 x86_64/Packages/hesiod-3.2.1-3.el7.x86_64.rpm 2把自动挂载和现在启动autofs打开 包可以分类 相关包分类 apt :deb 解包rpm rpm就是打包文件 这个命令查看的 hesiod.so.0 -> libhesiod.so.0.0.0 对应库,也就是autofs对应库 rpm2cpio /run/media/ckw/CentOS 7 x86_64/Packages/hesiod-3.2.1-3.el7.x86_64.rpm |cpio -tv [email?protected] mnt]#rpm2cpio /run/media/ckw/CentOS 7 x86_64/Packages/hesiod-3.2.1-3.el7.x86_64.rpm |cpio -tv rpm包里文件 数据库/var/lib/rpm 初始化状态 各种以上信息 如果删了这个目录系统就分不清,那些包装那些没装 mv /var/lib/rpm /data 移走则rpm查询无效 ll mariadb. 这是查看二进制文件库查看方法 ldconfig 加载配置文件中指定的库 查看缓存本机所有库的文件名以及路径映射关系 [[email?protected] Packages]#/sbin/ldconfig -p /lib64/libc.so.6 配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.con epel 源 有些企业先把epel源都下载之后内部安装 rpmbuild 自己定制rpm包需要编写spark文件 rpm -ivh h显示进度## i安装 v显示过程 mount /dev/sr0 /mnt 临时挂载重启消失 mount 命令看挂载情况 umount /mnt rpm -ivh vsftpd3-0.2 -25 无意中把/usr/bin/tree 命令删了 [[email?protected] cd]#rm -f /usr/bin/tree 1先查看一下tree里的文件 rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -tv 2tree转换cpio格式之后解压缩/usr/bin/tree [[email?protected] ~]#rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -id ./usr/bin/tree 3[[email?protected] ~]#mv usr/bin/tree /usr/bin/ vsftpd rpm -e 包名 卸载 包 vsftpd报警是因为缺key --test 假装安装但不装 测试安装 --nodeps 忽略依赖关系安装 rpm -ivh http-2.4.6 --noscripts:不执行程序包脚本 [[email?protected] bin]#rpm -q --scripts postfix 查询脚本信息 preinstall scriptlet (using /bin/sh): # Add user and groups if necessary /usr/sbin/groupadd -g 90 -r postdrop 2>/dev/null /usr/sbin/groupadd -g 89 -r postfix 2>/dev/null /usr/sbin/groupadd -g 12 -r mail 2>/dev/null rpm -q tree rm -f /usr/bin/tree rpm -ivh /misc/cd/Pac/tree-1.6 rpm2cpio 文件 | 看qq如何操作 把tree删了 [[email?protected] bin]#rpm -ivh --replacepkgs /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm 无意中把/usr/bin/tree 命令删了 [[email?protected] cd]#rm -f /usr/bin/tree 1先查看一下tree里的文件 rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -tv 2tree转换cpio格式之后解压缩/usr/bin/tree [[email?protected] ~]#rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -id ./usr/bin/tree 3[[email?protected] ~]#mv usr/bin/tree /usr/bin/ rpm权限都配好不容易出错 --nosignature 安装软件需要检查签名看看合法来源,如果系统缺少签名,则会有这个检查 --nodigest 如果看包破坏检查包的摘要 rpm -U 如果有新版本就删除旧版本,而且没有这个包就安装 rpm -U 升级版本则 旧包删除 升级慎重 (用的少)一般用新的机器重新安装 --oldpackage 降级 --force 强制安装覆盖安装 内核问题,文件管理硬件管理文件系统 内核带版本号不会出现覆盖问题用安装方法让多个版本并存 远程安装就是把路径写上网络路径需映射文件夹使用 (1) 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核 rpm -ivh centos7.5 kernel-3.10 862 --force rpm -ivh 包 7.5 --force 强制安装 想用新功能只能装内核 kernel-3.10.0-862.el7.x86_64.rpm ip a 看机器联网 rpm -qf 文件 查询rpm数据库文件的指定包 rpm -qf /usr/bin/tree tree-1.6.0-10.el7.x86_64 rpm -ql 包名 list 列出包文件信息 rpm -ql tree /usr/bin/tree /usr/share/doc/tree-1.6.0 rpm -q 包名 --provides 查看包具有哪些能力就是给哪些包提供依赖 rpm -qa 包名 可以用通配符 查询已安装所有包 [[email?protected] ~]#rpm -aq kern* kernel-tools-libs-3.10.0-957.el7.x86_64 rpm -qi 包名 查询完成信息 rpm -qip 包名文件光盘路或者联网路径 查询位安装文件详细信息rpm -qip tree-1.6.0-10.el7.x86_64.rpm 如果一个包装了则这么查询 [[email?protected] ~]#rpm -qi tree Name : tree Version : 1.6.0 Release : 10.el7 Architecture: x86_64 Install Date: Fri 22 Mar 2019 06:03:41 PM CST Group : Applications/File Size : 89505 License : GPLv2+ Signature : RSA/SHA256,Fri 04 Jul 2014 01:36:46 PM CST,Key ID 24c6a8a7f4a80eb5 Source RPM : tree-1.6.0-10.el7.src.rpm Build Date : Tue 10 Jun 2014 03:28:53 AM CST Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://mama.indstate.edu/users/ice/tree/ Summary : File system tree viewer Description : The tree utility recursively displays the contents of directories in a tree-like format. Tree is basically a UNIX port of the DOS tree utility. 如果没装则 rpm -qip /misc/cd /P/ tree 要写文件路径 p是文件名不是包名 rpm -qf /bin/cat 查寻文件来自那个包, rpm -q --whatprovides 看看文件需要的包 rpm -qc bash 看bash包括哪些配置文件 rpm --changelog bash 看每次版本更新日志 rpm 校验 如安装包记录属性 看包校验ppt rpm -V tree 看 tree属性是否有不同,所用的是数据库, 大小变化 哈希变,时间戳变化 rpm -K rpm包 查看包的完整性 报警原因缺少校验包的工具 1缺少key 先rpm -K 看一下有没有KEY [[email?protected] Packages]#rpm -K tree-1.5.3-3.el6.x86_64.rpm tree-1.5.3-3.el6.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#c105b9de) 2 rpm --import 光盘的KEY 安装 [[email?protected] Packages]#rpm --import /misc/cd/RPM-GPG-KEY-CentOS-6 3安装完成 [[email?protected] Packages]#rpm -K tree-1.5.3-3.el6.x86_64.rpm tree-1.5.3-3.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK 4查看key [[email?protected] Packages]#rpm -qa "gpg-*" gpg-pubkey-c105b9de-4e0fd3a3 [[email?protected] Packages]#rpm -qa "gpg*" gpgme-1.3.2-5.el7.x86_64 gpg-pubkey-f4a80eb5-53a7ff4b 毁坏命令tree如何查询看是否被毁备用是不是出厂 RPM-GPG 类似验钞机导入就可以检查包来源 在安装 rpm -ivh tree rpm 使用必须记住 安装卸载 centos 8 dnf centos 7 yum 依赖一些服务器端口和配置 yum仓库必须通过共享方式发布网络,如 OS yum client yum server 1先访问元数据yumserver repo,之后下载本机,yum meta data 1先看/etc/yum.conf 里如何配置yum # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d 2 创建 一个backup文件夹 把.repo结尾文件放到 backup 此时仓库文件不生效了 3 配置yum源 https://mirrors.aliyun.com/centos/7/ 看repo data 在哪就是哪是路径 vim base.repo y是安装 d是下载 建 epel.repo源 [[email?protected] yum.repos.d]#yum repolist Loaded plugins: fastestmirror,langpacks Loading mirror speeds from cached hostfile epel | 4.7 kB 00:00:00 (1/3): epel/group_gz | 88 kB 00:00:00 (2/3): epel/updateinfo | 1.0 MB 00:00:00 (3/3): epel/primary_db | 6.6 MB 00:00:00 repo id repo name status base/7/x86_64 aliyun base 10,019 epel aliyun epel 12,985 repolist: 23,004 [[email?protected] yum.repos.d]#cat base.repo cdrom.repo epel.repo [base] name=aliyun base baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/ #gpgcheck= gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7 enabled=0 [cdrom] name=cdrom baseurl=file:///misc/cd gpgcheck=1 gpgkey=file:///misc/cd #enabled=0 jinyong [epel] name=aliyun epel baseurl=https://mirrors.aliyun.com/epel/7/x86_64/ gpgcheck=0 enabled=0 yum install sl 如何禁用仓库 yum server 上课期间最好不用网路路径,利用光盘做yum源 找个光盘文件夹 ls /misc/cd yum 缓存会影响安装 yum clean all 清空缓存 yum reinstall tree -y 重装 rpm -q tree qq 查询脚本 重点 gz xz bz2 tar sed 批量改文件rpm -ql -qi -qf yum client 配置 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |