1、rpm命令:
Linux rpm 命令用于管理套件。
rpm(redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。
RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
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:重新安装; (2)升级: rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... -U:升级或安装(如果软件包没有安装则直接安装) -F:升级 --oldpackge:降级; --force:强制升级; (3)卸载: rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ... --allmatches:卸载所有匹配指定名称的程序包的各版本; --nodeps:忽略依赖关系; --test:测试卸载,dry run模式 (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....查询未安装的程序包的文件列表 (5)校验: rpm {-V|--verify} [select-options] [verify-options] S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs P caPabilities differ (6)数据库重建: rpm管理器数据库路径:/var/lib/rpm/ rpm {--initdb|--rebuilddb} --initdb:初始化数据库,当前无任何数据库可初始化创建一个新的;当前有时不执行任何操作; --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;
常见选项使用方法:
(a)、安装软件包:rpm -ivh PACKAGE
(b)、测试安装软件包安装,查看是否需要依赖包:
(c)、忽略依赖关系,安装软件包:
(d)、升级软件包:
a、如果软件为安装
b、使用-Fvh,升级必须已安装了软件;
(e)、卸载rpm包:
(f)、查询某个文件夹由哪个软件包生成:
(g)、查询某能力由哪个程序包提供
(h)、查询某能力被那些软件包所依赖
(i)、查询软件包提供的配置文件:
(j)、校验软件包是否修改过:
2、yum命令:
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记
yum的命令行选项: --nogpgcheck:禁止进行gpg check; -y:自动回答为“yes”; -q:静默模式; --disablerepo=repoidgolb:临时禁用此处指定的repo; --enablerepo=repoidglob:临时启用此处指定的repo; --noplugins:禁用所有插件; (1)显示仓库列表: repolist [all|enabled|disabled] (2)显示程序包: list [...] yum list [all | glob_exp1] [glob_exp2] [...] yum list {available|installed|updates} [glob_exp1] [...] (3)安装程序包: install package1 [package2] [...] (4)升级程序包: update [package1] [package2] [...] reinstall package1 [package2] [...](重装) downgrade package1 [package2] [...](降级) (5)检查可用升级: check-update (6)卸载程序包: remove | erase package1 [package2] [...] (7)查看程序包information: info [...] (8)查看指定的特性(可以是某个文件)是由哪个程序包所提供: provides | whatprovides feature1 [feature2] [...] (9)清理本地缓存: clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] (10)构建缓存: makecache (11)搜索: search string1 [string2] [...] 以指定的关键字搜索程序包名及summary信息 (12)查看指定包所依赖的capabilities: deplist package1 [package2] [...] (13)查看yum事务历史: history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] (14)安装及升级本地程序包: localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) (15)包组管理的相关命令: groupinstall group1 [group2] [......] groupupdate group1 [group2] [......] grouplist [hidden] [groupwildcard] [......] groupremove group1 [group2] [......] groupinfo group1 [......]
常见选项使用方法:
a、查看启用的yum源:
b、常看某个命令由哪个程序包提供的(未安装的也可以)
c、静默模式,自动回答“yes”下安装程序包
d、查看程序包组
f、安装程序包组
yum groupinstall "开发及生成工作站"(如果显示中文,则需要输入中文,反之英文)
3、自建yum仓库
(1)仓库指向的定义:
[repositoryID] #定义基础仓库名称,具有唯一性;
name=Some name for this repository
baseurl=url://path/to/repository/ #定义rpm包路径,可以是目录、链接、ftp等;
enabled={1|0} #是否启用仓库;
gpgcheck={1|0} #是否检查完整性;
gpgkey=URL #gpg公钥地址;
enablegroups={1|0} #是否启用包组安装,默认支持;
failovermethod={roundrobin|priority} #一个repo内所有仓库选择方式,默认随机;
默认为:roundrobin,意为随机挑选;
cost=
默认为1000
(2)创建本地yum源
a、挂载系统光盘当做本地源
先挂载本地光盘,也可以复制光盘文件至系统下
创建并编辑repo文件,在/etc/yum.repo.d/ 下
b、自己建立软件集,建立源
使用的命令:createrepo [OPTION] <directoty>,使其所在文件夹生产repodata数据库
接着同上创建repo文件即可;
(3)创建网络yum源
直接利用著名的网络yum源,直接下载repo文件,前提确保能联网!我们以阿里云的yum源为例:
登录阿里云yum源,查看对应系统版本的yum源名称;
在yum源配置文件夹下,下载yum源,我这里顺便进行了重命名,方便管理;
(4)备份以及使系统自带yum源失效:
这里我们把系统自带的yum源直接重命名为非".repo"结尾的文件即可使其失效;
(5)重建yum源
清除yum缓存
yum clean all
重新加载yum源
yum repolist 或者 yum list
4、Linux任务计划-at命令:
在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程
格式:
at [参数] [时间] 参数: -m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出 -l atq的别名 -d atrm的别名 -v 显示任务将被执行的时间 -c 打印任务的内容到标准输出 -q <列队> 使用指定的列队 -f <文件> 从指定文件读入任务而不是从标准输入读入 -t <时间参数> 以时间参数的形式提交要运行的任务 时间: HH:MM[YYYY-mm-dd] noon,midnight,teatime tomorrow now+# UNIT:minutes,hours,days,OR weeks
注意:作业执行结果是以邮件发送给提交作业的用户;
我这里直接演示一个计划任务,在1分钟后输出系统时间;新建文件,写入需要操作的命令即可。
5、Linux周期性计划-crontab(cron)命令:
服务程序:
cronle:主程序包,提供了crond守护进程及相关辅助工具;
确保crond守护进程(daemon)处于运行状态;
CentOS 7:
systemctl status crond.service
CentOS 6:
service crond status
crond提交作业的方式不同于at,需要使用专用的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件;要使用crontab命令;
cron任务分为两类:
系统cron任务:主要用于实现系统自身的维护;
手动编辑:/etc/crontab文件
用户cron任务:
命令:crontab命令
系统cron的配置格式:
# * * * * * user-name command to be executed
注意:
(1)每一行定义一个周期性任务;共7个字段;
前5个字段 * * * * *:定义周期性时间
user-name:运行任务的用户身份
command to be executed:任务
(2)此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量;
(3)执行结果邮件发送给MAITTO指定的用户
用户cron的配置格式:/var/spool/cron/USERNAME
# * * * * * command to be executed
注意:
(1)每行定义一个cron任务,共6个字段;
(2)此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量;
(3)邮件发送给当前用户;
时间表示法:
* * * * *
分 时 天 月 星期
所以最小单位为分钟,即周期性任务最小执行时间为分钟;*代表“每”意思,若在对应的*填上数值,则表示每*;
例:
2 3 4 5 * 意思为:每年5月份4号3点2分钟执行某某任务;
(1)特定值:
给定时间点有效取值范围内的值;
注意:day of week 和 day of month 一般不同时使用;
(2)*
给定时间点上有效取值范围内的所有制;表“每”
(3)离散取值:,
在时间点上使用逗号分隔的多个值;
(4)连续取值:-
在时间点使用-连接开头和结束
(5)在指定时间点上,定义步长;/
/#;#即步长;
注意:
(1)指定的时间点不能被步长整除时,其意义将不复存在;
(2)最小时间单位为“分钟”,想完成“秒”级任务,得需要额外借助于其他机制;
定义成每分钟任务:而再利用脚本实现每分钟之内,循环很多次;
crontab命令:
crontab [-u user][-l | -e][-i]
-e:编辑任务 -l:列出所有任务; -r:移除所有任务;即删除/var/spool/cron/USERNAME文件; -i:在使用-r选项移除所有任务时提示用户确认; -u user:root用户可为指定用户管理cron任务;
注意:运行结果以邮件通知给当前用户;如果拒绝接收邮件;
(1)COMMAND > /dev/null
(2)COMMAND &> /dev/null
注意:定义COMMAND时,如果命令需要用到%,需要对其转义;但放置于单引号中的%不用转义亦可;
例:制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
6、sed命令:
格式:sed [OPTION]... {script-only-if-no-other-script} [input-file]...
{script-only-if-no-other-script}:地址定界编辑命令,需要连在一起,不需要分开;
地址定界: (1)空地址:对全文进行处理; (2)单地址: #:指定行; /pattern/:被此模式所匹配到的每一行;可使用正则表达式; (3)地址范围 #,#: #,+#: #,/pat1/ /pat1/,/pat2/ $:最后一行 (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:显示替换成功的行;
常用选项:
-n:不输出模式空间中的内容至屏幕; -e script, --expression=script:多点编辑; -f /PATH/TO/SED_SCRIPT_FILE:直接把命令写成一个文本,每行一个编辑命令; -r, --regexp-extended:支持使用扩展正则表达式; -i[SUFFIX], --in-place[=SUFFIX]:直接编辑原文件;危险操作
实例:
匹配到的UUID,替换成uuid;
-n 不输出文件的每一行到屏幕;
p:显示匹配到并完成编辑的所在的行至屏幕;
s###:则跟vim使用方法一致;
显示被匹配到以外的行
添加注释信息至匹配到的行