一、系统监控

1.用top命令实时监测CPU、内存、硬盘状态

效果类似Windows的任务管理器,默认每5秒刷新一下屏幕上的显示结果。

[root@localhost /]# top

top - 17:39:47 up 45 min,  2 users,  load average: 0.07, 0.05, 0.05
Tasks: 175 total, 3 running, 172 sleeping, 0 stopped, 0 zombie
%Cpu(s): 14.0 us, 2.7 sy, 0.0 ni, 82.9 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 1875716 total, 883260 free, 511916 used, 480540 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1160536 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2930 root 20 0 1491516 179012 49708 S 9.6 9.5 0:38.08 gnome-shell
1308 root 20 0 221852 29924 10696 R 5.0 1.6 0:12.65 Xorg
3442 root 20 0 573828 24200 15116 R 2.0 1.3 0:06.38 gnome-termi+
670 root 20 0 4368 592 496 S 0.3 0.0 0:00.94 rngd
710 root 20 0 302644 6180 4804 S 0.3 0.3 0:04.39 vmtoolsd
2888 root 20 0 201268 3408 2756 S 0.3 0.2 0:00.29 at-spi2-reg+
2900 root 20 0 1159540 23944 15760 S 0.3 1.3 0:00.95 gnome-setti+
3044 root 20 0 377916 18660 14776 S 0.3 1.0 0:04.27 vmtoolsd
4276 root 20 0 157708 2256 1556 R 0.3 0.1 0:00.26 top
1 root 20 0 128092 6692 3944 S 0.0 0.4 0:02.37 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.16 ksoftirqd/0
6 root 20 0 0 0 0 S 0.0 0.0 0:00.18 kworker/u12+
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.77 rcu_sched
10 root rt 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0

1)第一行是任务队列信息

分别是当前时间,系统运行时间,当前登录用户数,系统负载(三个数值分别是1min.5min.15min内的平均值)

2)第二、三行为进程和CPU的信息

分别是进程总数,正在运行的进程数,睡眠的进程数,停止的进程数,僵尸进程数,用户控件占CPU的百分比,内核空间占CPU的百分比,用户进程空间内改变优先级的进程占CPU的百分比,空闲CPU的百分比,等待输入输出的CPU时间的百分比,硬件中断占用CPU时间的百分比,软件中断占用CPU时间的百分比

僵尸进程:是指如果一个进程结束后,如果他的父进程没有等待或调用他,那么他就变成了僵尸进程,仍然占用CPU

3)第四、五行为内存信息

4)下面是进程信息

  pid:进程ID

  user:进程所有者的用户名

  pr:优先级

  ni:nice 值,负值表示高优先级,正值表示低优先级

  virt:进程使用的虚拟内存总量,单位KB,VIRT=SWAP+RES

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

  shr:共享内存大小,单位KB

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

  command:命令名/命令行

  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


  存在1分钟,5分钟,15分钟三种cpu负载的原因是为了以一个更准确的方式来描述CPU的使用状态,如果仅是1分钟的CPU负载很高,5分钟或者15分钟后就降下来,那么就不用担心,如果CPU的使用率一直很高,那就需要提高硬件配置了。

在两种情况下会导致一个进程在逻辑上不能运行

1) 进程挂起是自身原因,遇到I/O阻塞,便要让出CPU让其他进程去执行,这样保证CPU一直在工作

2) 与进程无关,是操作系统层面,可能会因为一个进程占用时间过多,或者优先级等原因,而调用其他的进程去使用CPU。

2.free命令:检测系统已用和未用的内存空间总和

[root@localhost /]# free
total used free shared buff/cache available
Mem: 1875716 505684 890048 10752 479984 1166956
Swap: 2097148 0 2097148

使用free -w可以把buffer/cache拆开显示

使用free -h会以人类可读的方式显示

[root@localhost /]# free -h
total used free shared buff/cache available
Mem: 1.8G 517M 843M 10M 470M 1.1G
Swap: 2.0G 0B 2.0G

buffer和cache的解释:

A buffer is something that has yet to be "written" to disk. 

A cache is something that has been "read" from the disk and stored for later use.

也就是说buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。

