查看内存CPU使用情况 Top

image-20201201160508354

第一行

当前时间16:04:49

系统已运行时间 188天4小时32分

当前登陆用户数 1个user

负载情况 load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

第二行:

Tasks( 任务/进程)100个进程,其中处于运行中的有1个,99个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

第三行:cpu状态

us — 用户空间占用CPU的百分比。

sy — 内核空间占用CPU的百分比。

ni — 改变过优先级的进程占用CPU的百分比。

id — 空闲CPU百分比。

wa — IO等待占用CPU的百分比。

hi — 硬中断(Hardware IRQ)占用CPU的百分比。

si — 软中断(Software Interrupts)占用CPU的百分比 。

st — 被虚拟机偷走的cpu。

第四行:内存状态

total — 物理内存总量。

used — 使用中的内存总量。

free — 空闲内存总量。

buffers — 缓存的内存量 。

第五行:swap交换分区

total — 交换区总量。

used — 使用的交换区总量。

free — 空闲交换区总量。

cached — 缓冲的交换区总量。

内容

PID — 进程id。

USER — 进程所有者。

PR — 进程优先级。

NI — nice值。负值表示高优先级,正值表示低优先级。

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES。

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA。

SHR — 共享内存大小,单位kb。

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程。

%CPU — 上次更新到现在的CPU时间占用百分比。

%MEM — 进程使用的物理内存百分比。

TIME+ — 进程使用的CPU时间总计,单位1/100秒。

COMMAND — 进程名称(命令名/命令行)。

操作:

  • b: 打开/关闭高亮效果。
  • x:打开/关闭排序列高亮效果。
  • shift + ‘<’ 或 ‘>’ 向左向右改变排序列。
  • e修改进程列表单位显示,E修改前五行单位显示信息。

top -H -p [进程id] 查看某进程的线程信息

vmstat

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,相比top,通过vmstat可以看到整个机器的 CPU,内存,IO的使用情况, 而不是单单看到各个进程的CPU使用率和内存使用率。

注:功能类似指令:sar、mpstat、

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
 vmstat [采样的时间间隔数(单位是秒)] [采样的次数(不写一直执行下去)]
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 133908 298732 1127320 0 0 0 2 0 1 0 0 99 0 0
# 进程
r:在运行队列中进程数 。当这个值超过了CPU数目,就会出现CPU瓶颈 了。
b:在等待io的进程数 。
# 内存
swpd:现时可用的交换内存(单位KB)。
free:空闲的内存(单位KB)。
buff: 缓冲中的内存数(单位:KB)。
cache:被用来做为高速缓存的内存数(单位:KB)。
# swap交换页
si: 从磁盘交换到内存的交换页数量,单位:KB/秒。
so: 从内存交换到磁盘的交换页数量,单位:KB/秒。
# io设备
bi: 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,单位:块/秒。
bo: 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0,单位:块/秒。
# 系统
in: cpu每秒的中断数,包括时钟中断。
cs: 每秒的环境(上下文)转换次数。
#CPU 一般来说,id + us + sy = 100
us:用户进程使用的时间占比。
sy:系统进程使用的时间占比。
id:中央处理器的空闲时间占比。
wa:等待IO CPU时间。
st:被虚拟机偷走的cpu。

判断负载情况

1、假如 r 经常大于4 ,且 id 经常小于40,表示中央处理器的负荷很重。
2、假如 bi,bo 长期不等于0,表示物理内存容量太小。

参考链接

free -h

简介

查看内存使用使用情况

image-20201201170143345

查找

find [目录] [条件] [动作]

如 find . -name ‘name*’ 查找当前目录下以name开头的文件名

1
2
3
4
5
6
[root@iZwz9 ~]# find . -name "name*"
./node_modules/continuation-local-storage/test/namespaces.tap.js
./node_modules/argparse/lib/namespace.js
./node_modules/ast-types/gen/namedTypes.js
./node_modules/ast-types/gen/namedTypes.d.ts
./node_modules/@pm2/js-api/src/namespace.js

locate

