1、介绍
Yum(全称为YellowdogUpdater,Modified)是一个在Fedora和RedHat以及CentOS中的Shell后端软件包管理器。基于RPM包管理,才能从指定的服务器手动下载RPM包而且安装,可以手动处理依赖性关系linux lsof命令安装,而且一次安装所有依赖的软件包,无须冗长地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,并且命令简练而又好记。
yum源:本地yum源是将yum用到的安装包放到局域网内,便捷包管理,这样不用联接内网即可在句子网内的机器上安装软件包。具体的配置文件在/etc/yum.repos.d/下
2、常用命令
yumlist:查询所有可安装软件
yumlist*jdk*:列举所有包名称中包含jdk的
yumsearch关键字(mysql):搜索服务器上所有和关键字相关的包
yuminstalljava-1.8.0-openjdk-demo:安装java-1.8.0-openjdk-demo
yum-yinstallhttpd:也是安装。倘若不加-y他会问你要不要安装。假如你想自己来控制有些包是否安装,这儿不要加-y,假如你想手动安装,不进行交互,这儿加入-y。
yumremovehttpd:卸载httpd
linux中yum与rpm区别
3、如何查看yum源上面的包是否是自己想要的版本?
yuminfo包名
如:yuminfoopenssl-devel.x86_64
二、cut命令
cut命令从文件的每一行剪切字节、字符和数组并将这种字节、字符和数组写至标准输出。
倘若不指定File参数,cut命令将读取标准输入。必须指定-b、-c或-f标志之一。
参数:
案例:
三、nohup命令
作用:nohup英语全称nohangup(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。说白了,就是在后台永久执行。
输出:nohup命令,在默认情况下(非重定向时),会输出一个名叫nohup.out的文件到当前目录下,假如当前目录的nohup.out文件不可写,输出重定向到$HOME/nohup.out文件中。
正常情况下,我们启动个进程,例如启动个java进程,java-jarxxx.jarlinux lsof命令安装,这样确实可以启动上去,然而当你关掉终端后,运行的程序也同时中止了,这通常不是我们想要的,所以我们须要nohup命令来后台运行进程。
命令使用方式:
nohupCommand[Arg…][&]
操作系统中有三个常用的流:
0:标准输入流stdin
1:标准输出流stdout
2:标准错误流stderr
通常当我们用>console.txt,实际是1>console.txt的省略用法;<console.txt,实际是0<console.txt的省略用法。
案例:
nohup./start-dishi.sh>output2>&1&
解释:
1.带&的命令行,虽然terminal(终端)关掉,或则笔记本关机程序仍然运行(前提是你把程序提交到服务器上);
2.2>&1的意思
这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导出文件output上面,所以结果是标准错误和标准输出都导出文件output上面了。至于为何须要将标准错误重定向到标准输出的缘由,那就归结为标准错误没有缓冲区,而stdout有。这都会造成>output2>output文件output被两次打开,而stdout和stderr将会竞争覆盖,这肯定不是我门想要的.
这就是为何有人会写成:nohup./command.sh>output2>output出错的诱因了
四、find命令
参考:Linux中find命令解读
find命令用于查找文件或目录
句型格式:
find./-typef-name‘文件名’
参数依次是:find命令,这儿的./指的是当前路径,-type是选择文件类型,文件类型可以是f、d、l,f是文件类型,d是目录类型,l是链接类型等。-name根据名称查找,文件名称要加破折号。
-type#根据类型查找
find./-typef#查找当前目录而且显示隐藏文件默认显示目录及目录以下所有符合的文件
常见的类型:f:普通文件;d:目录文件;l:软链接文件;b:块设备文件;c:字符设备文件;p:管线文件;s:套接字文件
-name#根据名称查找
find./-typef-name"1.txt"#根据名称查找
find./-typef-name"*.txt"#匹配以.txt结尾的文件
find./-typef-name"1.t?t"#键值匹配?代表任意单个字符大部份命令都支持
-size#根据大小查找kMG
find./-typef-size+80M-size-90M:查找小于80而且大于90的文件
五、uname命令
参考:九个uname命令获取Linux系统详情的实例
1、简介:
uname是unixname的简写。uname命令用于复印当前系统相关信息(内核版本号、硬件构架、主机名称和操作系统类型等)。
2、案例:
当你输入uname不带参数时,它仅仅显示你的操作系统的名子。和uname-s输出内容一致。
假如你想晓得你正在使用那个内核发行版(指不同的内核打包版本),就可以用-r参数
3-内核版本.
10-主修订版本.
0-957-次要修订版本.
除一些内核信息外,用-v参数uname也能获取更详尽的内核版本信息(今译:不是版本号,是指该内核构建的时间和CPU构架等)。
参数-n会提供给你节点的主机名。举例来说,假如你的主机名是“dev-machine”,-n参数都会把主机名复印下来。
对于RedHat和CentOS用户来说,你也可以通过/etc/redhat_release文件来查看操作系统以及版本:
关于Linux版本,这儿插播下:参考:Linux各个版本介绍
Linux有好多版本,包括Redhat系列,UbuntuLinux,Gentoo系列,FreeBSD系列,OpenSUSE系列。
Redhat是最常用的,Redhat系列包括RHEL(RedhatEnterpriseLinux,也就是所谓的RedhatAdvanceServer,收费版本)、FedoraCore(由原先的Redhat桌面版本发展而至,免费版本)、CentOS(RHEL的社区克隆版本,免费)。
centos版本与内核版本的对应关系参考右图:
查看机器硬件类型:
另外,查询了下x84_64是啥意思:
x86是指intel的开发的一种32位指令集,从386时代开始的,仍然延用至今linux操作系统论文,是一种cisc指令集,所有intel初期的cpu,amd初期的cpu都支持这些指令集,Intel官方文档上面称为“IA-32”
x84_64是x86CPU开始走向64位的时侯,有2选择:1、向下兼容x86。2、完全重新设计指令集,不兼容x86。AMD抢跑了,比Intel率先制造出了商用的兼容x86的CPU,AMD称之为AMD64。而Intel选择了设计一种不兼容x86的全新64为指令集,称之为IA-64,而且比amd晚了一步,由于是全新设计的CPU,没有编译器,也不支持windows、后来不得不在时机落后的情况下也开始支持AMD64的指令集,并且换了个名子,叫x86_64,表示是x86指令集的64扩充,。也就是说实际上,x86_64,x64,AMD64基本上是同一个东西。
六、wc命令
1、简介:
Linux系统中的wc(WordCount)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
若果没有给出文件名,则从标准输入读取。
2、命令参数:
-c统计字节数。
-l统计行数。常用。
-m统计字符数。这个标志不能与-c标志一起使用。
-w统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
3、案例
如下统计行数的案例:4行,因为没有文件名,所以是从标准输出读取,即上面的cat的结果。
七、sort命令
sort将文件的每一行作为一个单位,互相比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将她们按降序输出。
若果没有给出文件名,则从标准输入读取。
须要注意的是除非你将输出重定向到文件中,否则Sort命令并不对文件内容进行实际的排序(即文件内容没有更改),只是将文件内容按有序输出。如下所示:
八、uniq命令
1、简介:
Linuxuniq命令用于检测及删掉文本文件中重复出现的行列,通常与sort命令结合使用。
若果没有给出文件名,则从标准输入读取。
2、命令参数:
3、案例
九、dmidecode命令
linux下读取dmi信息,须要依赖dmidecode工具。
dmidecode命令可以让你在Linux系统下获取有关硬件方面的信息。dmidecode的作用是将DMI数据库中的信息解码,以可读的文本形式显示。因为DMI信息可以人为更改,因而上面的信息不一定是系统确切的信息。dmidecode遵守SMBIOS/DMI标准,其输出的信息包括BIOS、系统、主板、处理器、内存、缓存等等。
DMI(DesktopManagementInterface,DMI)即桌面管理插口,就是帮助搜集笔记本系统硬件信息的管理系统,DMI充当了管理工具(如dmidecode)和系统层(如BIOS)之间插口的角色。它完善了标准的可管理系统愈加便捷了笔记本厂商和用户对系统的了解。DMI的主要组成部份是ManagementInformationFormat(MIF)数据库。这个数据库包括了所有有关笔记本系统和配件的信息。通过DMI,用户可以获取序列号、电脑厂商、串口信息以及其它系统配件信息。在内核中有一个配置项CONFIG_DMI拿来添加此功能到内核中!
实现规范:DMI信息的搜集必须在严格遵循SMBIOS规范的前提下进行。SMBIOS(SystemManagementBIOS)是显卡或系统制造者以标准格式显示产品管理信息所需遵守的统一规范。SMBIOS和DMI是由行业指导机构DesktopManagementTaskForce(DMTF)起草的开放性的技术标准,其中DMI设计适用于任何的平台和操作系统。
2、命令参数:
dmidecode-t[类型代码或名称]指令
dmidecode-tsystem:获取服务器的相关信息,如是Dell的服务器,设备机型是R410
3、案例
十、查看CPU核数
查看化学CPU个数:cat/proc/cpuinfo|grep"physicalid"|sort|uniq|wc-l
查看每位化学CPU中core的个数(即核数):cat/proc/cpuinfo|grep"cpucores"|uniq|awk-F':''{print$2}'
查看逻辑CPU的个数:cat/proc/cpuinfo|grep"processor"|wc-l
十一、lspci命令
参考:
Linux系统之lspci命令介绍
lspci,顾名思义,就是显示所有的pci设备信息。pci是一种总线,而通过pci总线联接的设备就是pci设备了。
自PC在1981年被IBM发明以来,显卡上都有扩充槽用于扩展计算机功能。现今最常见的扩充槽是PCIe插孔,实际上在你看不见的计算机显卡芯片内部,各类硬件控制模块大部份也是以PCIe设备的方式挂载到了一颗或则几颗PCI/PCIe设备树上。固件和操作系统正是通过枚举设备树们能够发觉绝大多数即插即用(PNP)设备的。那到底哪些是PCI呢?详见深入PCI与PCIe之一:硬件篇
现在,我们常用的设备好多都是采用pci总线了,如:网卡、存储等。下边就简单介绍下该命令。
lspci-v/-vv/-vvv:显示详尽的pci设备信息,v越多,越详尽,其实,上限3个。
十二、tr命令
tr是translate的缩写,意思是转化,转变,转换。主要用于压缩重复字符,删掉文件中的控制字符以及进行字符转换操作。
案例:
1、输出内容转小写:
转大写也类似,调个位置就行了。
2、删除文件中的空白行
十三、lsof命令
参考:lsof命令解读
lsof(listopenfiles)是一个列举当前系统打开文件的工具。在linux环境下,任何事物都以文件的方式存在,通过文件不仅仅可以访问常规数据,还可以访问网路联接和硬件。所以如传输控制合同(TCP)和用户数据报合同(UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符嵌入式linux 培训,无论这个文件的本质怎样,该文件描述符为应用程序与基础操作系统之间的交互提供了通用插口。由于应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因而通过lsof工具才能查看这个列表对系统检测以及排错将是很有帮助的。在终端下输入lsof即可显示系统打开的文件,由于lsof须要访问核心显存和各类文件,所以必须以root用户的身分运行它才才能充分地发挥其功能。
案例:
lsof-p26773:列举进程号为26773的进程打开的文件
注意:当进程打开了某个文件时,只要该进程保持打开该文件,虽然将其删掉,它仍然存在于c盘中。有时侯进程打开也可以删掉文件,可能是由于程序使用文件的时侯打开,不使用的时侯就释放,不是常态打开状态。其实有的程序可能仍然把程序给打开,如同构建长联接一样。
项目中jmxmon的日志被清除掉,并且通过lsof-p26773还是能查下来那些目录,还是占用着空间,目前看缘由应当是进程没有关掉,致使文件没有被关掉,所以c盘空间没有释放。
十四、Service命令
linux下有的软件启动很麻烦,跟一大堆参数,例如指定配置文件路径、以何种模式启动神马的,等等。而我们装上apache或则mysql后,就可以使用servicehttpdstart来启动,很是便捷。
service命令虽然是跑一个shell脚本来管理,当我们输入service命令时,linux会去/etc/rc.d/init.d目录下去找这个脚本运行。init.d下边放的就是好多脚本,例如servicesvndstart时,就去/etc/rc.d/init.d下找svnd这个脚本文件,假如这个文件不存在,则会提示不存在这个服务。所以,这个就好办了,只要在init.d目录下写个脚本,就可以用service命令在任何地方执行了。
以上是一种老的方法,即/etc/rc.d/init.d下写脚本。
当前比较新的方法是在如下目录写脚本:/etc/systemd/system/multi-user.target.wants。
例如hubble-agent的启动方法通常是:servicehubble-agentrestart
本质上就是在/etc/systemd/system/multi-user.target.wants目录下写了个脚本,如下:
十五、/etc/fstab文件解读
参考:linux之fstab文件解读
1、介绍
/etc/fstab是拿来储存文件系统的静态信息的文件。当系统启动的时侯,系统会手动地从这个文件读取信息,但是会手动将此文件食指定的文件系统挂载到指定的目录。
显示分区的基本信息:lsblk-f
2、案例介绍
通过内核名称编撰:
#
tmpfs /tmp tmpfs nodev,nosuid 0 0
/dev/sda1 / ext4 defaults,noatime 0 1
/dev/sda2 none swap defaults 0 0
/dev/sda3 /home ext4 defaults,noatime 0 2
3、编写规范
在/etc/fstab配置文件中你可以以三种不同的方式表示文件系统:内核名称(见案例介绍)、UUID或则label。使用UUID或是label的用处在于它们与c盘次序无关。假如你在BIOS中改变了你的储存设备次序,或是重新插拔了储存设备,或是由于一些BIOS可能会随机地改变储存设备的次序,这么用UUID或是label来表示将更有效。
UUID编撰方法:
label编撰方法:
十六、linuxxfs和ext4的区别
在十五中/etc/fstab编撰规范涉及分区的类型,如ext4和xfs,下边简单介绍下。
centos7.0开始默认文件系统是xfs,centos6是ext4,centos5是ext3。
ext4是第四代扩充文件系统(德语:FourthEXtendedfilesystem,简写为ext4)是linux系统下的日志文件系统,是ext3文件系统的后继版本。
xfs是一种十分优秀的日志文件系统,它是SGI公司设计的。xfs被称为业界最先进的、最具可升级性的文件系统技术。
xfs在好多方面确实做的比ext4好,ext4受限制于c盘结构和兼容问题,可扩充性和scalability确实不如xfs,另外xfs经过好多年发展,各类锁的细化做的也比较好
十七、Top命令
1、看CPU使用情况
LoadAverage
LoadAverage是CPU的Load。它所包含的信息是在一段时间内CPU正在处理及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的宽度的统计信息。
参数说明
loadaverage:1.79,2.10,2.28系统负载,三个数值分别为1分钟、5分钟、15分钟前到现今的平均值。如1.79,表示近来一分钟平均负载。
怎样看负载?
我们观察CPU负载高还是不高,只看LoadAverage数据是不行的,还要看服务器有多少个CPU(cat/proc/cpuinfo|grep'processor'|wc-l)。
例如假如只有一核CPU,这么LoadAverage达到1就满负载了。
然而若果有100核,虽然LoadAverage达到30也不算太高,由于还有70没有使用
%CPU
表示CPU瞬时使用率。
和LoadAverage的查看使用情况类似,也要按照CPU核数判定CPU是否被占满。
例如假如是2核,这么使用率最多可以达到200%
假如是16核,使用率最多可以达到1000%
2、内存使用情况
%MEM
这就表示占总显存的比率。
例如总显存32G,假如%MEM为50%,表示使用了16G
十八、mount命令
查看挂载情况。
有时侯想看/data盘挂载在那个储存设备或分区(或则那个文件系统)上就可以用mount命令。
Linux系统中“一切皆文件”。每位设备,在/dev目录中都有对一个设备文件(devicefile),例如/dev/sda表示第一个SCSI/IDE盘,/dev/vda表示第一个virtioc盘。
怎样看每位设备文件的大小?
使用:fdisk-l(或则使用我们常用的命令:df-h或ll-h)
如上图所示,我们大约才能看下来:
/dev/vda:42.9GB;
/dev/vdb:322.1GB;比较大,推测/data目录应当是挂载的这个设备文件
/dev/mapper/centos-root:40.2GB:看设备名称像是挂根目录的;
/dev/mapper/centos-swap:2147MB:看上去像是交换空间Swap的大小。
验证下我的猜测,使用mount命令查看挂载情况:
果不其然,和我猜想的一模一样。
另外,我们看见/data目录对应的设备文件是ext4,ext4是第四代扩充文件系统(德语:FourthEXtendedfilesystem,简写为ext4)是linux系统下的日志文件系统,是ext3文件系统的后继版本。
还有个问题,目录是哪些时侯挂载起来的呢?
答案:是在/etc/fstab中配置好的。
/etc/fstab是拿来储存文件系统的静态信息的文件。当系统启动的时侯,系统会手动地从这个文件读取信息,但是会手动将此文件手指定的文件系统挂载到指定的目录。
如下截图,把我/data目录挂载到了/dev/vdb这个设备文件上了,另外还挂载了swap。
另外还有好多硬碟挂载相关命令:
cat/etc/fstab
lsblk-f