day18学习笔记

linux资源管理篇

nohup命令

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup的特点是:

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下
如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out 文件中。

语法nohup command 选项 &

Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

&:让命令在后台执行,终端退出后命令仍旧执行。

 

理解数据流

执行linux命令时,linux默认为用户进程提供了3种数据流

  • stdin

    • 标准输入、0

    • 一般是键盘输入数据

    • 比如cat命令等待用户输入

  • stdout

    • 标准输出、1

    • 程序执行结果,输出到终端

  • stderr

    • 标准错误输出,代号,2

    • 程序执行结果,输出到终端

 

详解重定向符号和数据流代号

 

 

练习数据流

复制代码
[root@ztdyyds ~08:59:52]#
[root@ztdyyds ~08:59:52]#ls /opt/ > /tmp/opt.log
[root@ztdyyds ~10:44:07]#ls /opt/ > /tmp/opt.log
[root@ztdyyds ~10:44:08]#ls /opt/ > /tmp/opt.log
[root@ztdyyds ~10:44:10]#cat /tmp/opt.log
hah
opt
[root@ztdyyds ~10:44:31]#ls /opt/ >> /tmp/opt.log
[root@ztdyyds ~10:44:49]#ls /opt/ >> /tmp/opt.log
[root@ztdyyds ~10:44:49]#ls /opt/ >> /tmp/opt.log
[root@ztdyyds ~10:44:51]#cat /tmp/opt.log
hah
opt
hah
opt
hah
opt
hah
opt



[root@ztdyyds ~10:46:56]#llllll 2> /tmp/opt.log
[root@ztdyyds ~10:47:32]#cat /tmp/opt.log
-bash: llllll: command not found
[root@ztdyyds ~10:47:38]#llllll 2>> /tmp/opt.log
[root@ztdyyds ~10:47:47]#llllll 2>> /tmp/opt.log
[root@ztdyyds ~10:47:48]#llllll 2>> /tmp/opt.log
[root@ztdyyds ~10:47:49]#llllll 2>> /tmp/opt.log
[root@ztdyyds ~10:47:50]#cat /tmp/opt.log
-bash: llllll: command not found
-bash: llllll: command not found
-bash: llllll: command not found
-bash: llllll: command not found
-bash: llllll: command not found


[root@ztdyyds ~10:48:18]#ls /opt/ > /tmp/opt.log 2>&1
[root@ztdyyds ~10:49:11]#ls /opt/ > /tmp/opt.log 2>&1
[root@ztdyyds ~10:49:18]#llllll 2>> /tmp/opt.log 2>&1
-bash: llllll: command not found
[root@ztdyyds ~10:49:38]#llllll > /tmp/opt.log 2>&1
[root@ztdyyds ~10:49:46]#llllll > /tmp/opt.log 2>&1
[root@ztdyyds ~10:49:47]#llllll > /tmp/opt.log 2>&1
[root@ztdyyds ~10:49:48]#cat /tmp/opt.log
-bash: llllll: command not found
[root@ztdyyds ~10:49:54]#
[root@ztdyyds ~10:49:54]#systemctl start nginx
复制代码

 

linux资源管理

系统平均负载查看uptime

系统负载指的是在单位时间内,系统分配给CPU处理的进程数量,必然是数量越多,负载值越高,机器的压力越大。

[root@ztdyyds ~11:02:15]#
[root@ztdyyds ~11:02:15]#
[root@ztdyyds ~11:02:15]#uptime
 16:47:42 up  7:48,  2 users,  load average: 0.00, 0.01, 0.05
[root@ztdyyds ~16:47:42]#

这个load average表示平均负载

复制代码
[root@ztdyyds ~16:47:42]##1.最理想化的状态是每个CPU都在运行着进程,充分让cpu工作起来,效率最大化
[root@ztdyyds ~16:49:30]#lscpu |grep -i ^C
[root@ztdyyds ~16:50:04]#lscpu |grep -i  '^cpu(s)'
CPU(s):                1
[root@ztdyyds ~16:51:19]##发现是1核的
[root@ztdyyds ~16:52:02]##或者使用top命令,按下数字1查看是几核的
[root@ztdyyds ~16:52:53]##2. 如何理解uptime看到的负载
[root@ztdyyds ~16:52:59]#分别是1、5、15分钟内的平均负载情况,表示是1~15分钟内CPU的负载变化情况。
内的值,远大于15分钟的值,表示机器在1分钟内压力在直线上升
3. 如果1分钟内的值,小于15分钟的值,表示系统的负载正在下降中-bash: 分别是1、5、15分钟内的平均负载情况,表示是1~15分钟内CPU的负载变化情况。: command not found
[root@ztdyyds ~16:52:59]#
[root@ztdyyds ~16:52:59]#1. 三个值如果差不多,表示系统很稳定的运行中,15分钟以内,CPU都没有很忙
-bash: 1.: command not found
[root@ztdyyds ~16:52:59]#2. 如果1分钟内的值,远大于15分钟的值,表示机器在1分钟内压力在直线上升
-bash: 2.: command not found
[root@ztdyyds ~16:52:59]#3. 如果1分钟内的值,小于15分钟的值,表示系统的负载正在下降中
复制代码

 

 查看当前机器是几核的cpu

[root@ztdyyds ~16:55:08]#lscpu |grep -i '^cpu(s)'
CPU(s):                1
[root@ztdyyds ~16:55:12]#

通过cpu的文件,确定是几颗CPU

[root@ztdyyds ~16:56:56]#cat /proc/cpuinfo |grep 'core id' | sort |uniq|wc -l
1
[root@ztdyyds ~16:57:10]#

 

CPU压力测试

cpu的压力,来自于高频的计算任务,比如数值计算等,我们可以用bash程序,python程序,以及各种编程语言,来实现复杂的高频率计算。

这里我们用几个工具

stress         stress是一个linux的压力测试工具,专门用于对设备的CPU、IO、内存、负载、磁盘等进行压测。
mpstat      多核CPU性能分析
pidstat        实时查看cpu、内存、io等指标



sysstat工具包

sysstat是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如:CPU 使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行,是提高系统运行效率、安全运行服务器的得力助手。

复制代码
包含的工具
iostat

输出CPU的统计信息和所有I/O设备的输入输出(I/O)统计信息

mpstat

mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。mpstat最大的特点是:可以查看多核心cpu中每个计算核心的统计数据;而类似工具vmstat只能查看系统整体cpu情况。


pidstat

关于运行中的进程/任务、CPU、内存等的统计信息

sar

保存并输出不同系统资源(CPU、内存、IO、网络、内核等)的详细信息

sadc

系统活动数据收集器,用于收集sar工具的后端数据

sa1

系统收集并存储sadc数据文件的二进制数据,与sadc工具配合使用

sa2

配合sar工具使用,产生每日的摘要报告

sadf

用于以不同的数据格式(CVS或者XML)来格式化sar工具的输出

sysstat

sysstat 工具包的 man 帮助页面。

nfsiostat

NFS(Network File System)的I/O统计信息

cifsiostat

CIFS(Common Internet File System)的统计信息
复制代码
1.安装该工具包
[root@yuchao-linux01 ~]# yum install sysstat -y


2.对cpu压测,stress命令
stress --cpu 1 --timeout 600

 

 

 

 用watch命令,高亮检测哪些数值在变化
[root@yuchao-linux01 ~]# watch -d  uptime


5.可以用mpstat命令查看cpu状态细节
-P {|ALL} 表示监控哪个CPUcpu在[0,cpu个数-1]中取值

#查看多核CPU核心的当前运行状况信息, 每5秒更新一次
[root@yuchao-linux01 ~]# mpstat -P ALL 5

可以清晰的看到,哪一个cpu核,压力最大,通过%usr看到用户进程,消耗了100%的cpu6.也可以用top命令检测cpu压力,发现是有2个stress进程,占据了100%的cpu

 

free查看内存使用情况

命令:free

作用:查看内存使用情况

语法:#free -m

选项:

-m 表示以mb为单位查看(1g = 1024mb,1mb = 1024kb)

-h 以可读形式显示容量,需要free -V显示版本大于3.3

复制代码
[root@ztdyyds ~19:40:16]#
[root@ztdyyds ~19:40:16]#free
              total        used        free      shared  buff/cache   available
Mem:         997956      116356      558920       14056      322680      677544
Swap:       2097148           0     2097148
[root@ztdyyds ~19:48:15]#free -m
              total        used        free      shared  buff/cache   available
Mem:            974         113         545          13         315         661
Swap:          2047           0        2047
[root@ztdyyds ~19:48:20]#free -h
              total        used        free      shared  buff/cache   available
Mem:           974M        113M        545M         13M        315M        661M
Swap:          2.0G          0B        2.0G
[root@ztdyyds ~19:48:25]#free -mh
              total        used        free      shared  buff/cache   available
Mem:           974M        113M        545M         13M        315M        661M
Swap:          2.0G          0B        2.0G
[root@ztdyyds ~19:48:35]#
复制代码

