首页
学习
活动
专区
工具
TVP
发布

菲宇

专栏作者
743
文章
1616157
阅读量
55
订阅数
Linux vmstat命令实战详解
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。  选项 -a:显示活动内页; -f:显示启动后创建的进程总数; -m:显示slab信息; -n:头信息仅显示一次; -s:以表格方式显示事件计数器和内存状态; -d:报告磁盘状态; -p:显示指定的硬盘分区状态; -S:输出信息的单位。 vmstat 3 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------  r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st  0  0    320  42188 167332 1534368    0    0     4     7    1    0  0  0 99  0  0  0  0    320  42188 167332 1534392    0    0     0     0 1002   39  0  0 100  0  0  0  0    320  42188 167336 1534392    0    0     0    19 1002   44  0  0 100  0  0  0  0    320  42188 167336 1534392    0    0     0     0 1002   41  0  0 100  0  0  0  0    320  42188 167336 1534392    0    0     0     0 1002   41  0  0 100  0  0 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数 r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。 b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。 swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。 free   空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。 buff   Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。) si  每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。 so  每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。 bi  块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒 bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。 in 每秒CPU的中断次数,包括时间中断 cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源
菲宇
2022-12-21
9190
Linux网络监控netstat命令详解
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
菲宇
2022-12-21
1.9K0
Centos7下通过zabbix监控nginx status
系统环境 centos7.4、nginx1.12、zabbix3.4.10 1、安装配置zabbix-server及zabbix-agent。参照CentOS 7 下 Zabbix 3.2 安装https://blog.csdn.net/bbwangj/article/details/77969949 2、在nginx server中启动nginx status。 在nginx在nginx.conf配置文件server{}中添加以下内容: location /nginx_status          {                  stub_status on;                  access_log off;                  allow 127.0.0.1;                  deny all;          }   添加完成后,重启nginx 通过curl获取nginx status,查看其参数值 [root@localhost nginx]# curl http://127.0.0.1/nginx_status Active connections: 2 server accepts handled requests  2 2 3 Reading: 0 Writing: 1 Waiting: 1 active connections – 活跃的连接数量 server accepts handled requests — 总共处理了10942个连接 , 成功创建10942次握手, 总共处理了10942个请求 reading — 读取客户端的连接数. writing — 响应数据到客户端的数量 waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。 3.在/etc/zabbix/zabbix_agentd.d/上编辑nginx_status.sh脚本,用于zabbix_agent获取数据 #!/bin/bash   HOST="127.0.0.1"   PORT="80"   function ping {       /sbin/pidof nginx | wc -l   }   function active {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'   }   function reading {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'   }   function writing {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'   }   function waiting {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'   }   function accepts {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'   }   function handled {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'   }   function requests {       /usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'   }   $1   编辑完成后,运行该脚本进行测试,如获取requets数值。 [root@localhost ~]# chmod a+x nginx_status.sh [root@localhost ~]# ./n
菲宇
2022-12-21
3560
docker容器轻量级web管理工具之portainer
https://portainer.readthedocs.io/en/latest/deployment.html
菲宇
2022-12-21
5950
使用rsync进行主机间数据同步及其他工具
  rsync,remote synchronize。顾名思意,它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好。 rsync 包括如下的一些特性:
