Linux常用命令总结(笔记)

记录一下本人工作中常用到的linux指令,以便查看,随时更新。

目录

  • 一、查找、查看、比较文件等相关操作
    • 查找文件(find)
    • 查看文件内容(cat、more、less、head、tail)
    • 文件比较(diff)
    • 文本编辑器(vi、vim)
  • 二、系统运行监测相关操作
    • 查看某一刻进程运行情况(ps)
    • 动态查看进程变化:top
    • 查看进程相关性(进程树):pstree
    • 传递signal给指定PID:kill -signal PID
    • 查看内存的使用情况:free
    • 查看系统与内核相关信息:uname
    • 查看系统运行时间和负载(uptime)
    • 查看端口监听:netstat
    • 分析内核产生的信息:dmesg
    • 检测系统资源(cpu、内存、IO)的变化:vmstat
    • 查看硬盘存取数据信息(iostat)
  • 三、文件系统与磁盘相关操作
    • 查看磁盘与目录容量(df、du)
    • 查看磁盘分区(fdisk、lsblk)
    • df、du、fdisk、lsblk的区别
    • 挂载和卸载文件系统(mount、umount)
    • 文件的压缩和解压缩(tar)
  • 四、Linux网络配置及网络性能监控
    • 查看/设置网卡(ifconfig)
    • 查看网卡配置、属性(ip、ethtool)
    • 测试网路通信(ping)
    • 查看路由信息(route)
    • 查看主机名(hostname)
    • 查看具体网卡配置文件
    • 网络性能监控(iftop、nload)

一、查找、查看、比较文件等相关操作

查找文件(find)

常用命令

find -name -filename  //查找文件名为filename的文件

相关参数
和时间相关参数
-atime,-ctime,-mtime,以-mtime为例:

-mtime n:n为数字,意义为在n天之前的“一天之内”被更改过的文件。

-mtime +n:列出在n天之前(不含n天本身)被更改过的文件名。

-mtime -n:列出在n天之内(含n天本身)被更改过的文件名。

-newer file:file为一个存在的文件,列出比file还要新的文件名。

用户或用户组相关参数
-uid n:n为数字,这个数字是用户的账号ID,即UID。

-gid n:n为数字,这个数字是用户组名的ID,即GID。

-user name:name为用户账号名称。

-group name:name为用户组名。

-nouser:寻找文件的所有者不存在于/etc/passwd中的文件。

-nogroup:寻找文件的所有用户组不存在于/etc/group中的文件。

查看文件内容(cat、more、less、head、tail)

常用命令
cat:由第一行开始显示文件内容。

more:一页一页的显示文件内容。

less:与more类似,查找关键字功能更完善。

head:只看头几行。

tail:只看结尾几行

相关参数

cat(concatenate)

-E:将结尾的断行字符$显示出来。

-n:打印出行号,连同空白行也会有行号。

-T:将(Tab)按键以^I显示出来。

-v:列出一些看不出来的特殊字符。

-A:相当于-vET的整合参数,可列出一些特殊字符,而不是空白而已。

more

空格键(space):代表向下翻一页。

Enter:代表向下滚动一行。

-f:立刻显示出文件名以及目前显示的行数。

q:代表立刻离开more,不再显示该文件内容。

b:代表向上翻一页,该操作只对文件有用,对管道无用。

less

操作:

空格键(space)/[PageDown]:向下翻动一页。

[PageUp]:向上翻动一页。

/字符串:向下查询“字符串”功能。

?字符串:向上查询“字符串”功能。

n:重复前一个查询。

N:反向重复前一个查询。

q:离开less这个程序。

head

head [-n number] 文件

参数:

-n:后面接数字,代表显示几行的意思。

不带参数默认显示前10行。

tail

tail [-n number] 文件

参数:

-n:后面接数字,代表显示几行的意思。

-f:表示持续检测后面所接的文件名,要等到按下ctrl+c才会结束检测。

不带参数默认显示后10行。

文件比较(diff)

diff [参数] 源文件 目标文件

-b:忽略一行当中仅有多个空白的区别,例如(“about me”与“about me”视为相同)

-B:忽略空白行的区别。

-i:忽略大小写的不同。

文本编辑器(vi、vim)

二、系统运行监测相关操作

查看某一刻进程运行情况(ps)

  • ps -ef //使用标准语法查看系统上的每个进程
  • ps -aux //使用 BSD 语法查看系统上的每个进程
  • ps -T -p PID //查看PID进程中的所有线程

动态查看进程变化:top

top -H -p PID  //查看PID进程的占用资源排行

查看进程相关性(进程树):pstree

传递signal给指定PID:kill -signal PID

kill -9 pid  //终止该pid进程

Linux常用命令总结(笔记)_第1张图片

查看内存的使用情况:free

free -m//以MB的形式显示内存使用情况

使用-b(byte)、-m(MB)、-k(KB)和-g(GB)来显示单位

查看系统与内核相关信息:uname

uname -a //显示所有系统相关信息

参数

