命令的使用格式

#命令 -选项 参数
ls -la /usr

#参数不写 默认参数为当前目录或文件
ls -la

#选项不写 执行默认命令,没有选项
ls /usr

#参数和选项都不写 执行默认命令,没有选项、默认参数为当前目录或文件
ls

ls:显示文件和目录列表(list)

常用参数(选项) 解释
-l (long)显示文件或文件夹的详细信息
-a (all)所有文件,注意隐藏文件、特殊目录 " . " 和 " .. "

命令的分类

  1. 内部命令:属于Shell解析器的一部分 type
cd 切换目录(change directory)
ped 显示当前工作目录(print working directory)
help 帮助
  1. 外部命令:独立于Shell解析器之外的文件程序
ls 显示文件和目录列表(list)
mkdir 创建目录(make directory)
cp 复制文件或目录(copy)
  • 查看帮助文档
内部命令:
help + 命令 (help cd)

外部命令:
man + 命令 (man ls)

或

命令 --help (ls --help)

或

命令 -h (dmidecode -h)
注:部分命令的'-h'不是help命令,如ls的-h是'人类可读的'(human-readable)

基础常用命令

清屏

clear

wget

  1. 连网安装wget
yum install wget
  1. 用wget连网下载文件
wget url

man命令

  • 安装man命令
yum install man man-pages

man :看帮助的帮助程序

man-pages :所有的帮助页

man可以看8钟类型的帮助文档

man ls

alt

ls是1类型文档

man 2 read

alt

2类是系统调用,是内核给程序暴漏的调用方法,如read命令

管道符

  1. 衔接:管道符会将前一个命令的输出作为后一个命令的输入

  2. 管道会触发创建子进程(前后两个命令是两个进程)

#打印进程号
echo $$
echo $BASHPID

$$高于管道先执行,后管道开辟子进程

alt

  • 常规下:子进程无法获取到父进程的数据
num=1
echo $num
echo $$
#开启一个子进程
/bin/bash
pstree

#子进程无法获取到父进程的数据
echo $num

#退回父进程即可获取到数据
exit
echo $$
echo $num

alt

alt

  • 父进程定义成环境变量,子进程就可以获取到变量值了,子进程修改的数据不会影响父进程,父进程的修改也不会影响子进程
export num=1
echo $num
echo $$
#开启一个子进程
/bin/bash

#子进程获取到父进程的数据
echo $$
echo $num
num=999
echo $num

#子进程修改的数据不会影响父进程
exit
echo $$
echo $num

alt

操作文件或目录常用命令

pwd 显示当前工作目录(print working directory)

touch 创建空文件

touch a.txt

mkdir 创建目录(make directoriy)

mkdir temp
mkdir -p a/b
常用参数(选项) 解释
-p (parents)父目录不存在情况下先生成父目录

cp 复制文件或目录(copy)

cp a.txt /root/b.txt
cp -r a /root/temp
常用参数(选项) 解释
-r (recursive)递归处理,将指定目录下的文件与子目录一并拷贝

mv 移动文件或目录、文件或目录改名(move)

mv a.txt /root/temp/b.txt

rm 删除文件(remove)

常用参数(选项) 解释
-r 同时删除该目录下的所有文件(recursive)
-f 强制删除文件或目录(force)
rm -rf a

rmdir 删除空目录(remove directoriy)

rmdir b

vim 编辑文本

  • 临时显示行号
#退出编辑模式,输入
:set number
或
:set nu

#取消显示行号:输入
:set nonu
  • 永久显示行号

需要修改vim配置文件vimrc。

vim ~/.vimrc

#在文本最后添加
:set number
或
:set nu
#保存退出,重新打开vim就可以看到行号了

wc 统计文本的行数、字数、字符数(word count)

常用参数(选项) 解释
-m 统计文本字符数
-w 统计文本字数
-l 统计文本行数

find 查找文件和目录

find /etc/ -name "aaa"

常用参数(选项) 解释
-name filename 查找名为filename的文件。
-iname filename 查找名为filename的文件,但忽略大小写,即不区分大小写。
-type b/d/c/p/l/f 按照文件类型查找,查是块设备、目录、字符设备、管道、符号链接、普通文件

grep 在指定的文本文件中查找指定的字符串

#输出以h开头的行,不区分大小写
grep -i  "^h" names.txt

#查询java进程
ps -ef | grep java
常用参数 解释
-i 忽略大小写
-o 仅显示匹配到目标字符串
-v 显示不能被匹配到的字符串(反转)
-E 支持使用扩展的正则表达式字符串
-q 静默模式,不输出任何信息
#在本目录下创建zzz的连接
ln -s /root/aaa/zzz
常用参数(选项) 解释
-s 对源文件建立符号连接,而非硬连接(symbolic)
-d 建立目录的硬连接(directory)
-f 强行建立文件或目录的连接,不论文件或目录是否存在(force )
-b 删除,覆盖目标文件,之前的备份(backup)
-S<字尾备份字符串> 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的字尾备份字符串是符号"~",可通过"-S"参数来改变它
-v 显示指令执行过程(verbose)
-V<备份方式> 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-S"参数变更,当使用"-V"参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串。