菲宇
2022-12-21
3030
linux的rsync工具的常用选项及ssh同步介绍
rsync是数据备份工具(字面意思可以理解为远程同步),不仅可以远程同步数据,而且可以本地同步数据(类似与cp),但不同于cp或scp的一点是,它不会覆盖以前的数据(如果数据已经存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。
菲宇
2022-12-21
7660
Linux三剑客之awk命令详解及相关实例
awk是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件、数据排序、计算以及生成报表等等。 在Linux系统下默认awk是gawk,它是awk的GNU版本。可以通过命令查看应用的版本:ls -l /bin/awk 基本的命令语法:awk option 'pattern {action}' file 其中pattern表示AWK在数据中查找的内容,而action是在找到匹配内容时所执行的一系列命令。花括号用于根据特定的模式对一系列指令进行分组。 awk处理的工作方式与数据库类似,支持对记录和字段处理,这也是grep和sed不能实现的。 在awk中,缺省的情况下将文本文件中的一行视为一个记录,逐行放到内存中处理,而将一行中的某一部分作为记录中的一个字段。用1,2,3...数字的方式顺序的表示行(记录)中的不同字段。用$后跟数字,引用对应的字段,以逗号分隔,0表示整个行。
菲宇
2022-12-21
1.2K0
Lnux系统主目录结构及其作用
Linux和UNIX的文件系统是一个以“/ “为根的阶层式的树状文件结构,/ 因此被称为根目录。所有的文件和目录都置于根目录/ 之下。根目录/下面有/bin,/home,/usr等子目录。在早期的UNIX系统中,各个厂家各自定义了自己的UNIX系统的文件系统构成,比较混乱。
菲宇
2022-12-02
5050
Linux运维工程师必学必备的8项技能
 试想如果没有最扎实的基础,如何去查看文件类型、查看系统运行状态、编辑文件、输出文件、创建用户、分配帐户权限、使用RAID技术和LVM磁盘阵列等最最基础的知识,一定要掌握扎实,才能走的更远。关于基本功买一本书籍《Linux就该这么学》来自学,这是我的技术启蒙读物,很不错。
菲宇
2022-12-02
1.5K0
Linux系统日志及分析
Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。 大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默认配置文件为 /etc/syslog.conf 或 rsyslog.conf,任何希望生成日志的程序都可以向 syslog 发送信息。
菲宇
2022-12-02
6.8K0
Linux三剑客之awk命令详解
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
菲宇
2022-12-02
6320
Linux运维常用脚本命令
5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。  
菲宇
2022-12-02
2.5K0
Linux下查看网络信息和端口信息
1、在ifconfig内容中找出ip [root@localhost ~]# ifconfig ens33|grep "inet "\ > |awk '{print $2}' #awk默认分割符号为空格 ping都懂用,可是linux下,ping命令会一直ping,不会自动停止怎么办 [root@localhost ~]# ping www.baidu.com -c 4 #-c 次数 [root@localhost ~]# netstat -an|grep -v unix #显示网络连接信息,-a所有,-n实际地址 |grep -v 晓得吧,就是反向显示(不显示符合条件) 2、查看网络连接状态,并汇总信息 [root@localhost ~]# netstat -an|grep tcp [root@localhost ~]# netstat -an|grep tcp|awk '{++S[$NF]} END {for (a in S) print a,S[a]}' [root@localhost ~]# netstat -an|awk '/^tcp/{++S[$NF]} END {for (a in S) print a,S[a]}' #写法有很多种 3、查看系统路由表,两种方法 [root@localhost ~]# netstat -rn [root@localhost ~]# netstat -r 4、追踪网络数据包的路径,经过的路由 [root@localhost ~]# traceroute www.12306.com 5、根据域名查ip [root@localhost ~]# nslookup www.baidu.com #可以使用dig命令,查看NS(域名服务器)记录 [root@localhost ~]# dig www.taobao.com 6、查看端口状态 a、lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 b、netstat -tunlp |grep 端口号,用于查看指定的端口号的进程情况,如查看8000端口的情况,netstat -tunlp |grep 8000
菲宇
2019-07-02
5.5K0
Python模块之subprocess用法实例详解
subprocess最早在2.4版本引入。用来生成子进程,并可以通过管道连接他们的输入/输出/错误,以及获得他们的返回值。
菲宇
2019-06-13
23.9K0
python常用内建模块之time、date、datetime
Python的time和datetime模块提供了时间日期工具, python中的时间有4种表示方式:
菲宇
2019-06-13
2.2K0
Linux运维面试收藏
mount.cifs //IP地址/server /mnt/server -o user=administrator,password=123456 linux 下的server需要自己手动建一个 后面的user与pass 是windows主机的账号和密码 注意空格 和逗号。
菲宇
2019-06-13
1K0
Linux之文件管理及文本处理
文件管理不外乎文件或目录的创建、删除、查询、移动,有mkdir/rm/mv 文件查询是重点,用find来进行查询;find的参数丰富,也非常强大; 有时候,需要给文件创建一个别名,我们需要用到ln,使用这个别名和使用原文件是相同的效果; 2.1. 创建和删除 创建:mkdir 删除:rm 删除非空目录:rm -rf file目录 删除日志 rm *log (等价: $find ./ -name “*log” -exec rm {} ;) 移动:mv 复制:cp (复制目录:cp -r ) 查看当前目录下文件个数: $find ./ | wc -l 复制目录: $cp -r source_dir dest_dir 2.2. 目录切换 找到文件/目录位置:cd 切换到上一个工作目录: cd - 切换到home目录: cd or cd ~ 显示当前路径: pwd 更改当前工作路径为path: $cd path 2.3. 列出目录项 显示当前目录下的文件 ls 按时间排序,以列表的方式显示目录项 ls -lrt 以上这个命令用到的频率如此之高,以至于我们需要为它建立一个快捷命令方式: 在.bashrc 中设置命令别名: alias lsl='ls -lrt' alias lm='ls -al|more' 这样,使用lsl,就可以显示目录中的文件按照修改时间排序;以列表方式显示; 给每项文件前面增加一个id编号(看上去更加整洁): >ls | cat -n 1 a 2 a.out 3 app 4 b 5 bin 6 config 注:.bashrc 在/home/你的用户名/ 文件夹下,以隐藏文件的方式存储;可使用 ls -a 查看; 2.4. 查找目录及文件 find/locate 搜寻文件或目录: $find ./ -name "core*" | xargs file 查找目标文件夹中是否有obj文件: $find ./ -name '*.o' 递归当前目录及子目录删除所有.o文件: $find ./ -name "*.o" -exec rm {} \; find是实时查找,如果需要更快的查询,可试试locate;locate会为文件系统建立索引数据库,如果有文件更新,需要定期执行更新命令来更新索引库: $locate string 寻找包含有string的路径: $updatedb 与find不同,locate并不是实时查找。你需要更新数据库,以获得最新的文件索引信息。 2.5. 查看文件内容 查看文件:cat vi head tail more 显示时同时显示行号: $cat -n 按页显示列表内容: $ls -al | more 只看前10行: $head - 10 ** 显示文件第一行: $head -1 filename 显示文件倒数第五行: $tail -5 filename 查看两个文件间的差别: $diff file1 file2 动态显示文本最新信息: $tail -f crawler.log 2.6. 查找文件内容 使用egrep查询文件内容: egrep '03.1\/CO\/AE' TSF_STAT_111130.log.012 egrep 'A_LMCA777:C' TSF_STAT_111130.log.035 > co.out2 2.7. 文件与目录权限修改 改变文件的拥有者 chown 改变文件读、写、执行等属性 chmod 递归子目录修改: chown -R tuxapp source/ 增加脚本可执行权限: chmod a+x myscript 2.8. 给文件增加别名 创建符号链接/硬链接: ln cc ccAgain :硬连接;删除一个,将仍能找到; ln -s cc ccTo :符号链接(软链接);删除源,另一个无法使用;(后面一个ccTo 为新建的文件) 2.9. 管道和重定向 批处理命令连接执行,使用 | 串联: 使用分号 ; 前面成功,则执行后面一条,否则,不执行:&& 前面失败,则后一条执行: || ls /proc && echo suss! || echo failed. 能够提示命名是否执行成功or失败; 与上述相同效果的是: if ls /proc; then echo suss; else echo fail; fi 重定向: ls proc/*.c > list 2> &l 将标准输出和标准错误重定向
菲宇
2019-06-13
1.7K0
Shell脚本实现监控rsync数据是否传输完
今天有台服务器a要把网站程序全部传输到另外一台服务器b上去,但离下班时间就只有1个小时了,为了准时下班,简单写了个shell脚本来监控是否有传输完,我先在服务器a上看了下网站程序总大小为12G,用du -sm查看也就是11517,服务器也不会有人再传东西上去了,所以我可以放心容量不会再变大了。
菲宇
2019-06-12
7220
shell脚本监控启动停止weblogic服务
有时,linux系统需要做HA或者类似的功能,需要配置weblogic脚本来启动,停止,查看状态,可以如下方式写
菲宇
2019-06-12
2.1K0
Nginx日志配置及日志分析脚本案例
其中access log 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息
菲宇
2019-06-12
2.9K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档