-a:所有系统相关信息,包括下面的数据都会被列出来。

-s:系统内核名称。

-r:内核的版本。

-m:本系统的硬件名称,例如i686或x86_64等。

-p:CPU的类型,与-m类似,只是显示的是CPU的类型。

-i:硬件的平台(ix86)。

查看系统运行时间和负载(uptime)

uptime

在这里插入图片描述
解释:系统现在时间是17:54,已经运行了3天20小时51分钟,共5个用户;最后是系统负载:1分钟内系统平均负载为75%,3分钟内系统平均负载为88%,15分钟内系统平均负载为84%

uptime -p //更人性化的格式显示系统运行了多长时间
uptime -s //显示系统开始运行的时间和日期

查看端口监听:netstat

netstat -p 

参数:

-a:将目前系统上所有的连接、监听、Socket数据都列出来。

-t:列出tcp网络数据包的数据。

-u:列出udp网络数据包的数据。

-n:不列出进程的服务名称,以端口号(port number)来显示。

-l:列出目前正在网络监听(listen)的服务。

-p:列出该网络服务的进程PID。

Linux常用命令总结(笔记)_第2张图片
列介绍:

1、Proto:网络的数据包协议,主要分为TCP和UDP数据包。

2、Recv-Q:非由用户进程连接到此socket的复制的总字节数。

3、Send-Q:非由远程主机传送过来的acknowledged总字节数。

4、LocalAddress:本地的IP端口情况。

5、ForeignAddress:远程主机的IP端口情况。

6、State:连接状态,建立连接(ESTABLISED)、监听(LISTEN)。

7、PID/Program name:进程号/进程名

从LocalAddress结合State可以判断出当前服务器上哪个端口有没有被监听。

分析内核产生的信息:dmesg

dmesg命令用于打印linux系统开机启动信息,kernel 会将开机信息存储在 ring buffer 中。您若是开机时来不及查看信息,可利用 dmesg 来查看。开机信息亦保存在 /var/log 目录中,名称为 dmesg 的文件里。

dmesg | more  //用more的形式去查看dmesg信息
dmesg | grep sda  //显示所有被内核检测到的硬盘设备
dmesg | grep -i hd   //查看硬盘相关信息

检测系统资源(cpu、内存、IO)的变化:vmstat

vmstat 检测系统资源的变化
vmstat 1 3 统计目前系统资源状态,每秒1次,共计3
vmstat 1   统计目前系统资源状态,每秒1

Linux常用命令总结(笔记)_第3张图片
r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。

swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

free 空闲的物理内存的大小,剩余两个多G。

buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用4344KB

cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用8888多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)

si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。

so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒

bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

in 每秒CPU的中断次数,包括时间中断

cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。

sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

wt 等待IO CPU时间。

查看硬盘存取数据信息(iostat)

iostat
iostat 11秒检测一次

Linux常用命令总结(笔记)_第4张图片
tps:平均每秒钟的传送次数,与数据传输的“次数”有关,非容量;

kB_read/s:开机到现在平均的读取单位;

kB_wrtn/s:开机到现在平均的写入单位;

kB_read:开机到现在总共读出来的文件单位;

kB_wrtn:开机到现在总共写入的文件单位;

三、文件系统与磁盘相关操作

查看磁盘与目录容量(df、du)

df -h //列出文件系统的整体磁盘使用量

Linux常用命令总结(笔记)_第5张图片

在显示的结果中要特别留意根目录的剩余容量(上图红框中的),因为所有的数据都是从根目录衍生出来的,因此当根目录的剩余容量为0时,系统的问题就很大了。

df -ih  //不用硬盘容量,而以inode的数量来显示

Linux常用命令总结(笔记)_第6张图片
当inode使用率达到100%时,即使硬盘空间还有剩余,也无法在目录下放置新文件了。

du -h //分别显示本路径下目录/文件大小
du -sh //显示本目录磁盘总占用

查看磁盘分区(fdisk、lsblk)

fdisk -l //查看磁盘分区情况

Linux常用命令总结(笔记)_第7张图片
可以看到当前系统内有两块硬盘,磁盘文件名为/dev/sda和/dev/sdb,容量分别均为240G,如果要查看磁盘的详细内容,可以用fdisk /dev/sda命令去查看。注意/dev/sda后不要加上数字,加上数字变成该磁盘上的某一分区了,会使fdisk命令报错。

lsblk

lsblk命令的英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系。
Linux常用命令总结(笔记)_第8张图片

df、du、fdisk、lsblk的区别

  • df主要是检查文件系统磁盘占用情况,所以这里可以看到文件系统
    Linux常用命令总结(笔记)_第9张图片

  • du主要是检查磁盘空间占用情况,统计目录或者文件大小的。

  • fdisk一般用来磁盘分区,也可以用来查看磁盘分区情况。
    Linux常用命令总结(笔记)_第10张图片
    这里可以看到/dev/sdb和/dev/sda两个磁盘,但是在df命令中看不到/dev/sda,因为/dev/sda上面没有跑文件系统。

  • lsblk命令用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,这个命令很好用,因为可以让电脑上的磁盘和分区信息很清晰。
    Linux常用命令总结(笔记)_第11张图片

