day18学习笔记
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
系统平均负载查看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} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
#查看多核CPU核心的当前运行状况信息, 每5秒更新一次
[root@yuchao-linux01 ~]# mpstat -P ALL 5
可以清晰的看到,哪一个cpu核,压力最大,通过%usr看到用户进程,消耗了100%的cpu。
6.也可以用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一样,动态显示机器上,网卡的流量动态
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!