通过搜寻系统内建文档数据库达到快速找到档案,数据库由 updatedb 程序来更新,centos7默认没安装,可执行``yum install mlocate` 安装。(注:第一次使用前需执行updatedb)

1
2
3
4
#参数
-l num(要显示的行数)
-f 将特定的档案系统排除在外,如将proc排除在外
-r 使用正则运算式做为寻找条件

查看与pwd相关的文件(显示4行)

image-20210416200859278

查找etc目录下sh开头的文件

image-20210416200733042

查找/etc目录下以dow结尾的文件

image-20210416195942900

whitch

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

1
2
[root@~]# which ps
/usr/bin/ps

whereis

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

1
2
3
4
5
6
[root@iZwz9 ~]# whereis npm
npm: /usr/local/nodejs/node-v12.16.3-linux-x64/bin/npm
[root@iZwz9 ~]# whereis java
java: /usr/java/jdk1.8.0_221/bin/java /usr/java/jdk1.8.0_221/jre/bin/java
[root@iZwz9 ~]# whereis nodejs
nodejs: /usr/local/nodejs

type

用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。

1
2
3
4
5
6
7
[root@iZwz9 ~]#  type cd
cd is a shell builtin
[root@iZwz9 ~]# type npm
npm is /usr/local/nodejs/node-v12.16.3-linux-x64/bin/npm
[root@iZwz9 ~]# type -p npm
/usr/local/nodejs/node-v12.16.3-linux-x64/bin/npm
[root@iZwz9 ~]#

防火墙(CentOS7)

查看所有开放的端口号

1
firewall-cmd --list-all

查看指定端口是否已开放

1
firewall-cmd --query-port=6379/tcp

设置开放的端口号

1
firewall-cmd --add-port=80/tcp --permanent

重新加载防火墙

1
firewall-cmd --reload

启动

1
systemctl start firewalld

查看状态

1
systemctl status firewalld 

停止

1
systemctl disable firewalld

禁用

1
systemctl stop firewalld

vim编辑常用指令

image-20211124151119692

命令模式

命令 作用
5dd 删除(剪切)从光标处开始的 5 行
5yy 复制从光标处开始的 5 行
n 显示搜索命令定位到的下一个字符串
N 显示搜索命令定位到的上一个字符串
u 撤销上一步的操作
p 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面

末行模式

命令 作用
:s/one/two 将当前光标所在行的第一个 one 替换成 two
:s/one/two/g 将当前光标所在行的所有 one 替换成 two
:%s/one/two/g 将全文中的所有 one 替换成 two
:?字符串 在文本中从下至上搜索该字符串
:/字符串 在文本中从上至下搜索该字符串
:整数 跳转到该行
:set nu/nonu 显示/不显示行号

查看磁盘占用空间

  • df -hl:查看磁盘剩余空间。
  • df -h:查看每个根路径的分区大小。
  • du -sh [目录名]:返回该目录的大小。
  • du -sm [文件夹]:返回该文件夹总数。
  • du -h [目录名]:查看指定文件夹下的所有文件大小(包含子文件夹)。

查看Linux信息

image-20210405205233246

uname -a:查看操作系统内核信息。

cat /proc/version :查看操作系统版本信息。

cat /etc/redhat-release:查看操作系统发行版信息。

getconf LONG_BIT:查看版本说明当前CPU运行在64bit模式下.

cat /proc/cpuinfo:查看cpu相关信息,包括型号、主频、内核信息等。

查看端口占用

  1. lsof -i : 端口号

注:sentos默认没有装(yum install lsof)

  1. netstat -tunlp | grep 端口号
  • -t (tcp) 仅显示tcp相关选项。
  • -u (udp)仅显示udp相关选项。
  • -n 拒绝显示别名,能显示数字的全部转化为数字。
  • -l 仅列出在Listen(监听)的服务状态。
  • -p 显示建立相关链接的程序名。

image-20210405210557631

查看CPU信息

查看CPU型号

1
cat /proc/cpuinfo | grep name | sort | uniq

查看物理CPU数

1
2
3
4
cat /proc/cpuinfo | grep "physical id"

#对于显示多个 physical id相等的情况,可用管道进行过滤
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

查看每个物理CPU的核数

1
cat /proc/cpuinfo| grep "cpu cores"| uniq

查看逻辑CPU数

1
cat /proc/cpuinfo| grep "processor"| wc -l

直接查看

1
lscpu

tar指令

压缩

1
tar -czvf file1.tar.gz file2 #压缩file2文件为file1

解压

1
tar -xzvf file #将file文件解压

各参数意思:

  • -z:通过gzip指令处理备份文件。
  • -v:显示指令执行过程。
  • -f:指定备份文件。
  • -c:建立新的备份文件。
  • -x:从备份文件中还原文件。

查看进程绝对路径

1
2
ps -ef |grep #获取进程pid
ls -l /proc/{pid}/exe #exe是程序的一个软连接

查看进程内存映射

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pmap [参数] [进程ID ]
常用参数:
-x 增加一个标题行,同时显示每个内存映像实际使用的物理内存大小,以及内存已修改但尚未写到磁盘的页面数量等附加进程信息
-d 增加一个标题行,同时显示内存映射文件的偏移值,以及存储设备的主次设备号等附加进程信息
-q 采用安静方式,禁止显示汇总信息行
-V 显示命令的版本信息,然后退出


Address Kbytes RSS Anon Locked Mode Mapping
08047000 596 - - - r-x-- bash
输出参数 解释
Address 进程所占的地址空间
Kbytes 该虚拟段的大小
RSS 设备号(主设备:次设备)
Anon 设备的节点号,0表示没有节点与内存相对应
Locked 是否允许swapped
Mode 权限:r=read, w=write, x=execute, s=shared, p=private(copy on write)
Mapping 对应的映像文件名

Yum

Yum 软件仓库可以根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安

装到系统。

命令 作用
yum repolist all 列出所有仓库
yum list all 列出仓库中所有软件包
yum info 软件包名称 查看软件包信息
yum install 软件包名称 安装软件包
yum einstall 软件包名称 重新安装软件包
yum update 软件包名称 升级软件包
yum remove 软件包 移除软件包
yum clean all 清除所有仓库缓存
yum check-update 检查可更新的软件包
yum grouplist 查看系统中已经安装的软件包组
yum groupinstall 软件包组 安装指定的软件包组
yum groupremove 软件包组 移除指定的软件包组
yum groupinfo 软件包组 查询指定的软件包组信息

END