rpm与yum的使用方法,通过yum自建仓库;通过at和crontab命令定期
发布时间:2020-12-15 23:12:24 所属栏目:安全 来源:网络整理
导读:1、简述rpm与yum命令的常见选项,并举例 RPM命令: rpm [OPTIONS] [PACKAGE_FILE] 安装:-i,--install 升级:-U,--update,-F,--freshen 卸载:-e,--erase 查询:-q,--query 校验:-V,--verify 数据库维护:--builddb,--initdb 安装: 命令格式:rpm {-i|--in
1、简述rpm与yum命令的常见选项,并举例
RPM命令:rpm [OPTIONS] [PACKAGE_FILE] 安装:-i,--install 安装:命令格式: rpm {-i|--install} [install-options] PACKAGE_FILE ... 安装选项: -v:verbose,详细信息 -vv:更详细的输出 -h:hash marks输出进度条;每个#表示2%的进度; --test:测试安装,检查并报告依赖关系及冲突消息等; --nodeps:忽略依赖关系;不建议; --replacepkgs:重新安装 --noscripts:不执行程序包脚本 preinstall:安装过程开始之前运行的脚本,%pre , --nopre postinstall:安装过程完成之后运行的脚本,%post,--nopost preuninstall:卸载过程真正开始执行之前运行的脚本,%preun,--nopreun postuninstall:卸载过程完成之后运行的脚本,%postun,--nopostun --nosignature:不检查包签名信息,不检查来源合法性; --nodigest:不检查包完整性信息; 示例: [[email?protected] ~]# rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm 准备中... ################################# [100%] 软件包 lrzsz-0.12.20-36.el7.x86_64 已经安装 [[email?protected] ~]# 升级:命令格式: rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... 卸载:命令格式: rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ... 选项: --allmatches:卸载所有匹配指定名称的程序包的各版本; --nodeps:忽略依赖关系 --test:测试卸载,dry run模式 示例: [[email?protected] ~]# rpm -evh lrzsz-0.12.20-36.el7.x86_64 准备中... ################################# [100%] 正在清理/删除... 1:lrzsz-0.12.20-36.el7 ################################# [100%] [[email?protected] ~]# 查询:命令格式: rpm {-q|--query} [select-options] [query-options] 选项 [select-options] -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,... [[email?protected] ~]# rpm -ql lrzsz-0.12.20-36.el7.x86_64 /usr/bin/rb /usr/bin/rx /usr/bin/rz /usr/bin/sb /usr/bin/sx /usr/bin/sz /usr/share/locale/de/LC_MESSAGES/lrzsz.mo /usr/share/man/man1/rz.1.gz /usr/share/man/man1/sz.1.gz [[email?protected] ~]# rpm -qf /usr/bin/sz lrzsz-0.12.20-36.el7.x86_64 [[email?protected] ~]# rpm -qi lrzsz-0.12.20-36.el7.x86_64 Name : lrzsz Version : 0.12.20 Release : 36.el7 Architecture: x86_64 Install Date: 2018年11月21日 星期三 12时31分49秒 Group : Applications/Communications Size : 184846 License : GPLv2+ Signature : RSA/SHA256,2014年07月04日 星期五 11时35分32秒,Key ID 24c6a8a7f4a80eb5 Source RPM : lrzsz-0.12.20-36.el7.src.rpm Build Date : 2014年06月10日 星期二 07时29分11秒 Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://×××w.ohse.de/uwe/software/lrzsz.html Summary : The lrz and lsz modem communications programs Description : Lrzsz (consisting of lrz and lsz) is a cosmetically modified zmodem/ymodem/xmodem package built from the public-domain version of the rzsz package. Lrzsz was created to provide a working GNU copylefted Zmodem solution for Linux systems. [[email?protected] ~]# rpm -qd lrzsz-0.12.20-36.el7.x86_64 /usr/share/man/man1/rz.1.gz /usr/share/man/man1/sz.1.gz [[email?protected] ~]# 校验:命令格式: rpm {-V|--verify} [select-options] [verify-options] S: file Size differs文件的容量大小是否被篡改 M:Mode differs文件的类型或文件的属性是否被改变 5:MD5 sum differs MD5这一种指纹码的内容已经不同 D:Device major/minor number mismatch装置的主/次代码已经改变 L:readLink(2) path mismatch Link路径已被改变 U:User ownership differs 文件的所属人已被改变 G:Group ownership differs 文件的所属群组已被改变 T:mTime differs 文件的创建时间已被改变 P:caPabilities differ 示例: [[email?protected] ~]# rpm -V lrzsz-0.12.20-36.el7.x86_64 [[email?protected] ~]# echo "123" >> /usr/bin/rz [[email?protected] ~]# rpm -V lrzsz-0.12.20-36.el7.x86_64 S.5....T. /usr/bin/rb S.5....T. /usr/bin/rx S.5....T. /usr/bin/rz [[email?protected] ~]# 数据库维护命令格式: rpm {--initdb|--rebuilddb} 选项: initdb: 初始化 如果事先不存在数据库,则新建之 否则,不执行任何操作 rebuilddb:重建已安装的包头的数据库索引目录 YUM命令:常见命令: 显示仓库列表: repolist [all|enabled|disabled] 显示程序包: list # yum list [all | glob_exp1] [glob_exp2] [...] # yum list {available|installed|updates} [glob_exp1] [...] 安装程序包: install package1 [package2] [...] reinstall package1 [package2] [...] (重新安装) 升级程序包: update [package1] [package2] [...] downgrade package1 [package2] [...] (降级) 检查可用升级: check-update 卸载程序包: remove | erase package1 [package2] [...] 查看程序包information: info [...] 查看指定的特性(可以是某文件)是由哪个程序包所提供: provides | whatprovides feature1 [feature2] [...] 清理本地缓存: clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 构建缓存: makecache 搜索: search string1 [string2] [...] 以指定的关键字搜索程序包名及summary信息; 查看指定包所依赖的capabilities: deplist package1 [package2] [...] 查看yum事务历史: history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] 安装及升级本地程序包: * localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) * localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) 包组管理的相关命令: * groupinstall group1 [group2] [...] * groupupdate group1 [group2] [...] * grouplist [hidden] [groupwildcard] [...] * groupremove group1 [group2] [...] * groupinfo group1 [...] 2、自建yum仓库,分别为网络源和本地源本地源[[email?protected] ~]# yum repolist 已加载插件:fastestmirror,langpacks Loading mirror speeds from cached hostfile 源标识 源名称 状态 c7-media aaa 9,591 repolist: 9,591 [[email?protected] ~]# cat /etc/yum.repos.d/bendi.repo [c7-media] name=aaa baseurl=file:///media/cdrom/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 网络源[[email?protected] cdrom]# cat /etc/yum.repos.d/internet.repo [internet] name=aliyun baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/ enabled=1 gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7 [[email?protected] cdrom]# yum repolist 已加载插件:fastestmirror,langpacks Loading mirror speeds from cached hostfile 源标识 源名称 状态 internet aliyun 9,911 repolist: 9,911 [[email?protected] cdrom]# 3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00at:d 命令格式: at [option] TIME 常用选项: -V 显示版本信息: -l: 列出指定队列中等待运行的作业;相当于atq -d: 删除指定的作业;相当于atrm -c: 查看具体作业任务 -f /path/from/somefile:从指定的文件中读取任务 -m:当任务被完成之后,将给用户发送邮件,即使没有标准输出 注意:作业执行命令的结果中的标准输出和错误以邮件通知给相关用户 TIME: 定义出什么时候进行 at 这项任务的时间 HH:MM [YYYY-mm-dd] noon,midnight,teatime(4pm) tomorrow now+#{minutes,hours,days,OR weeks} 用法示例: [[email?protected] mail]# at now+2min at> echo hello! at> <EOT> job 7 at Wed Nov 21 15:38:00 2018 [[email?protected] mail]# at -l 7 Wed Nov 21 15:38:00 2018 a root [[email?protected] mail]# at -l 您在 /var/spool/mail/root 中有新邮件 [[email?protected] mail]# mail Heirloom Mail version 12.5 7/5/10. Type ? for help. "/var/spool/mail/root": 3 messages 1 new 1 root Wed Nov 21 15:27 17/595 "Output from your job 4" 2 root Wed Nov 21 15:32 15/505 "Output from your job 6" >N 3 root Wed Nov 21 15:38 14/488 "Output from your job 7" & 3 Message 3: From [email?protected] Wed Nov 21 15:38:01 2018 Return-Path: <[email?protected]> X-Original-To: root Delivered-To: [email?protected] Subject: Output from your job 7 To: [email?protected] Date: Wed,21 Nov 2018 15:38:01 +0800 (CST) From: [email?protected] (root) Status: R hello! & crontab:cron任务分为两类: 系统cron任务:主要用于实现系统自身的维护; 手动编辑:/etc/crontab文件 用户cron任务: 命令:crontab命令 系统cron的配置格式:/etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 注意: (1) 每一行定义一个周期性任务,共7个字段; * * * * * : 定义周期性时间 user-name : 运行任务的用户身份 command to be executed:任务 (2) 此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量; (3) 执行结果邮件发送给MAILTO指定的用户 用户cron的配置格式:/var/spool/cron/USERNAME SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,sat # | | | | | # * * * * * command to be executed 注意: (1) 每行定义一个cron任务,共6个字段; (2) 此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量; (3) 邮件发送给当前用户; 时间表示法: (1) 特定值; 给定时间点有效取值范围内的值; 注意:day of week和day of month一般不同时使用; (2) * 给定时间点上有效取值范围内的所有值;表“每..” (3) 离散取值:,在时间点上使用逗号分隔的多个值; #,#,# (4) 连续取值:- 在时间点上使用-连接开头和结束 #-# (5) 在指定时间点上,定义步长: /#:#即步长; 注意: (1) 指定的时间点不能被步长整除时,其意义将不复存在; (2) 最小时间单位为“分钟”,想完成“秒”级任务,得需要额外借助于其它机制; 定义成每分钟任务:而在利用脚本实现在每分钟之内,循环执行多次; 示例: (1) 3 * * * *:每小时执行一次;每小时的第3分钟; (2) 3 4 * * 5:每周执行一次;每周5的4点3分; (3) 5 6 7 * *:每月执行一次;每月的7号的6点5分; (4) 7 8 9 10 *:每年执行一次;每年的10月9号8点7分; (5) 9 8 * * 3,7:每周三和周日; (6) 0 8,20 * * 3,7: (7) 0 9-18 * * 1-5: (8) */5 * * * *:每5分钟执行一次某任务; (9) */7 crontab命令: crontab [-u user] [-l | -r | -e] [-i] -e:编辑任务; -l:列出所有任务; -r:移除所有任务;即删除/var/spool/cron/USERNAME文件; -i:在使用-r选项移除所有任务时提示用户确认; -u user:root用户可为指定用户管理cron任务; 注意:运行结果以邮件通知给当前用户;如果拒绝接收邮件: (1) COMMAND > /dev/null (2) COMMAND &> /dev/null 注意:对于cron任务来讲,%有特殊用途;如果在命令中要使用%,则需要转义,将%放置于单引号中,则可不用转义;管理cron任务; 每周三凌晨三、五点10分输出当前时间: [[email?protected] ~]# crontab -l 10 3,5 * * 3 /bin/date ‘+%F %H:%M:%S ‘ 4、简述sed常用操作命令,并举例命令格式: sed [option]... ‘script‘ 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:在文件的指定位置插入另一个文件的所有内容 =: 为模式空间中的行打印行号 !:模式空间中匹配行取反处理 s///:查找替换,支持使用其它分隔符,s@@@,s### g: 行内全局替换 p: 显示替换成功的行 w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中 用法示例: 将/etc/fstab文件中已UUID开头的行注释 [[email?protected] ~]# sed -rn ‘[email?protected](^UUID)@#[email?protected]‘ /etc/fstab #UUID=c9fc2cce-0b87-4d33-872d-c2a30871bcbc / xfs defaults 0 0 #UUID=15e19e6c-1b9f-47d4-be20-12c1cf7c9bf1 /app xfs defaults 0 0 #UUID=666253c9-449b-46c6-93a7-b8007803ed6f /boot xfs defaults 0 0 #UUID=57e1db57-12ab-458b-be54-585129688dac swap swap defaults 0 0 将/etc/passwd文件中35行到以mage开头的行打印出来 [[email?protected] ~]# cat /etc/passwd |sed -n ‘35,/^mage/p‘ gdm:x:42:42::/var/lib/gdm:/sbin/nologin gnome-initial-setup:x:991:986::/run/gnome-initial-setup/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin mage:x:1000:1000::/home/mage:/bin/bash 将/etc/issue读取到/etc/passwd中以wang开头的行后 [[email?protected] ~]# sed ‘/^wang/r /etc/issue‘ /etc/passwd 在/etc/fstab文件中已UUID开头的行后追加一行,内容为123 [[email?protected] ~]# sed ‘/^UUID/a 123‘ /etc/fstab # # /etc/fstab # Created by anaconda on Sat Aug 25 13:40:09 2018 # # Accessible filesystems,by reference,are maintained under ‘/dev/disk‘ # See man pages fstab(5),findfs(8),mount(8) and/or blkid(8) for more info # UUID=c9fc2cce-0b87-4d33-872d-c2a30871bcbc / xfs defaults 0 0 123 UUID=15e19e6c-1b9f-47d4-be20-12c1cf7c9bf1 /app xfs defaults 0 0 123 UUID=666253c9-449b-46c6-93a7-b8007803ed6f /boot xfs defaults 0 0 123 UUID=57e1db57-12ab-458b-be54-585129688dac swap swap defaults 0 0 123 #/dev/sdb1 /usr/mydate xfs defaults 0 0 等等... ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |