线上查询及帮助命令

man

help

文件和目录操作命令

ls

cd

cp

find

mkdir

mv

pwd

rename

rm

rmdir

touch

chattr

lsattr

file

查看文件类型

tree

可以以树状结构查看目录结构

基本参数:

-F

区别目录和文件(功能类似ls -F)

目录后面是\

可执行文件后面是*  

-a

显示所有文件和目录

-L

指定层数

-C

带颜色显示,美观

basename

用于打印目录或者文件的基本名称。

通常在 shell 脚本中用于获取文件名或目录名。

基本语法:

basename   

基本参数:

-a

表示支持求多个路径的名字

-s

表示移除后缀

-z

表示输出不换行

示例:

获取文件名

[root@centos7 ~]# basename /root/home/test.txt
test.txt

获取目录名

[root@centos7 ~]# basename /root/home/hello
hello

去掉文件后缀

默认是会连同文件后缀一起输出的,如果不想要文件后缀,可以有如下两种做

法:

语法一:basename 带后缀的文件路径 后缀

语法二:basename -s 后缀 带后缀的文件路径

[root@centos7 ~]# basename /root/test.txt .txt
test

[root@centos7 ~]# basename -s .txt /root/test.txt
test

获取多个路径的名字

语法:basename -a 路径1 路径2 路径3 ...

[root@centos7 ~]# basename -a /root/abc.txt /root/home /home/db.log
abc.txt
home
db.log

dirname

用于去除文件名中的非目录部分,仅显示与目录有关的内容

示例:

[root@centos7 ~]# dirname /usr/bin/sort
/usr/bin

[root@centos7 ~]# dirname /usr/bin
/usr

进入当前脚本所在目录

cd `dirname $0`

cd $(dirname $0)

进入当前脚本所在的上级目录

cd `dirname $0`/..

脚本中获取 脚本文件所在的绝对路径

shellPath1=$(dirname $0)

shellPath1=`dirname $0`
echo $shellPath1

查看文件及内容处理命令

cat

tac

more

less

vi/vim

head

tail

cut

tr

paste

sort

uniq

wc

iconv

日常工作中我们需要将windows生成的文件上传到Linux系统,有时候会因为

编码问题出现显示乱码。例如我上传了一个csv文件到Linux服务器上,默认编

码为GB2312,在Linux打开则会出现乱码,我们需要将文件进行编码转换。

iconv命令对于给定文件把它的内容从一种编码转换成另一种编码。

​https://blog.csdn.net/carefree2005/article/details/123706744​

dos2unix

用来将DOS格式的文本文件转换成UNIX格式的

rev

将文件中的每行内容以字符为单位反序输出,即第一个字符最后输出,最后一

个字符最先输出,依次类推

示例:

[root@localhost ~]# cat iptables.bak
# Generated by iptables-save v1.3.5 on Thu Dec 26 21:25:15 2013
*filter
:INPUT DROP [48113:2690676]
:FORWARD accept [0:0]
:OUTPUT ACCEPT [3381959:1818595115]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Thu Dec 26 21:25:15 2013

