324笔记
理解linux的数据流
| 执行linux命令时,linux默认为用户进程提供了3种数据流 |
| |
| - stdin |
| - 标准输入、0 |
| - 一般是键盘输入数据 |
| - 比如cat命令等待用户输入 |
| - stdout |
| - 标准输出、1 |
| - 程序执行结果,输出到终端 |
| - stderr |
| - 标准错误输出,代号,2 |
| - 程序执行结果,输出到终端 |
标准输入重定向
| cat < /etc/passwd |
| |
| 比如用在数据库的,数据导入 |
| mysql < /opt/back.sql |
| |

练习数据流
| [root@localhost ~~10:49:49] |
| -bash: llllllllllll: command not found |
| [root@localhost ~~10:49:58] |
| |
| |
| [root@localhost ~~10:50:00] |
| [root@localhost ~~10:50:21] |
| log |
| messages |
| [root@localhost ~~10:50:33] |
| [root@localhost ~~10:51:06] |
| [root@localhost ~~10:51:07] |
| [root@localhost ~~10:51:08] |
| log |
| messages |
| log |
| messages |
| log |
| messages |
| log |
| messages |
| [root@localhost ~~10:51:16] |
| 1 log |
| 2 messages |
| 3 log |
| 4 messages |
| 5 log |
| 6 messages |
| 7 log |
| 8 messages |
| [root@localhost ~~10:51:26] |
| |
| |
| [root@localhost ~~10:51:34] |
| ls: cannot access /jianqiang: No such file or directory |
| [root@localhost ~~10:51:49] |
| |
| |
| [root@localhost ~~10:51:54] |
| ls: cannot access /jianqiang: No such file or directory |
| [root@localhost ~~10:52:04] |
| ls: cannot access /jianqiang: No such file or directory |
| [root@localhost ~~10:52:04] |
| ls: cannot access /jianqiang: No such file or directory |
| [root@localhost ~~10:52:05] |
| |
| |
| [root@localhost ~~10:52:21] |
| [root@localhost ~~10:52:41] |
| [root@localhost ~~10:52:42] |
| [root@localhost ~~10:52:42] |
| [root@localhost ~~10:52:43] |
| ls: cannot access /jianqiang: No such file or directory |
| |
| |
| [root@localhost ~~10:52:56] |
| [root@localhost ~~10:53:03] |
| [root@localhost ~~10:53:03] |
| [root@localhost ~~10:53:04] |
| ls: cannot access /jianqiang: No such file or directory |
| ls: cannot access /jianqiang: No such file or directory |
| ls: cannot access /jianqiang: No such file or directory |
| ls: cannot access /jianqiang: No such file or directory |
| [root@localhost ~~10:53:06] |
| |
| |
| [root@localhost ~~10:53:17] |
| [root@localhost ~~10:53:42] |
| [root@localhost ~~10:53:44] |
| ls: cannot access /jianqiang: No such file or directory |
| ls: cannot access /jianqiang: No such file or directory |
| ls: cannot access /jianqiang: No such file or directory |
| ls: cannot access /jianqiang: No such file or directory |
| -bash: jianqiang: command not found |
| -bash: jianqiang: command not found |
| [root@localhost ~~10:53:52] |
| |
后台运行命令
| [root@localhost ~~10:59:08] |
| [1] 1651 |
| [root@localhost ~~10:59:22] |
| [1]+ Running ping baidu.com > /tmp/ll.txt & |
| [root@localhost ~~10:59:32] |
| ping baidu.com > /tmp/ll.txt |
| |
| |
| |
| |
| ^Z |
| [1]+ Stopped ping baidu.com > /tmp/ll.txt |
| [root@localhost ~~11:00:06] |
| root 1651 1535 0 10:59 pts/0 00:00:00 ping baidu.com |
| root 1653 1535 0 11:00 pts/0 00:00:00 grep --color=auto ping |
| [root@localhost ~~11:00:25] |
| [1]+ Stopped ping baidu.com > /tmp/ll.txt |
| [root@localhost ~~11:00:44] |
| [1]+ ping baidu.com > /tmp/ll.txt & |
| |
nohup命令
| 用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行 |
| |
| nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下 |
| 如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out 文件中 |
| 一般和&符一起使用 |
linux资源管理
机器负载查看
uptime命令
| 系统负载指的是在单位时间内,系统分配给CPU处理的进程数量,必然是数量越多,负载值越高,机器的压力越大 |
| |
| [root@localhost ~~16:04:47]#uptime |
| 16:04:51 up 3:12, 3 users, load average: 0.16, 0.05, 0.05 |
| [root@localhost ~~16:04:51]# |
| |
| |
| |
| 理想化的状态是每个CPU都在运行着进程,充分让cpu工作起来,效率最大化,你得先看看你机器上有几个CPU(几个核,就是有几个cpu可以工作) |
| 发现是8核的 |
| [root@localhost ~~16:04:51]#lscpu |grep -i '^cpu(s)' |
| CPU(s): 8 |
| |
| |
| # 以及用top命令,按下数字1,查看几核。 |
| top |
| |
| |
| 2. 如何理解uptime看到的负载 |
| 分别是1、5、15分钟内的平均负载情况,表示是1~15分钟内CPU的负载变化情况。 |
| |
| 1. 三个值如果差不多,表示系统很稳定的运行中,15分钟以内,CPU都没有很忙 |
| 2. 如果1分钟内的值,远大于15分钟的值,表示机器在1分钟内压力在直线上升 |
| 3. 如果1分钟内的值,小于15分钟的值,表示系统的负载正在下降中 |
查看当前机器是几核的cpu
| [root@localhost ~~16:04:51]#lscpu |grep -i '^cpu(s)' |
| CPU(s): 8 |
| |
| |
通过cpu的文件,确定是几颗CPU
| [root@localhost ~~16:08:43]#cat /proc/cpuinfo |grep 'core id' | sort |uniq|wc -l |
| 4 |
| |
stress压力测试命令
| 运行多进程,测试查看cpu压力 |
| |
| 安装stress工具 |
| yum install stress -y |
| |
| 使用stress命令,给机器进行压力测试,这个命令会让你的机器,cpu达到100%,以此实现最高压的环境 |
| # --cpu 4 让4个cpu |
| stress --cpu 1 --timeout 600 #这是一个cpu100% |
| |
| stress --cpu 4 --timeout 600 #这是4个cpu100% |
free命令
| [root@localhost ~~16:14:57] |
| |
| -m 以MB形式显示 |
| |
| -h 以GB形式显示 |
| total used free shared buff/cache available |
| Mem: 4028428 146124 3688096 11872 194208 3632804 |
| Swap: 2097148 0 2097148 |
| [root@localhost ~~16:15:05] |
| total used free shared buff/cache available |
| Mem: 3934 142 3602 11 189 3548 |
| Swap: 2047 0 2047 |
| [root@localhost ~~16:15:13] |
| total used free shared buff/cache available |
| Mem: 3.8G 142M 3.5G 11M 189M 3.5G |
| Swap: 2.0G 0B 2.0G |
| [root@localhost ~~16:15:17] |
| |
cache,缓存的和buffer,缓冲区的
| cache是:把磁盘读取的数据保存在内存中,再次读取就不用读取磁盘,而是直接从内存中读取,加速数据读取过程, |
| Cache,==缓存==,Cached是给==读取数据==时加速的 |
| |
| |
| |
| cache是指,把读取磁盘而来,的数据保存在内存中,再次读取,下一次不用读取硬盘,而直接从内存中读取,加速数据读取过程。 |
| buffer,==缓冲区==,buffers是给==写入数据==加速的 |
| |
| 总结cache、buffer |
| 这俩都是计算机的重要属性,不仅在内存,磁盘里有使用,后面的网站架构篇,也多处使用到缓存的概念。 |
| cache解决的时间问题,提高数据读取速度 |
| cache利用的是内存极快的速度特性,读写速度是磁盘的很多倍。 |
| buffer解决的是空间问题,给数据写入提供一个暂存空间 |
| 磁盘对碎片化的数据处理,是很低效的,我们后面学习磁盘管理,即可更深入理解 |
| buffer利用的是内存的存储特性。 |
| |

查看机器负载
| df 命令查看磁盘的空间 |
| |
| -h表示可读性较高的形式展示大小 |
| |
| [root@localhost ~~16:33:51] |
| 文件系统 容量 已用 可用 已用% 挂载点 |
| Filesystem Size Used Avail Use% Mounted on |
| /dev/mapper/centos-root 17G 3.6G 14G 22% / |
| devtmpfs 2.0G 0 2.0G 0% /dev |
| tmpfs 2.0G 0 2.0G 0% /dev/shm |
| tmpfs 2.0G 12M 2.0G 1% /run |
| tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup |
| /dev/sda1 1014M 130M 885M 13% /boot |
| tmpfs 394M 0 394M 0% /run/user/0 |
| [root@localhost ~~16:33:54] |
| |
| |
监控磁盘io动态
| iotop命令是一个用来监视磁盘I/O使用状况的top类工具。 |
| |
| iotop具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息 |
| |
| yum install iotop -y 安装命令 |
| |
| 常用命令参数 |
| -o:只显示有io操作的进程 |
| -b:批量显示,无交互,主要用作记录到文件。 |
| -n NUM:显示NUM次,主要用于非交互式模式。 |
| -d SEC:间隔SEC秒显示一次。 |
| -p PID:监控的进程pid。 |
| -u USER:监控的进程用户。 |
| -k 以kB单位显示读写数据信息 |
| |
| 3.常用快捷键 |
| 左右箭头:改变排序方式,默认是按IO排序。 |
| r:改变排序顺序。 |
| o:只显示有IO输出的进程。 |
| |
| p:进程/线程的显示方式的切换,切换pid、tid |
| |
| a:显示累积使用量 |
| q:退出。 |
网络资源监控
网络端口查看
| - ip地址,对应了tcp/ip协议的,ip地址号 |
| |
| - 端口号,对应了应用层的 如80(伴随着http协议的服务,如nginx这样的网站服务)端口 |
| |
| 好比你发快递,记住发送人是谁,收件人是谁,具体这个快递是经过了山路十八弯,还是去南极跑了一圈,你不用管,你关心最后快递能送到即可 |
| 你只需要关心,你和对方的服务器,是否能通信即可 |