查看文件内容常用命令

cat 显示文本文件内容 (catenate)

cat a.txt

nl

和cat命令相似,它的不同之处在于每一行的前面多显示了行号

less 文本文件内容

#代行号显示a.txt文件内容
less -N a.txt

#j -> 下一行
#k -> 上一行
#空格键 -> 下一页
#b键 -> 上一页
#q -> 退出
常用参数(选项) 解释
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格

more 分页显示文本文件内容

#从第五行开始 不以卷动的方式 显示a.txt文件内容,每次显示5行
more -5p +5 a.txt
#空格键 -> 下一页
#b键 -> 上一页
#q -> 退出
常用参数(选项) 解释
-num 一次显示的行数
+num 从第 num 行开始显示
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-f 计算行数时,以实际上的行数,而非自动换行过后的行数

head 查看文本中开头部分的内容

#默认head命令打印其相应文件的开头10行
#查看a.txt文件的前5行
haed  -n  5  a.txt
常用参数(选项) 解释
-q 隐藏文件名
-v 显示文件名
-n 显示的行数
-c 显示字节数

tail 查看文本中结尾部分的内容

#显示a.txt后20行,并循环读取
tail -20f a.txt

#常用快捷键
Ctrl+S 暂停刷新。
Ctrl+Q 继续刷新。
Ctrl+C 退出tail命令。
常用参数(选项) 解释
-f 循环读取,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
-F 循环读取,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
-n 显示的行数
-c 显示字节数
-q 不显示处理信息
-v 显示详细的处理信息
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束。
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

内存操作命令

  • 解读内存

Linux系统的内存分为物理内存和虚拟内存两种。物理内存是真实的,也就是物理内存条上的内存。而虚拟内存则是采用硬盘空间补充物理内存,将暂时不使用的内存页写到硬盘上以腾出更多的物理内存让有需要的进程使用。当这些已被腾出的内存页需要再次使用时才从硬盘(虚拟内存)中读回内存。这一切对于用户来说是透明的。通常对Linux系统来说,虚拟内存就是swap分区。

top命令

第四行: KiB Mem : 7990064 total, 136864 free, 5962136 used, 1891064 buff/cache

内容 含义
7990064 total 物理内存总量
136864 free 空闲内存总量
5962136 used 使用的物理内存总量
1891064 buff/cache 用作内核缓存的内存量

第五行: KiB Swap: 4063228 total, 3963132 free, 100096 used. 1740612 avail Mem

内容 含义
4063228 total 交换区总量
3963132 free 空闲交换区总量
100096 used 使用的交换区总量
1740612 avail Mem 代表可用于进程下一次分配的物理内存数量

free命令

  • free是指查看当前系统内存的使用情况,它显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。
常用参数(选项) 解释
-b 以Byte为单位显示内存使用情况
-k 以KB为单位显示内存使用情况
-m 以MB为单位显示内存使用情况
-g 以GB为单位显示内存使用情况
-h 以有好的方式显示内存的使用情况
-o 不显示缓冲区调节列
-s<间隔秒数> 持续观察内存使用状况
-t 显示内存总和列
-V 显示版本信息

alt

内容 含义
taotal 总计 物理或交换内存的大小
used 已使用 物理或交换内存的大小
free 可用的 物理或交换内存大小
shared 多个进程共享的内存总额
buff/cache 磁盘的缓存大小
available 可以被新应用程序使用的内存大小

注:taotal = used + free + buff/cache

#每两秒 以有好的方式显示 内存总和列
free -ths 2

alt

vmstat命令

  • vmstat(VirtualMeomoryStatistics,虚拟内存统计)是Linux中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU等的整体情况进行监视。
常用参数(选项) 解释
-a 显示活跃和非活跃内存
-f 显示从系统启动至今的fork数量 。
-m 显示slabinfo
-n 只在开始时显示一次各字段名称。
-s 显示内存相关统计信息及多种系统活动数量。
delay 刷新时间间隔。如果不指定,只显示一条结果。
count 刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d 显示磁盘相关统计信息。
-p 显示指定磁盘分区统计信息
-S 使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V 显示vmstat版本信息。

alt

类别 项目 含义 说明
Procs(进程) r 等待执行的任务数 展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
b 等待IO的进程数量
Memory(内存) swpd 正在使用虚拟的内存大小,单位k
free 空闲内存大小
buff 已用的cache大小,文件系统的cache
cache 已用的cache大小,文件系统的cache
inact 非活跃内存大小,即被标明可回收的内存,区别于free和active 具体含义见:概念补充(当使用-a选项时显示)
active 活跃的内存大小 具体含义见:概念补充(当使用-a选项时显示)
Swap si 每秒从交换区写入内存的大小(单位:kb/s)
so 每秒从内存写到交换区的大小
IO bi 每秒读取的块数(读磁盘) 现在的Linux版本块的大小为1024bytes
bo 每秒写入的块数(写磁盘)
system in 每秒中断数,包括时钟中断) 这两个值越大,会看到由内核消耗的cpu时间会越多
cs 每秒中断数,包括时钟中断
CPU(以百分比表示) Us 用户进程执行消耗cpu时间(user time) us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了
Sy 系统进程消耗cpu时间(system time) sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。
Id 空闲时间(包括IO等待时间)
wa 等待IO时间 Wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