像Windows这种成熟的系统,会多分配一些空间给cache以提高I/O的性能

available 表示cache能释放的内存+可作为suffer/cache的内存,直接就代表内存的剩余量

命令 while :; do free ; sleep 1 ; clear ;done可以实现动态监测

命令 echo 3 > /proc/sys/vm/drop_caches可以释放cache

3.进程的监测

用ps aux命令查看进程

用ps aux |head -n查看前n行

[root@localhost /]# ps aux |head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128092 6692 ? Ss 16:54 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 2 0.0 0.0 0 0 ? S 16:54 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 16:54 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 16:54 0:00 [migration/0]

用ps aux | grep'top'可以过滤包含‘top’字符的内容

[root@localhost /]# ps aux |grep 'top'
root 3035 0.0 1.5 1020224 29872 ? Sl 16:55 0:01 nautilus --no-default-window --force-desktop
root 7548 0.0 0.0 112664 968 pts/1 R+ 18:54 0:00 grep --color=auto top

杀死一个进程用kill -9 PID命令

我们演示打开一个Firefox程序,然后用命令杀掉它,

[root@localhost /]# ps aux | grep 'firefox'
root 8384 7.6 10.1 2098636 190952 pts/1 Sl+ 18:59 0:05 /usr/lib64/firefox/firefox
root 8762 0.0 0.0 112664 972 pts/2 R+ 19:00 0:00 grep --color=auto firefox
[root@localhost /]# kill -9 8384

我们还可以以树状图的方式查看进程,用命令 pstree PID

t@localhost /]# pstree 2
kthreadd─┬─ata_sff
├─3*[bioset]
├─crypto
├─deferwq
├─fsnotify_mark
├─2*[hci0]
├─ipv6_addrconf
├─kauditd
├─kblockd
├─kdevtmpfs
├─2*[kdmflush]
├─khugepaged
├─khungtaskd
├─kintegrityd
├─kmpath_rdacd
├─kpsmoused
├─krfcommd
├─ksmd
├─ksoftirqd/0
├─kswapd0
├─kthrotld
├─kworker/0:0
├─kworker/0:0H
├─kworker/0:1
├─kworker/0:1H
├─kworker/0:2
├─kworker/u128:1
├─kworker/u128:2
├─kworker/u129:0
├─kworker/u129:1
├─md
├─migration/0
├─mpt/0
├─mpt_poll_0
├─netns
├─nfit
├─rcu_bh
├─rcu_sched
├─rpciod
├─scsi_eh_0
├─scsi_eh_1
├─scsi_eh_2
├─scsi_tmf_0
├─scsi_tmf_1
├─scsi_tmf_2
├─ttm_swap
├─watchdog/0
├─writeback
├─xfs-buf/dm-0
├─xfs-buf/sda1
├─xfs-buf/sdb1
├─xfs-cil/dm-0
├─xfs-cil/sda1
├─xfs-cil/sdb1
├─xfs-conv/dm-0
├─xfs-conv/sda1
├─xfs-conv/sdb1
├─xfs-data/dm-0
├─xfs-data/sda1
├─xfs-data/sdb1
├─xfs-eofblocks/d
├─2*[xfs-eofblocks/s]
├─xfs-log/dm-0
├─xfs-log/sda1
├─xfs-log/sdb1
├─xfs-reclaim/dm-
├─xfs-reclaim/sda
├─xfs-reclaim/sdb
├─xfs_mru_cache
├─xfsaild/dm-0
├─xfsaild/sda1
├─xfsaild/sdb1
└─xfsalloc

注意,centos7默认没有pstree,需要yum -y install psmisc命令来安装

二、硬盘格式化

当我们在虚拟机中新加入一块硬盘后,我们需要分区,然后格式化写入文件系统之后才能被我们使用

我们演示一下加入一块硬盘后的操作,在配置信息中加入一块15G的硬盘,重启系统

在Linux系统中,一切皆文件,硬盘对应的文件在/dev目录下,默认第一块硬盘为sda,第二块为sdb,.....

用fdisk -l /dev/sdb 查看第二块硬盘的信息

然后开始分区,用命令 fdisk /dev/sdb

  n:新建分区

  p:查看分区

  w:保存

代码如下