free 命令主要是用来查看内存和 swap 分区的使用情况的,其中:

  • total:是指物理内存总大小,信息来自于/proc/meminfo
  • used:是指已经使用的内存,userd=total-free-buffers-cache
  • free:是指空闲的;free = total - used - buff - cache
  • shared:是指共享的内存;用于tmpfs系统
  • buff/cache
    • buffers:缓冲区,写入缓冲,用于内存和磁盘之间的数据写入缓冲,存放内存需要写入到磁盘的数据。
    • cached:缓存区,读取缓存,加快CPU和内存数据交换,存放内存已经读取完毕的数据。

关于第二行的swap,现状是完全关掉这个功能的。

第2行数据是Swap交换分区,也就是我们通常所说的虚拟内存(硬件交换分区)。

防止内存用完导致系统崩溃,临时拿硬盘的一些空间当做内存使。

buff和cache

  • buffer,==缓冲区==,buffers是给==写入数据==加速的
  • Cache,==缓存==,Cached是给==读取数据==时加速的

 

 

 

 

 

==cache是指,把读取磁盘而来,的数据保存在内存中,再次读取,下一次不用读取硬盘,而直接从内存中读取,加速数据读取过程。==

复制代码
硬件读写速度排名
磁盘 >  内存 > CPU

为了提高CPU、内存之间的数据交换效率,linux设计了cache这种技术。CPU本身也就支持缓存,但是CPU内部的缓存太贵,容量都太小,因此引入内存空间来存放CPU读取过的数据,下次CPU再读取数据,直接去cache中读,不用再去内存里寻找了。

内存的读取、写入速度是远超硬盘的,为了提高数据写入硬盘的效率,linux设计了buffer技术。
buffer缓冲区的作用是将内存写完的数据缓存起来,通过系统调度策略在合适的时候,定期刷新到磁盘中。
以此减少磁盘的寻址次数,提高写入数据的能力。
 
复制代码

 

总结cache、buffer

  • 这俩都是计算机的重要属性,不仅在内存,磁盘里有使用,后面的网站架构篇,也多处使用到缓存的概念。
  • cache解决的时间问题,提高数据读取速度
    • cache利用的是内存极快的速度特性,读写速度是磁盘的很多倍。
  • buffer解决的是空间问题,给数据写入提供一个暂存空间
    • 磁盘对碎片化的数据处理,是很低效的,我们后面学习磁盘管理,即可更深入理解
    • buffer利用的是内存的存储特性。

 

 

 

 

 磁盘io监控(iotop)

iotop命令 是一个用来监视磁盘I/O使用状况的top类工具。

iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。

复制代码
第一行、磁盘读写的速率总计
第二行,磁盘读写的实际速率
第三行,具体的进程/线程,速率详细信息。
Total DISK READ :  143780.40 K/s | Total DISK WRITE :       0.00 K/s
Actual DISK READ:  143780.40 K/s | Actual DISK WRITE:  181263.57 K/s
   TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
   820 be/4 root      379.82 K/s    0.00 K/s  0.00 %  0.02 % irqbalance --foreground
   818 be/4 root       79.13 K/s    0.00 K/s  0.01 %  0.01 % vmtoolsd
  4611 be/4 jerry01  143321.46 K/s    0.00 K/s 22.81 %  0.00 % -bash



TID                     # 线程id,按下p,切换进程PID
PRIO                  # 优先级
USER                    # 运行的用户
DISK READ            # 读取速率
DISK WRITE        # 写入速率
SWAPIN                # swap交换分区的百分比
IO                        # IO等待百分比
COMMAND                # 进程名
复制代码

 

命令:netstat

作用:查看网络连接状态

语法:netstat -tnlp

选项:

-t:表示只列出tcp 协议的连接;

-n:表示将地址从字母组合转化成ip 地址,将协议转化成端口号来显示;

-l :表示过滤出"state(状态)"列中其值为LISTEN(监听)的连接;

-p:表示显示发起连接的进程pid 和进程名称;

 

 ss命令

ss  是类似netstat的工具。能显示查看网络状态信息,包括TCP、UDP连接,端口

并且性能远比netstat强悍,适合用于高并发服务器查看

-a  显示所有网络连接
-l  显示LISTEN状态的连接(连接打开)
-m  显示内存信息(用于tcp_diag)
-n, --numeric       不显示域名,直接显示ip地址
-o  显示Tcp 定时器x
-p  显示进程信息
-s  连接统计

-d  只显示 DCCP信息 (等同于 -A dccp)
-u  只显示udp信息 (等同于 -A udp)
-w 只显示 RAW信息 (等同于 -A raw)
-t 只显示tcp信息 (等同于 -A tcp)
-x 只显示Unix通讯信息 (等同于 -A unix)

-4 只显示 IPV4信息
-6 只显示 IPV6信息
--help 显示帮助信息
--version 显示版本信息


网络流量监控命令iftop

作用和top和iotop一样,动态显示机器上,网卡的流量动态






 

posted @   虎躯常震  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示