dmidecode命令

要运行 dmidecode 命令,你需要 sudo 权限。因此输入命令

sudo dmidecode -t 17

该命令的输出可能很长,因为它显示所有内存类型设备的信息。因此,如果你无法上下滚动,则可能需要将该命令的输出发送到一个文件中,比如:

sudo dmidecode -t 17> dmi_infoI

或将其传递给 less 命令,如

sudo dmidecode -t 17 | less

less /proc/meminfo

  • 其他内存操作命令从 /proc/meminfo 文件中获取内存信息。你可以使用命令 less /proc/meminfo 直接读取该文件。通过使用 less 命令,你可以在长长的输出中向上和向下滚动,以准确找到你需要的内容。

  • 关于 /proc/meminfo 你应该知道:这不是一个真实的文件。相反 /proc/meminfo 是一个虚拟文件,包含有关系统的实时动态信息。特别是,你需要检查以下值:

内容 含义
MemTotal 全部内存
MemFree 空闲内存
MemAvailable 可用内存
Buffers 缓冲区
Cached 文件缓存
SwapCached 交换缓存
SwapTotal 全部交换区
SwapFree 空闲交换区

压缩命令

gzip && gunzip (gzip -d)

  1. gzip
  • 功能描述:压缩文件

  • 压缩后文件格式:.gz

  • 注:

    1. gzip只能压缩文件,不能压缩目录

    2. gzip压缩后,不会保留原文件

gzip 被压缩文件名

alt

  1. gunzip (gzip -d)
  • 功能描述:解压 .gz的压缩文件
  • 注:对于gzip压缩的文件,我们可以用gunzip或者gzip -d来解压;解压后不会保留原压缩文件的格式
gunzip 压缩文件名
或
gzip -d 压缩文件名

alt

zip && unzip

  1. zip
  • 功能描述:压缩文件或目录
  • 压缩后文件格式:.zip
  • 注:
    1. zip既能压缩文件,也能压缩目录
    2. zip压缩后,会保留原文件
    3. zip现在不需要 -r 参数也可以压缩目录
zip  选项[-r]  压缩后文件名  被压缩文件或目录

alt

常用参数(选项) 解释
-r 压缩目录
  1. unzip
  • 功能描述:解压 .zip的压缩文件
  • 注:对于zip压缩的文件,我们可以用unzip来解压;解压后会保留原压缩文件的格式
unzip  压缩文件名

alt

tar

  • 功能描述:压缩或解压 文件或目录
  • 压缩后文件格式:.tar.gz
  • 注:
    1. tar压缩既能压缩文件也能压缩目录
    2. tar压缩后会保留原文件,比gzip更加的实用
    3. tar压缩的文件;解压后会保留原压缩文件的格式
#tar 命令压缩
tar  选项[-zcvf] [压缩后文件名] 被压缩文件或目录

#tar 命令解压
tar  选项[-zxvf] [压缩文件名]
常用参数(选项) 解释
-c 建立压缩档案
-x 解压
-t 查看内容,不解压
-r 向压缩归档文件末尾追加文件
-u 更新原压缩包中的文件
以上5个是独立的命令,压缩解压都要用到其中1个,可以和别的命令连用但只能用其中1个 下面的参数是根据需要在压缩或解压档案时可选的
-z 有gzip属性的
-j 有bz2属性的
-Z 有compress属性的
-v 显示所有过程
-O 将文件解开到标准输出
下面的参数-f是必须的
-f 使用档案名字,这个参数要放在最后,后面只能接档案名(文件名)

alt

alt

bzip2 && bunzip2

  1. bzip2
  • 功能描述:压缩文件
  • 压缩后文件格式:.bz2
  • 注:
    1. 对于bzip2只能压缩文件,不能压缩目录
    2. bzip2相当于gzip的升级版,多了一个-k参数压缩时可以保留原文件
bzip2  选项 [-k] 被压缩文件名 
常用参数(选项) 解释
-k 产生压缩文件后保留原文
  1. bunzip2
  • 功能描述:解压 .bz2的压缩文件
  • 注:对于bzip2压缩的文件,我们可以用bunzip2来解压;也可以加上-k参数,让解压后会保留原压缩文件的格式
bunzip2  选项[-k] 压缩文件

jar命令(jdk命令)

  • jar命令一般用来对jar包文件处理,jar包是由JDK安装目录\bin\jar.exe命令生成的,当我们安装好JDK,设置好path路径,就可以正常使用jar.exe命令。
解压war包:
jar -xvf xxx.war

压缩war包:
jar -cvf xxx.war */.
解压jar包:
jar -xvf xxx.jar

压缩jar包:
jar -cvf xxx.jar */.