tcp和udp的区别
| tcp 安全传输,熟读慢, |
| tcp 用在如网站的通信,比如你要登录淘宝网,淘宝网需要保留你的用户信息,因此你和淘宝网之间,就有了一个长链接,相互确认身份,要建立一个可靠的连接 |
| |
| |
| udp 传输速度快,不管你要不要,直接给你传过去, |
| 比如有一个黑客,疯狂的发出udp类型的请求 |
| 大量的让对方机器接收到无用的流量,导致网卡瘫痪,机器故障 |
netstat命令
network status,网络状态命令
| 命令:netstat |
| |
| 作用:查看网络连接状态 |
| |
| 语法:netstat -tnlp |
| |
| |
| |
| 选项: |
| |
| -t:表示只列出tcp 协议的连接;(你可以看到你的nginx的运行) |
| |
| -n:表示将地址从字母组合转化成ip 地址,将协议转化成端口号来显示;(netsta默认会看到机器的主机名 -n 直接显示ip) |
| |
| -l :表示过滤出"state(状态)"列中其值为LISTEN(监听)的连接;(你的nginx是否监听了0.0.0.0:80)确认端口在运行中,等待客户来访问 |
| |
| -p:表示显示发起连接的进程pid 和进程名称; (显示使用该端口的进程的id号) |
| |
| -u :查看udp连接 (ntpd服务) |
| |
| netstat -tunlp |grep nginx |
| |
| netstat -tunlp | grep ntp |
| |
ss命令
| 用法和netstat一模一样 |
| |
| ss -tunlp |grep nginx |
备注
在高并发场景下,也就是机器的链接数特别多的时候,使用ss性能比netstat更高一些。
iftop
| yum install iftop -y |
| |
| 用起来和top命令很像,动态的掌握服务器的流量情况 |
| |
| 能够看到你机器,有多少流量进来,有多少流量出去 |
| |
| |
df 查看磁盘信息
ip地址
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!