[root@localhost ~]# fdisk -l /dev/sdb

磁盘 /dev/sdb:16.1 GB, 16106127360 字节,31457280 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节 [root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。 Device does not contain a recognized partition table
使用磁盘标识符 0xc23c658d 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-31457279,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-31457279,默认为 31457279):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB 命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
分区号 (2-4,默认 2):
起始 扇区 (10487808-31457279,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-31457279,默认为 31457279):
将使用默认值 31457279
分区 2 已设置为 Extended 类型,大小设为 10 GiB 命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (10489856-31457279,默认为 10489856):
将使用默认值 10489856
Last 扇区, +扇区 or +size{K,M,G} (10489856-31457279,默认为 31457279):+5G
分区 5 已设置为 Linux 类型,大小设为 5 GiB 命令(输入 m 获取帮助):p 磁盘 /dev/sdb:16.1 GB, 16106127360 字节,31457280 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xc23c658d 设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 31457279 10484736 5 Extended
/dev/sdb5 10489856 20975615 5242880 83 Linux 命令(输入 m 获取帮助):w
The partition table has been altered! Calling ioctl() to re-read partition table.
正在同步磁盘。

然后我们格式化,把文件系统写入第一个分区即sdb1,命令为 mkfs.xfs /dev/sdb1/

代码如下

