- top命令的功能:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
使用top命令列出系统状态时,系统默认每3秒刷新一下屏幕上的显示结果。
(1) 第一行是任务队列信息
16:26:59 | 当前时间 |
---|---|
up 1:27 | 系统运行时间,格式为时:分 |
2 users | 当前登录用户数 |
load average:0.03, 0.04, 0.05 | 系统负载, 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 |
(2) 第二、三行为进程和CPU的信息
Tasks: 166 total | 进程总数 |
---|---|
3 running | 正在运行的进程数 |
163 sleeping | 睡眠的进程数 |
0 stopped | 停止的进程数 |
0 zombie | 僵尸进程数 |
Cpu(s): 1.3 us | 用户空间占用CPU百分比 |
0.3 sy | 内核空间占用CPU百分比 |
0.0 ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
98.0 id | 空闲CPU百分比 |
0.0 wa | 等待输入输出的CPU时间百分比 |
0.0 hi | 硬件中断占用CPU时间的百分比 |
0.0 si | 软件中断占用CPU时间的百分比 |
(3) 第四五行为内存信息
(4) 进程信息
列名 | 含义 |
---|---|
PID | 进程id |
PPID | 父进程id |
RUSER | Real user name |
UID | 进程所有者的用户id |
USER | 进程所有者的用户名 |
GROUP | 进程所有者的组名 |
TTY | 启动进程的终端名,不是从终端启动的进程则显示为 ? |
PR | 优先级 |
NI | nice值,负值表示高优先级,正值表示低优先级 |
P | 最后使用的CPU,仅在多CPU环境下有意义 |
%CPU | 上次更新到现在的CPU时间占用百分 |
TIME | 进程使用的CPU时间总计,单位秒 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
%MEM | 进程使用的物理内存百分比 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
SWAP | 进程使用的虚拟内存中,被换出的大小,单位kb。 |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
CODE | 可执行代码占用的物理内存大小,单位kb |
DATA | 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb |
SHR | 共享内存大小,单位kb |
nFLT | 页面错误次数 |
nDRT | 最后一次写入到现在,被修改过的页面数。 |
S | 进程状态。D=不可中断的睡眠状态;R=运行;S=睡眠;T=跟踪/停止;Z=僵尸进程 |
COMMAND | 命令名/命令行 |
WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
Flags | 任务标志,参考 sched.h |
(5) cpu利用率与load average
cpu是用来干活的,按照这个层面去理解,将cpu比作码农。
cpu利用率:上一天班的时间是8个小时,而码农敲代码的时间为2个小时,2/8=0.25 ,25%就是码农在一天的时间内的利用率(正常情况,cpu利用率<70%)
cpu负载:公司在一分钟内为某个码农安排了3个任务,而1分钟内该码农能做6个任务,那么该码农一分钟内的负载为0.5
如果公司在5分钟内为某个码农安排了100个任务,而5分钟内该码农只能做50个任务,那么该码农5分钟内的负载为2.0,即超负荷运转。
cpu负载<=1:能正常应付
cpu负载>1:超负荷运转
如果有4核,相当于将100个任务交给4个码农去干,如果每个码农的负载都是100%,那么整体的cpu负载达到4.0则是很正常的现象
多核cpu, load average 正常情况 <= cpu核数 * 0.7
在两种情况下会导致一个进程在逻辑上不能运行:
进程挂起是自身原因,遇到I/O阻塞,便要让出CPU让其他进程去执行,这样保证CPU一直在工作
与进程无关,是操作系统层面,可能会因为一个进程占用时间过多,或者优先级等原因,而调用其他的进程去使用CPU。
因而一个进程有三种状态
(6)后台运行:&
top &
(7)
cat /etc/redhat-release 查看版本
uname -r uname -a 查看内核
2. free命令的功能:显示内存的使用状态。(以CentOS7.3为例)
total = used + free + buff/cache
内存的真实利用率 = (total-available)/ total
free命令的所有值都是从/proc/meminfo中读出的。
free -w buff和cache分开显示
(1) buffer和cache:
buffer 的作用:buffer用于存放要输出到disk(块设备)的数据,可以缓解从内存写到磁盘的速度差。
cache 的作用:cache用于存放从disk上读出的数据,可以缓解从硬盘读到内存的速度差。
(2)释放掉被系统占用的内存:
Echo 3>/proc/sys/vm/drop_caches
3. 系统中进程的监控——ps
(1)进程的定义:进程是程序的一次动态执行。
(2) 守护进程的定义:守护进程是在后台运行并提供系统服务的一些进程。
(3) 父进程、子进程的定义:当一个进程创建另一个进程时,第1个进程被称为新进程的父进程,而新进程被称为子进程。
(4) ps命令的功能:用来显示当前进程的状态。
ps -aux 显示所有的与用户相关的完整信息
ps -aux | grep‘top’查找包含‘top’的进程
ps -elf 父进程ID也可看见
4. 系统中进程的监控——pstree、kill
centos7 mini版默认没有pstree,需要yum -y install psmisc 安装
(1)pstree命令的功能:以树状图显示程序。
(2) pstree命令的用法举例:
例如:列出PID为4729的进程的进程状态树的命令:pstree 4729
(3) kill命令的功能:把一个信号发送给一个或多个进程。默认发送终止信号。
(4) 应用kill命令终止进程
例如:终止PID为3852的进程的命令:kill 3852
(5) 应用kill -9命令强制杀死进程
例如:强制杀死PID为3906的进程的命令:kill -9 3906
或用pkill -9 process-name 用进程名杀死进程
二.硬盘分区、格式化及文件系统的管理
1.硬件设备与文件名的对应关系
(1) 在Linux系统中,每个设备都被当初一个文件来对待。
(2) 各种设备在Linux中的文件名
设备 | 设备在Linux中的文件名 |
---|---|
IDE硬盘 | /dev/hd[a-d] |
SCSI硬盘 | /dev/sd[a-d] |
U盘 | /dev/sd[a-d](与SCSI硬盘一样) |
CDROM | /dev/sr0 |
2.硬盘的结构及硬盘分区
(1) 为什么要进行硬盘分区:
更容易管理和控制系统,因为相关的文件和目录都放在一个分区中;
系统效率更高;
可以限制用户使用硬盘的份额(磁盘空间的大小);
更容易备份和恢复。
(2)硬盘的逻辑结构:
一个硬盘逻辑上可以被划分成块、磁道、磁柱和分区。
3.Linux系统中硬盘的分区
(1) 硬盘分区的分类:硬盘的分区可以分为主分区、扩展分区和逻辑分区。
(2) 主分区的数量:在一个硬盘上最多可以划分出4个主分区。
(3) Linux操作系统的内核支持每个硬盘上的分区数量还是有一定限制的,Linux内核在每个硬盘上可以最多支持:
在SCSI硬盘上划分15个分区(Partitions)。
在IDE硬盘上划分63个分区(Partitions)。
4. 使用fdisk和partprobe命令来管理硬盘分区
(1) fdisk命令的功能:创建磁盘分区。
(2) fdisk命令列表中常用的命令:
d:删除一个(已经存在的)分区,其中d是delete的第1个字母。
l:列出(已经存在的)分区的类型,其中l是list的第1个字母。
m:列出fdisk中使用的所有命令,其中m是menu的第1个字母。
n:添加一个新的分区,其中n是new的第1个字母。
p:列出分区表的内容,其中p是print的第1个字母。
q:退出fdisk,但是不存储所做的变化,其中q是quit的第1个字母。
t:改变分区系统的id,其中t是title的第1个字母。
w:退出fdisk并存储所做的变化,其中w是write的第1个字母。
(3) partprobe命令的功能:重新初始化内存中内核的分区表。
5. 创建文件系统(数据的管理)
(1) 格式化的定义:所谓的格式化就是将分区中的硬盘空间划分成大小相等的一些数据块(Blocks),以及设定这个分区中有多少个i节点可以使用等。
(2) 文件系统的定义:文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。
(3) 常用的文件系统类型
ext2:Linux系统中标准的文件系统
ext3:一种日志式文件系统
ext4:一种针对ext3系统的扩展日志式文件系统
lvm:逻辑盘卷管理
iso9660:目前唯一通用的光盘文件系统
xfs:高级日志文件系统
btrfs:性能更高,消耗内存也较多
(4) mkfs命令的功能:格式化磁盘。
mkfs.xfs /dev/sdb1 将/dev/sdb1格式化为xfs文件系统
6.文件系统的挂载与卸载
(1) 挂载的定义:挂载指将一个设备(通常是存储设备)挂接到一个已存在的目录上。
(2) mount命令的功能:实现文件系统的挂载。
(3) 应用mount命令实现文件系统的挂载:
例如:将/dev/sdb1分区挂载到/wg目录上的命令:
mount /dev/sdb1 /wg
(4) umount命令的功能:实现文件系统的卸载。
(5) 应用umount命令实现文件系统的卸载:
例如:卸载/wg上的文件系统的命令:
umount /wg
卸载/dev/sdb1 的挂载:
umount /dev/sdb1
注意:若/dev/sdb1挂载在多个目录下,则 umount /dev/sdb1 卸载其中一个目录
(6)查看硬盘文件:
df : disk filesystem
df -h 人性化显示
df -i 显示文件数
df -T 显示文件类型
mount 显示详细信息