挂载和卸载文件系统(mount、umount)

mount 或mount -l  //显示目前的挂载信息
mount 设备文件名 挂载点  //将设备文件名挂载到挂载点
umount -f //设备文件名或挂载点  //强制卸载
umount -n //不更新/etc/mtab的情况下卸载
cat /etc/fstab  ///etc/mtab文件记录了当前系统的挂载情况

文件的压缩和解压缩(tar)

tar -zcv -f filename.tar.gz /home/ACL //将ACL文件夹压缩并命名为filename.tar.gz

tar -zxv -f filename.tar.gz -C /home/ACL //将filename.tar.gz文件夹解压到ACL目录

四、Linux网络配置及网络性能监控

查看/设置网卡(ifconfig)

ifconfig 查看所有活动网卡信息
ifconfig -a 查看所有网卡信息
ifconfig eth0 查看具体网卡信息
ifconfig eth0 up/down 激活/禁用网卡
ifup/ifdown eth0 激活/禁用网卡(重新读取配置文件)

查看网卡配置、属性(ip、ethtool)

ip //查看ip指令使用参数

Linux常用命令总结(笔记)_第12张图片

查看网络接口配置情况:

ip addr 

Linux常用命令总结(笔记)_第13张图片

查看网络接口属性信息

ethtool bond0//查看bond0网口的配置信息

Linux常用命令总结(笔记)_第14张图片

ethtool eth0//查看bond0网口的配置信息

Linux常用命令总结(笔记)_第15张图片

测试网路通信(ping)

ping 10.15.114.27 -c 4  //ping4次

Linux常用命令总结(笔记)_第16张图片

查看路由信息(route)

route -n //以数字的形式显示路由信息

在这里插入图片描述

查看主机名(hostname)

查看具体网卡配置文件

cat /etc/sysconfig/network-scripts/ifcfg-eth0

Linux常用命令总结(笔记)_第17张图片
DEVICE 网卡名称 要与配置文件名中一致
TYPE=Ethernet 以太网
ONBOOT=yes 重启操作系统后激活网卡
BOOTPROTO none 或者static是静态设置ip;dhcp是自动获取
IPADDR ip地址
GATEWAY 网关 默认路由
PREFIX 子网掩码,或使用NETMASK=255.255.255.0

cat /etc/sysconfig/network-scripts/ifcfg-bond0

Linux常用命令总结(笔记)_第18张图片

网络性能监控(iftop、nload)

iftop

参数
-i 设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
-n 使host信息默认直接都显示IP,如:# iftop -n
-N 使端口信息默认直接都显示端口号,如: # iftop -N
-F 显示特定网段的进出流量,如# iftop -F 121.11.1.0/24或# iftop -F 121.11.1.0/255.255.255.0
-h(display this message),帮助,显示参数信息
-p 使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的IP信息;
-b 使流量图形条默认就显示;
-P 使host信息及端口信息默认就都显示;

快捷键
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按N切换显示端口号或端口服务名称;
按D切换是否显示远端目标主机的端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按q退出监控

iftop -i bond0 //监控bond0的实时网络带宽信息

Linux常用命令总结(笔记)_第19张图片
iftop界面说明:

界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。

中间的<= =>这两个左右箭头,表示的是流量的方向。

TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

nload
nload 是一个 linux 自由软件工具,通过提供两个简单的图形来帮助linux用户和系统管理员来实时监控网络流量以及宽带使用情况:一个是进入流量,一个是流出流量。

参数:
-i:进入网卡的流量图的显示比例最大值设置,默认10240 kBit/s.
-m:不显示流量图,只显示统计数据。
-o:出去网卡的流量图的显示比例最大值设置,默认10240 kBit/s.
-t:显示数据的刷新时间间隔,单位是毫秒,默认500。
-u:设置右边Curr、Avg、Min、Max的数据单位,默认是自动变的.注意大小写单位不同!
h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc.
H|B|K|M|G H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.
-U:设置右边Ttl的数据单位,默认是自动变的.注意大小写单位不同(与-u相同)

示例:

如果不带选项来运行nload,那么它会监控所有自动检测到的设备,你可以通过左右方向键来显示其中的任何一个设备(网卡)的信息。

nload

Linux常用命令总结(笔记)_第20张图片
nload 默认分为上下两块:
上半部分是:Incoming也就是进入网卡的流量,
下半部分是:Outgoing,也就是从这块网卡出去的流量,
每部分都有当前流量(Curr),
平均流量(Avg),
最小流量(Min),
最大流量(Max),
总和流量(Ttl)这几个部分,看起来还是蛮直观的

nload -u m  //使用MBit/s显示流量信息
nload -t 130  //设置刷新显示事件间隔为130毫秒
nload wlan0 eth0 //同时监控wlan0和eth1

你可能感兴趣的:(Linux,linux)