[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=1310720, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

挂载:

在根目录下新建一个part1文件夹,把/dev/sdb1 挂载到 /part1下,用命令mount  /dev/sdb1 /part1

[root@localhost /]# mkdir /part1
[root@localhost /]# mount /dev/sdb1 /part1
[root@localhost /]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/cl-root 17811456 4613280 13198176 26% /
devtmpfs 921036 0 921036 0% /dev
tmpfs 937856 144 937712 1% /dev/shm
tmpfs 937856 9156 928700 1% /run
tmpfs 937856 0 937856 0% /sys/fs/cgroup
/dev/sda1 1038336 178584 859752 18% /boot
tmpfs 187572 8 187564 1% /run/user/0
/dev/sr0 4236604 4236604 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 5232640 32944 5199696 1% /part1

用df命令查看硬盘使用情况,可以发现, /dev/sdb1 已经被挂载到 /part1中了

在centos 7 中采用xfs文件系统,与etc4相比处理大文件的性能有很大提升

需要理解的是,文件和文件夹都是文件系统提供的逻辑单位,真正可以保存数据的只有硬盘。

卸载:

umount /文件名

swap分区

  Swap分区,即交换区,系统在物理内存不够时,与Swap进行交换。 其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通常情况下,Swap空间应大于或等于物理内存的大小,通常Swap空间的大小应是物理内存的2-2.5倍。

swapon -s  查看当前激活的swap分区

[root@bogon ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/dm-1 partition 2097148 0 -1

free -h 以可读性较高的方式查看系统中已用和未用的空间总和

[root@bogon ~]# free -h
total used free shared buff/cache available
Mem: 976M 462M 72M 8.3M 442M 326M
Swap: 2.0G 0B 2.0G

swapoff /dev/dm-1 把swap分区卸载

swapon /dev/dm-1 再激活swap分区

mkswap /dev/sdb   制作swap分区

Linux基础(四)的更多相关文章

  1. Linux基础四:软件包管理

    四.软件包管理器: 1.概念 红帽有两款软件包管理器,分别是rpm和yum. 1.rpm软件包管理器  ->  用来安装单个包  ->  .rpm文件 红帽的安装包文件,都放在Packag ...

  2. Linux基础四

    vim编辑器 vi编辑器的增强版,语法高亮等扩展功能 vim三种工作模式  a,i,o等键输出模式 命令模式,输入模式,末行模式 模式间的切换 a:当前行插入 i:当前行插入 o:全新一行插入 :键末 ...

  3. Linux基础(四)网络设置

    环境: linux系统版本为:CentOS 7 虚拟机:vm12 共享本地计算机网络,达到我们linux系统上网的目的 虚拟机,添加网卡-设置 设置成,自定义vmnet8 NAT模式即可,不需要添加什 ...

  4. Linux基础四(服务管理)

    目录 一.简介与分类 1.系统的默认运行级别 2.服务的分类 3.服务与端口 二.服务管理 1.RPM包服务管理 2.源码包服务管理 三.服务管理总结 一.简介与分类 1. 系统的运行级别 1.1 默 ...

  5. linux基础四----samba&&nginx

    一 samba 1环境配置: a.确保linux下防火墙关闭比或开放共享目录权限 iPtables -F b.确保setlinux关闭:setenforce 0 c.配置iP 2安装软件包:yum i ...

  6. Linux基础四---系统监控&硬盘分区

    ---恢复内容开始--- 一系统分区 1.top [参数] -b 批处理 -c 显示命令完全模式 -I 忽略失效过程 -s 保密模式 -S 累积模式 -i<时间> 设置间隔时间 -u< ...

  7. 大数据每日干货第四天(linux基础之一目录结构与常用命令)

           为了和qq空间同步,也写的第四天,前面几天明天会发布,本来打算把每天学的东西记录下来,通过朋友给的建议要发的话稍微系统化下,从大数据需要的linux基础,到离线数据分析包括hadoop. ...

  8. 第四节,Linux基础命令

    第四节,Linux基础命令 命令是系统操作员对系统传入的指令,传入指令后回车,系统接收到指令做出相应的行为 1.查看用户位于系统什么位置 [pmd]检查操作用户位于系统的什么位置 命令         ...

  9. Linux基础练习题之(四)

    Linux基础练习题 请详细总结vim编辑器的使用并完成以下练习题 1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的 ...

  10. Linux基础入门

    第一节,linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 (一).Linux 为何物 ...

随机推荐

  1. iOS地理围栏技术的应用

    遇到一个需求,要求监测若干区域,设备进入这些区域则要上传数据,且可以后台监测,甚至app被杀死也要监测.发现oc的地理围栏技术完美匹配这个需求,任务做完了,把遇到的坑记录下来,也许能帮到你呢. 要做这 ...

  2. JavaScript 循环性能比较

    有一句话叫做 没有什么事是一个循环解决不了的,如果真有,那就再来一个循环. 循环的种类有很多 正向for循环,逆向for循环,while循环,for-in循环(理论上性能最差),for-each循环, ...

  3. java基础(二章)

    java基础(二章) 一,变量 1.变量是内存中的一个标识符号,用于存储数据 2.变量命名规则 l  必须以字母.下划线 _ .美元符号 $ 开头 l  变量中,可以包括数字 l  变量中,不能出现特 ...

  4. VirtualBox的快照功能

    VirtualBox是非常好用的一个虚拟机软件,无论是性能还是易用性不比商用的Vmware差.VirtualBox最初是Sun公司的产品,由于Sun被Oracle收购,现在也归Oracle了.除了虚拟 ...

  5. SQL Server2012数据库的备份和还原

    一.数据库的备份: 1.选择要备份的数据库“accountInfo”,点击鼠标右键 → 任务 → 备份 2.在打开的“备份数据库 —accountInfo”对话框中,先点击删除,然后点击“添加” 3. ...

  6. 匿名属性 anonymous property

    利用匿名属性可以用很简洁的语法来自动声明不可变(immutable)的元组(tuple)类型. 属性:在字段用来表示类型和对象的状态的前提下,希望状态不被随意的更改,字段一般应该设置为private, ...

  7. 第二章完结,包含exam练习

    正则方程(Normal Equation) 梯度下降是最小化代价函数\(J(\theta)\)的一种方式,这里提出了另一种方式即正则方式不使用迭代方式:\(\theta = (X^TX)^{-1}X^ ...

  8. Paxos Made Simple(译)

    The Paxos algorithm, when presented in plain English, is very simple. 我叫Leslie Lamport,我最屌. 1. 简介 用于 ...

  9. SQL 调用存储过程

    --1调用存储过程 exec 存储过程名 参数 --2当表使用 select a.*,b.* from tb b inner join ( select * from openrowset('sqlo ...

  10. 由SpringMVC中RequetContextListener说起

    零.引言 RequetContextListener从名字结尾Listener来看就知道属于监听器. 所谓监听器就是监听某种动作,在其开始(初始化)和结束(销毁)的时候进行某些操作. 由此可以猜测:该 ...