[root@localhost ~]# rev iptables.bak
3102 51:52:12 62 ceD uhT no 5.3.1v evas-selbatpi yb detareneG #
retlif*
]6760962:31184[ PORD TUPNI:
]0:0[ TPECCA DRAWROF:
]5115958181:9591833[ TPECCA TUPTUO:
TPECCA j- ol i- TUPNI A-
TPECCA j- 22 tropd-- pct m- pct p- TUPNI A-
TPECCA j- 08 tropd-- pct m- pct p- TUPNI A-
TPECCA j- DEHSILBATSE,DETALER etats-- etats m- TUPNI A-
TPECCA j- pmci p- TUPNI A-
TPECCA j- ol o- TUPTUO A-
TIMMOC
3102 51:52:12 62 ceD uhT no detelpmoC #

join

“将两个文件中指定栏位相同的行连接起来”,即按照两个文件中共同拥有的某

一列,将对应的行拼接成一行

文件压缩及解压缩命令

tar

unzip

gzip

zip

信息显示命令

hostname

file

stat

uname

打印系统信息

基本参数:

-a或--all

显示全部的信息

-m或--machine

显示电脑类型

-n或--nodename

显示在网络上的主机名称

-r或--release

显示操作系统的发行编号

-s或--sysname

显示操作系统名称

-v

显示操作系统的版本

示例:

显示系统信息:

# uname -a
Linux iZbp19byk2t6khuqj437q6Z 4.11.0-14-generic #20~16.04.1-Ubuntu SMP Wed Aug 9 09:06:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

显示计算机类型:

# uname -m
x86_64

显示计算机名:

# uname -n
runoob-linux

显示操作系统发行编号:

# uname -r
4.11.0-14-generic

显示操作系统名称:

# uname -s
Linux

dmesg

用来在系统中显示内核的相关信息

当我们在Linux上排除故障时,dmesg命令会十分方便,它能很好地帮我们鉴

别硬件相关的error和warning。

除此之外,dmesg命令还能打印出守护进程相关的信息,已帮助我们debug

​https://blog.csdn.net/rustwei/article/details/125976157​

uptime

uptime 的功能是展示系统已运行的时间

uptime 提供包含以下内容的一行信息:

当前时间、系统运行了多长时间、当前登录的用户数以及过去 1、5 和 15 分钟的系统负载平均值。

系统负载平均值是处于可运行或不可中断状态的平均进程数。

处于可运行状态的进程要么正在使用 CPU,要么正在等待使用 CPU。

处于不可中断状态的进程正在等待某些 I/O 访问,例如等待磁盘。

取三个时间间隔的平均值。负载平均值并未针对系统中的 CPU 数量进行标准化,因此负载平均值为 1 意味着单个 CPU 系统始终处于加载状态,而在 4 个 CPU 系统上则意味着它有 75% 的时间处于空闲状态。

基本参数:

-p,--pretty

以更简洁格式显示

-s,--since

系统运行时间自从 yyyy-mm-dd HH:MM:SS

-V

展示版本信息

示例:

[root@server run]# uptime
15:03:58 up 32 days, 23:47, 1 user, load average: 0.07, 0.05, 0.05
[root@server run]# uptime -p
up 4 weeks, 4 days, 23 hours, 47 minutes
[root@server run]# uptime -s
2021-11-28 15:16:50

du

显示指定的目录或文件所占用的磁盘空间

示例:

显示目录或者文件所占空间

# du
608 ./test6
308 ./test4
4 ./scf/lib
4 ./scf/service/deploy/product
4 ./scf/service/deploy/info
12 ./scf/service/deploy
16 ./scf/service
4 ./scf/doc
4 ./scf/bin
32 ./scf
8 ./test3
1288 .

显示指定文件所占空间

# du log2012.log 
300 log2012.log

方便阅读的格式显示test目录所占空间情况

# du -h test
608K test/test6
308K test/test4
4.0K test/scf/lib
4.0K test/scf/service/deploy/product
4.0K test/scf/service/deploy/info
12K test/scf/service/deploy
16K test/scf/service
4.0K test/scf/doc
4.0K test/scf/bin
32K test/scf
8.0K test/test3
1.3M test

df

显示目前在 Linux 系统上的文件系统的磁盘使用情况

df命令可显示所有文件系统对i节点和磁盘块的使用情况

示例:

# df 
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda6 29640780 4320704 23814388 16% /
udev 1536756 4 1536752 1% /dev
tmpfs 617620 888 616732 1% /run
none 5120 0 5120 0% /run/lock
none 1544044 156 1543888 1% /run/shm

top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

top显示系统当前的进程和其他状况,是一个动态显示过程,可以自动或者通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.。

比较准确的说,top命令提供了实时的对系统处理器的状态监控,显示系统中 CPU最“敏感”的任务列表。top命令可以按CPU使用、内存使用和执行时间对任务进行排序

free

显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区

默认情况下,"free"命令显示内存的使用信息。

默认按照k(b)的计数单位统计

基本参数:

-b

以Byte为单位显示内存使用情况

-k

以KB为单位显示内存使用情况

-m

以MB为单位显示内存使用情况

-g

以GB为单位显示内存使用情况

date

cal

在所有的类linux操作系统中,cal或者ncal命令会在命令行打印出一个有格式的日历(阳历)。

示例:

> cal
2022

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

> ncal:
2022
6 13 20 27
7 14 21 28
1 8 15 22 29
2 9 16 23 30
3 10 17 24
4 11 18 25
5 12 19 26

可以看到ncal命令和cal命令都会在控制台输出有格式的日历,但是ncal命令显示的日历是竖着的,有别于传统的日历格式。

搜索文件命令

which

在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。命令的格式如下:

which 可执行文件名称

示例:

[test@node1~]$ which ls
alias ls='ls --color=auto'
/bin/ls

find

whereis

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

示例:

whereis ls
whereis cd
whereis mkdir

locate

用户管理命令

useradd

usermod

userdel

groupadd

passwd

chage

id

su

visudo

sudo

基础网络操作命令

nmap

nmap 的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题。

nmap 以新颖的方式使用原始 IP 报文来发现网络上有哪些主机,这些主机提供什么服务(应用程序名和版本),这些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。

nmap 的常用功能有:

(1)探测一组主机是否在线;

(2)扫描主机端口,嗅探所提供的网络服务;

(3)推断主机所用的操作系统。

​https://blog.csdn.net/K346K346/article/details/121154415​

lsof

route

mail

mutt

nslookup

dig

host

traceroute

traceroute基本概念

traceroute (Windows系统下是tracert) 命令利用ICMP 协议定位您的计算机和目标计算机之间的所有路由器。TTL值可以反映数据包经过的路由器或网关的数量,通过设置独立ICMP呼叫报文的TTL值和观察该报文被抛弃的返回信息,traceroute命令能够遍历到数据包传输路径上的所有路由器。

traceroute是一条缓慢的命令,因为每经过一台路由器都要花去大约10到15秒。

traceroute工作原理及详细过程

traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。尽管ping工具也可以进行侦测,但是,因为ip头的限制,ping不能完全的记录下所经过的路由器,所以traceroute正好就填补了这个缺憾。

traceroute的原理是非常非常的有意思,它收到目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器ip。从而避开了ip头只能记录有限路由IP的问题。

有人要问,我怎么知道UDP到没到达目的主机呢?这就涉及一个技巧的问题,TCP和UDP协议有一个端口号定义,而普通的网络程序只监控少数的几个号码较小的端口,比如说80,比如说23,等等。而traceroute发送的是端口号大于30000(真变态)的UDP报文,所以到达目的主机的时候,目的主机只能发送一个端口不可达的ICMP数据报给主机。主机接到这个报告以后就知道,目的主机到了,所以,说traceroute是一个骗子一点也不为过。

其详细过程如下:

将传递到目的IP地址的ICMP Echo消息的TTL值被设置为1,该消息报经过第一个路由器时,其TTL值减去1,此时新产生的TTL值为0。

由于TTL值被设置为0,路由器判断此时不应该尝试继续转发数据报,而是直接抛弃该数据报。由于数据报的生存周期(TTL值)已经到期,这个路由器会发送一个一个ICMP时间超时,即TTL值过期信息返回到客户端计算机。

此时,发出traceroute命令的客户端计算机将显示该路由器的名称,之后可以再发送一个ICMP Echo消息并把TTL值设置为2。

第1个路由器仍然对这个TTL值减1,然后,如果可能的话,将这个数据报转发到传输路径上的下一跳。当数据报抵达第2个路由器,TTL值会再被减去1,成为0值。

第2个路由器会像第1个路由器一样,抛弃这个数据包,并像第1个路由器那样返回一个ICMP消息。

该过程会一直持续,traceroute命令不停递增TTL值,而传输路径上的路由器不断递减该值,直到数据报最终抵达预期的目的地。

当目的计算机接收到ICMP Echo消息时,会回传一个ICMP Echo Reply消息。

traceroute常用命令

traceroute的用法为:

Traceroute [options] [data size]

[options]的内容有:

[-n]:
[-v]:
[-p]:UDP(33434)
[-q]:TTL(3)
[-t]:

[data size]:每次测试包的数据字节长度(缺省为38)

traceroute 命令的基本用法是,在命令提示符后键入 “tracert host_name” 或 “tracert ip_address”,其中,tracert 是 traceroute 在 Windows 操作系统上的称呼。

Linux运维150命令汇总(补充)_linux

输出有 5 列:

第一列是描述路径的第 n 跳的数值,即沿着该路径的路由器序号;

第二列是第一次往返时延;

第三列是第二次往返时延;

第四列是第三次往返时延;

第五列是路由器的名字及其输入端口的 IP 地址。

有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;可以加-n 参数来避免DNS解析,以IP格式输出数据。

此外,tracert 命令还可以用来查看网络在连接站点时经过的步骤或采取哪种路线,如果是网络出现故障,就可以通过这条命令查看出现问题的位置。

​https://blog.csdn.net/sinat_33442459/article/details/75126149​

tcpdump

tcpdump全称:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。

tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

​https://www.cnblogs.com/wsy0202/p/11177449.html​

​https://blog.csdn.net/51574197/article/details/116171604​

有关磁盘与文件系统的命令

mount

umount

df

du

fsck

用于检测并修复文件系统中的错误

dd

dumpe2fs

dump

fdisk

parted

mkfs

partprobe

e2fsck

mkswap

swapon

sync

用于数据同步,sync 命令可以强制将内存中的文件缓冲写入磁盘,更新块信息。

resize2fs

关机和查看系统信息的命令

shutdown

halt

init

init 0   就是关机

init 3  就是切换到多用户

init 5  就是切换到桌面

init 6  就是重启

系统管理相关命令

uptime

命令简介

uptime 用于显示系统总共运行了多长时间和系统的平均负载。

无选项 uptime 命令会显示一行信息,依次为:

当前时间、系统已经运行了多长时间、目前有多少用户登录、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。

输出结果等同于 top 命令汇总区的第一行。

命令格式

uptime [options]

[options]的内容有:

-p --pretty  
-h --help
-s --since yyyy-mm-dd HHSS format
-V --version

常用示例

(1)查看系统运行时长与平均负载

uptime 
2255 up 445 days 9:38 5 users load average 0.08 0.08 0.06

显示的信息依次为:

当前时间(2255)、系统已经运行了多长时间(up 445 days, 9:38,表示 445 天 9 时 38 分钟)、目前有多少登录用户(5 users)、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载(load average: 0.08, 0.08, 0.06)

(2)查看系统启动时间

uptime -s 
2018-07-20 1321

(3)只输出系统运行时长

uptime -p 
up 1 year 11 weeks 4 days 9 hours 43 minutes

拓展

  • 什么是系统平均负载:

系统平均负载指单位时间内,系统中处于可运行状态和不可中断状态的进程数

可运行状态的进程指正在使用 CPU 或正在等待使用 CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。

不可中断状态的进程指正在等待某些 ​​I/O​​​ 的进程,即我们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程。例如等待磁盘 I/O,当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题。所以,不可中断状态实际上是系统对进程和​​硬件​​设备的一种保护机制。

  • 系统平均负载多少时合理:

uptime 命令给出的三个时间段的平均负载并不是标准化的,因为系统中 CPU 核心数量是不定的。所以平均负载为 1 意味着拥有一个 CPU 核心的系统一直在忙碌,而在一个拥有 4 个 CPU 核心的系统上,意味着系统 75% 的时间是空闲的。

所以,当系统平均负载除以 CPU 核心数小于等于 1表示系统没有出现过载的情况。最理想的情况是每个CPU 上都刚好运行一个进程,这样 CPU 就得到了充分的利用。

三个时间段统计出的系统平均负载,我们以哪个数字为准?一分钟?五分钟?还是十五分钟?我们应该着眼于五分钟或者十五分钟的平均数值,如果前一分钟的负载情况是 1.00,那么仍可以说明认定服务器情况还是正常的,但是如果十五分钟的数值仍然保持在 1.00,那么就值得注意了。

另外,读取文件 /proc/loadavg 可直接查看系统平均负载。

cat /proc/loadavg 
0.04 0.03 0.05 1/319 21900

除了前 3 个数字表示系统平均负载外,后面的一个分数,分母表示系统进程总数,分子表示正在运行的进程数;最后一个数字表示最近运行的进程 ID。

  • 获取系统 CPU 核心数:

使用 lscpu 命令查看。

或者直接访问文件 /proc/cpuinfo 获取 CPU 核心数。

grep 'model name' /proc/cpuinfo | wc -l 6

top

命令简介

top命令是Linux系统中常用的性能分析工具,可以实时地查看系统的运行情况,比如内存、CPU、负载以及各个进程的资源占用情况。

命令格式

top [options]

[options]的内容有:

-p  
-d 5s
-c
-o top -o PID PIDtop -o -PID PID
-n top -n 33退
-b top-n top -b -n 3 > /tmp/top.tmp
-i (idle) (zombie)
-u

常用示例

(1)显示进程信息

[root@TG1704 log]# top

top - 14:06:23 up 70 days, 16:44, 2 users, load average: 1.25, 1.32, 1.35

Tasks: 206 total, 1 running, 205 sleeping, 0 stopped, 0 zombie

Cpu(s): 5.9%us, 3.4%sy, 0.0%ni, 90.4%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st

Mem: 32949016k total, 14411180k used, 18537836k free, 169884k buffers

Swap: 32764556k total, 0k used, 32764556k free, 3612636k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

28894 root 22 0 1501m 405m 10m S 52.2 1.3 2534:16 java

18249 root 18 0 3201m 1.9g 11m S 35.9 6.0 569:39.41 java

2808 root 25 0 3333m 1.0g 11m S 24.3 3.1 526:51.85 java

25668 root 23 0 3180m 704m 11m S 14.0 2.2 360:44.53 java

574 root 25 0 3168m 611m 10m S 12.6 1.9 556:59.63 java

1599 root 20 0 3237m 1.9g 11m S 12.3 6.2 262:01.14 java

1008 root 21 0 3147m 842m 10m S 0.3 2.6 4:31.08 java

13823 root 23 0 3031m 2.1g 10m S 0.3 6.8 176:57.34 java

28218 root 15 0 12760 1168 808 R 0.3 0.0 0:01.43 top

29062 root 20 0 1241m 227m 10m S 0.3 0.7 2:07.32 java

1 root 15 0 10368 684 572 S 0.0 0.0 1:30.85 init

2 root RT -5 0 0 0 S 0.0 0.0 0:01.01 migration/0

3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0

4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0

5 root RT -5 0 0 0 S 0.0 0.0 0:00.80 migration/1

6 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1

7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1

8 root RT -5 0 0 0 S 0.0 0.0 0:20.59 migration/2

9 root 34 19 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/2

10 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/2

11 root RT -5 0 0 0 S 0.0 0.0 0:23.66 migration/3

12 root 34 19 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/3

13 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/3

14 root RT -5 0 0 0 S 0.0 0.0 0:20.29 migration/4

15 root 34 19 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/4

16 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/4

17 root RT -5 0 0 0 S 0.0 0.0 0:23.07 migration/5

18 root 34 19 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/5

19 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/5

20 root RT -5 0 0 0 S 0.0 0.0 0:17.16 migration/6

21 root 34 19 0 0 0 S 0.0 0.0 0:00.05 ksoftirqd/6

22 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/6

23 root RT -5 0 0 0 S 0.0 0.0 0:58.28 migration/7

说明:

前五行是当前系统情况整体的统计信息区。

第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:

14:06:23  

up 70 days, 16:44 701644

2 users 2

load average: 1.15, 1.42, 1.44 load average1515

load average5CPU5

第二行,Tasks — 任务(进程),具体信息说明如下:

2061205sleepstoped0zombie0

第三行,cpu状态信息,具体属性说明如下:

5.9%us  CPU

3.4% sy CPU

0.0% ni CPU

90.4% id CPU

0.0% wa IOCPU

0.0% hi Hardware IRQCPU

0.2% si Software InterruptsCPU

第四行,内存状态,具体信息如下:

32949016k total  32GB

14411180k used 使14GB

18537836k free 18GB

169884k buffers 169M

第五行,swap交换分区信息,具体信息说明如下:

32764556k total  32GB

0k used 使0K

32764556k free 32GB

3612636k cached 3.6GB

备注:

第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:18537836k +169884k +3612636k = 22GB左右。

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第六行,空行。

第七行以下:各进程(任务)的状态监控,项目列信息说明如下:

PID  id

USER

PR

NI nice

VIRT 使kbVIRT=SWAP+RES

RES 使kbRES=CODE+DATA

SHR kb

S D= R= S= T=/ Z=

%CPU CPU

%MEM 使

TIME+ 使CPU1/100

COMMAND /

(2)显示 完整命令

top -c

(3)以批处理模式显示程序信息

top -b

(4)以累积模式显示程序信息

top -S

(5)设置信息更新次数

top -n 2

(6)设置信息更新时间

top -d 3

3

(7)显示指定的进程信息

top -p 574

Linux运维150命令汇总(补充)_linux_02

top交互命令

top命令在执行过程中可以使用一些交互功能:

h 

k

i

q 退

r

S

s sm s05 s

fF

oO

l

m

t CPU

c

M

P CPU使

T /

W ~/.toprc

其他使用技巧

  • 多U多核CPU监控

在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:

Linux运维150命令汇总(补充)_linux_03

观察上图,服务器有16个逻辑CPU,实际上是4个物理CPU。再按数字键1,就会返回到top基本视图界面。

  • 高亮显示当前运行进程

敲击键盘“b”(打开/关闭加亮效果),top的视图变化如下:

Linux运维150命令汇总(补充)_linux_04

我们发现进程id为2570的“top”进程被加亮了,top进程就是视图第二行显示的唯一的运行态(runing)的那个进程,可以通过敲击“y”键关闭或打开运行态进程的加亮效果。

  • 进程字段排序

默认进入top时,各进程是按照CPU的占用量来排序的,在下图中进程ID为28894的java进程排在第一(cpu占用142%),进程ID为574的java进程排在第二(cpu占用16%)。

Linux运维150命令汇总(补充)_linux_05

敲击键盘“x”(打开/关闭排序列的加亮效果),top的视图变化如下:

Linux运维150命令汇总(补充)_linux_06

可以看到,top默认的排序列是“%CPU”。

  • 通过”shift + >”或”shift + <”可以向右或左改变排序列

下图是按一次”shift + >”的效果图,视图现在已经按照%MEM来排序。

Linux运维150命令汇总(补充)_linux_07

free

命令简介

free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(​​swap​​)和内核缓冲区内存。共享内存将被忽略。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

命令格式

free [options]

[options]的内容有:

-b  Byte使
-k KB使
-m MB使
-g GB使
-h 使
-o
-s<> 使
-t
-V

常用示例

  • 通过free命令来查看我的内存数据

Linux运维150命令汇总(补充)_linux_08

说明:

taotal  swap
used 使swap
free swap
shared
buff/cache
available 使
  • -h:以有好的方式显示内存的使用情况

Linux运维150命令汇总(补充)_linux_09

  • -s<间隔秒数>:持续观察内存使用状况

这里以2秒为间隔来进行检测观察

Linux运维150命令汇总(补充)_linux_10

  • -t :显示内存总和列

Linux运维150命令汇总(补充)_linux_11

拓展

  • free 与 available

在 free 命令的输出中,有一个 free 列,同时还有一个 available 列。这二者到底有何区别?

free 是真正尚未被使用的物理内存数量。至于 available 就比较有意思了,它是从应用程序的角度看到的可用内存数量。Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。

所以从应用程序的角度来说,available = free + buffer + cache。请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。

swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件。所以具体的实现可以是 swap 分区也可以是 swap 文件。

当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。

现在的机器一般都不太缺内存,如果系统默认还是使用了 swap 是不是会拖累系统的性能?

理论上是的,但实际上可能性并不是很大。并且内核提供了一个叫做 swappiness 的参数,用于配置需要将内存中不常用的数据移到 swap 中去的紧迫程度。这个参数的取值范围是 0~100,0 告诉内核尽可能的不要将内存数据移到 swap 中,也即只有在迫不得已的情况下才这么做,而 100 告诉内核只要有可能,尽量的将内存中不常访问的数据移到 swap 中。在 ubuntu 系统中,swappiness 的默认值是 60。如果我们觉着内存充足,可以在 /etc/sysctl.conf 文件中设置 swappiness:

vm.swappiness=10
  • /proc/meminfo 文件

其实 free 命令中的信息都来自于 /proc/meminfo 文件。

/proc/meminfo 文件包含了更多更原始的信息,只是看起来不太直观:

$ cat /proc/meminfo

Linux运维150命令汇总(补充)_linux_12

vmstat

命令简介

vmstat命令是最常见的Linux/Unix监控工具,属于sysstat包。

可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。

这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。

vmstat和top的区别:

vmstat是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析,而top能够实时显示系统中各个进程的资源占用情况。

​​​https://www.cnblogs.com/liugp/p/14941686.html​

命令安装

yum install -y sysstat

命令格式

vmstat [-a] [-n] [-S unit] [delay [ count]]

vmstat [-s] [-n] [-S unit]

vmstat [-m] [-n] [delay [ count]]

vmstat [-d] [-n] [delay [ count]]

vmstat [-p disk partition] [-n] [delay [ count]]

vmstat [-f]

vmstat [-V]

参数的内容有:

-a  
-f fork
-m slabinfo
-n
-s
delay
count
-d
-p
-S 使 k K m M 1000102410000001048576byteK1024 bytes
-V vmstat

常用示例

  • 以1秒为时间间隔,连续收集3次性能数据
[root@jumpserver-168-182-149 ~]# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 434432 700156 36 1380360 0 0 3 13 42 12 5 3 92 0 0
1 0 434432 686628 36 1380456 0 0 0 0 2573 1434 18 6 77 0 0
1 0 434432 662676 36 1380512 0 0 0 0 2021 1395 15 5 80 0 0

说明:

Procs(进程)

r    cpucpucpu
b IO

Memory(内存)

swpd  使k  
free
buff buff
cache cachecache
inact freeactive
active

Swap

si  kb/s  
so

IO

bi    blockLinux1024bytes
bo block

system

in    cpusy
cs 线线

CPU(以百分比表示)

us  cpu(user time)  uscpu50%使
sy cpu(system time) syscpuus + sy80%us+sy 80%CPU
Id (IO) us+sy+id=100
wa IO waio访
  • -f: 查看系统已经fork了多少次

Linux运维150命令汇总(补充)_linux_13

  • -m:显示slab信息

Linux运维150命令汇总(补充)_linux_14

  • -n:头信息仅显示一次

Linux运维150命令汇总(补充)_linux_15

  • -s:以表格方式显示事件计数器和内存状态

Linux运维150命令汇总(补充)_linux_16

  • -S:以指定单位输出结果

Linux运维150命令汇总(补充)_linux_17

  • -a:显示活动命令

Linux运维150命令汇总(补充)_linux_18

  • -d:显示磁盘的相关统计信息

Linux运维150命令汇总(补充)_linux_19

mpstat

iostat

sar

chkconfig

系统安全相关命令

chmod

chown

chgrp

chage

passwd

su

sudo

umask

chattr

lsattr

查看系统用户登陆信息的命令

whoami

who

w

last

lastlog

users

finger

其他

echo

printf

rpm

yum

watch

alias

unalias

date

clear

history

eject

time

nohup

nc

xargs

exec

export

unset

type

bc

系统性能监视高级命令

内存

top

free

vmstat

mpstat

iostat

sar

CPU

top

vmstat

mpstat

iostat

sar

I/O

vmstat

mpstat

iostat

sar

进程

ipcs

ipcrm

lsof

strace

lstrace

负载

uptime

关机/重启/注销命令

关机重启

shutdown

init

halt

poweroff

reboot

注销退出

logout

exit

ctrl+d

进程管理

bd

后台运行

fg

挂起程序

jobs

显示后台程序

kill,killall,pkill

杀掉进程

crontab

设置定时

ps

查看进程

pstree

显示进程状态树

top

显示进程

nice

改变优先权

nohup

用户退出系统之后继续工作

pgrep

查找匹配条件的进程

strace

跟踪有关进程的系统调用

ltrace

跟踪进程调用库函数的情况

vmstat

报告虚拟内存统计信息

runlevel

init

service