linux ps -vv,监控IO性能| free命令 |ps命令 |查看网络状态 |linux下抓包

news/2024/11/16 21:00:15/

10.6 监控IO性能

[root@aminglinux-001 ~]# iostat -x

Linux 3.10.0-514.el7.x86_64 (aminglinux-001) 2018年01月22日 _x86_64_ (2 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

4.87 0.00 8.42 14.51 0.00 72.20

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sda 0.01 0.74 32.95 10.74 901.28 80.73 44.95 1.19 27.17 22.32 42.04 6.94 30.31

sdb 0.00 0.00 2.39 0.00 14.79 0.00 12.35 0.01 4.12 4.12 0.00 2.40 0.57

dm-0 0.00 0.00 0.48 0.00 3.66 0.00 15.20 0.00 2.62 2.62 0.00 2.53 0.12

关注%util 磁盘运行情况

查看哪个经常在读写,使用iotop [root@centos-01 ~]# yum install -y iotop

10.7free命令

[root@centos-01 ~]# free

total used free shared buff/cache available

Mem: 8002828 183304 7458728 8784 360796 7536660

Swap: 4194300 0 4194300

[root@aminglinux-001 ~]# free -m

total used free shared buff/cache available

Mem: 7815 139 7531 8 144 7454

Swap: 4095 0 4095

[root@aminglinux-001 ~]# free -h

total used free shared buff/cache available

Mem: 7.6G 139M 7.4G 8.5M 144M 7.3G

Swap: 4.0G 0B 4.0G

只需要敲一个 free 然后回车就可以当前系统的总内存大小以及使用内存的情况。从上例中可看到当前系统内存总大小为8002828(单位是k)已经使用183304, 剩余7458728. 其实真正剩余并不是这个7458728, 而是第二行的4194300, 真正使用的也是第二行的0, 这是因为系统初始化时,就已经分配出很大一部分内存给缓存,这部分缓存用来随时提供给程序使用,如果程序不用,那这部分内存就空闲。所以,查看内存使用多少,剩余多少请看第二行的数据。另外我们还可以加-m 或者-g选项分别以M或G为单位打印内存使用状况 公式:total=used+free+buff/cache avaliab包含free和buffer/cache剩余部分

10.8ps命令

把当前的所有进程列出来

[root@aminglinux-001 ~]# ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.4 0.0 190660 3584 ? Ss 22:12 0:06 /usr/lib/systemd/systemd --swit

root 2 0.0 0.0 0 0 ? S 22:12 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S 22:12 0:00 [ksoftirqd/0]

root 6 0.0 0.0 0 0 ? S 22:12 0:00 [kworker/u128:0]

root 7 0.0 0.0 0 0 ? S 22:12 0:00 [migration/0]

root 8 0.0 0.0 0 0 ? S 22:12 0:00 [rcu_bh]

root 9 0.0 0.0 0 0 ? S 22:12 0:00 [rcu_sched]

root 10 0.0 0.0 0 0 ? S 22:12 0:00 [watchdog/0]

查看进程中有没有某个进程在运行

[root@aminglinux-001 ~]# ps aux | grep mysql

root 2151 0.0 0.0 112664 972 pts/0 S+ 22:39 0:00 grep --color=auto mysql

把进程杀死,就要用到PID

[root@centos-01 ~]# kill 5648

[root@centos-01 ~]# ps aux |grep pickup

root 5828 0.0 0.0 112664 972 pts/2 S+ 22:44 0:00 grep --color=auto pickup

查看某个进程是在哪里起来的

[root@centos-01 ~]# ls -l /proc/1663

ps -elf 大同小异,显示的信息基本上和ps aux是一样的。下面介绍几个参数的意义。

PID :进程的id,这个id很有用,在linux中内核管理进程就得靠pid来识别和管理某一个程,比如我想终止某一个进程,则用 ‘kill 进程的pid 有时并不能杀掉,则需要加一个-9选项了 kill -9 进程pid

STAT :表示进程的状态,进程状态分为以下几种(不要求记住,但要了解)

D 不能中断的进程(通常为IO)

R 正在运行中的进程

S 已经中断的进程,通常情况下,系统中大部分进程都是这个状态

T 已经停止或者暂停的进程,如果我们正在运行一个命令,比如说 sleep 10 如果我们按一下ctrl -z 让他暂停,那么我们用ps查看就会显示T这个状态

W 这个好像是说,从内核2.6xx 以后,表示为没有足够的内存页分配

X 已经死掉的进程(这个好像从来不会出现)

Z 僵尸进程,杀不掉,打不死的垃圾进程,占系统一小点资源,不过没有关系。如果太多,就有问题了。一般不会出现。

< 高优先级进程

N 低优先级进程

L 在内存中被锁了内存分页

s 主进程

l 多线程进程

代表在前台运行的进程

这个ps命令是工作中用的非常多的命令之一,所以要记住它。关于ps命令的使用,经常会连同管道符一起使用,用来查看某个进程或者它的数量。

[root@centos-01 ~]# vmstat 1

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 0 7458604 876 360148 0 0 2 1 19 25 0 0 100 0 0

0 0 0 7458612 876 360148 0 0 0 0 66 68 0 0 100 0 0

0 0 0 7458612 876 360148 0 0 0 0 36 44 0 0 100 0 0

^Z

[1]+ 已停止 vmstat 1

[root@centos-01 ~]# ps aux |grep vmstat

root 5862 0.0 0.0 148308 1352 pts/2 T 15:53 0:00 vmstat 1

root 5864 0.0 0.0 112664 972 pts/2 R+ 15:54 0:00 grep --color=auto vmstat

[root@centos-01 ~]# fg

10.9、查看网络状态

[root@centos-01 ~]# netstat -lnp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 952/sshd

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1595/master

tcp6 0 0 :::22 :::* LISTEN 952/sshd

tcp6 0 0 ::1:25 :::* LISTEN 1595/master

udp 0 0 0.0.0.0:68 0.0.0.0:* 4422/dhclient

udp 0 0 127.0.0.1:323 0.0.0.0:* 546/chronyd

udp 0 0 0.0.0.0:38180 0.0.0.0:* 4422/dhclient

udp6 0 0 ::1:323 :::* 546/chronyd

udp6 0 0 :::41347 :::* 4422/dhclient

raw6 0 0 :::58

netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息。最常用的关于netstat的命令就是这个 netstat -lnp (打印当前系统启动哪些端口)以及 netstat -an (打印网络连接状况)这两个命令非常有用,一定要记住。

[root@centos-01 ~]# netstat -an

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN

tcp 0 52 192.168.187.130:22 192.168.187.1:51328 ESTABLISHED

tcp6 0 0 :::22 :::* LISTEN

tcp6 0 0 ::1:25 :::* LISTEN

udp 0 0 192.168.187.130:39457 108.59.2.24:123 ESTABLISHED

udp 0 0 0.0.0.0:68 0.0.0.0:*

udp 0 0 127.0.0.1:323 0.0.0.0:*

udp 0 0 0.0.0.0:38180 0.0.0.0:*

udp 0 0 192.168.187.130:43156 85.199.214.101:123 ESTABLISHED

udp6 0 0 ::1:323 :::*

udp6 0 0 :::41347 :::*

raw6 0 0 :::58 :::* 7

查看所有状态的数字

[root@centos-01 ~]# netstat -an | awk '/^tcp/ {++sta[$NF]} END {for(key in sta) print key,"\t",sta[key]}'

LISTEN 4

ESTABLISHED 1

10.10 linux下抓包

[root@centos-01 ~]# tcpdump -nn -i ens33 -c 3

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on ens33, link-type EN10MB (Ethernet), capture size 65535 bytes

16:59:04.360034 IP 192.168.187.130.22 > 192.168.187.1.51328: Flags [P.], seq 1241162132:1241162344, ack 1047084528, win 273, length 212

16:59:04.361318 IP 192.168.187.1.51328 > 192.168.187.130.22: Flags [.], ack 212, win 16201, length 0

16:59:04.361596 IP 192.168.187.130.22 > 192.168.187.1.51328: Flags [P.], seq 212:504, ack 1, win 273, length 292

3 packets captured

3 packets received by filter

0 packets dropped by kernel

指定端口22

[root@centos-01 ~]# tcpdump -nn -i ens33 port 22

指定host的包

[root@centos-01 ~]# tcpdump -nn -i ens33 not port 22 and host 192.168.187.130

把抓包内容存放在文件中

[root@centos-01 ~]# tcpdump -nn -i ens33 -c 100 -w /tmp/1.cap

读这个文件

[root@centos-01 ~]# tcpdump -r /tmp/1.cap

可以抓WEB80端口的包。比较实用。

[root@centos-01 ~]# tshark -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"


http://www.ppmy.cn/news/754238.html

相关文章

swit 闭包的基本使用

还是模拟网络请求&#xff0c;首先创建网络请求类 // // NetworkRequestTool.swift // Test // // Created by fe on 2017/2/28. // Copyright © 2017年 fe. All rights reserved. //import UIKitclass NetworkRequestTool: NSObject {//闭包类型&#xff1a;(参数列表…

Swit项目-初始化配置

一、项目部署配置 二、初始化项目 ①常规初始化 class MainViewController: UITabBarController {override func viewDidLoad() {super.viewDidLoad()//1.创建TabBar第一种方法addChildViewController( "HomeViewController", "首页", "tabbar_home…

python中break和continue的区别_python中break和continue的区别

原博文 2017-08-01 09:56 − break和continue 1.break 意思为结束循环 例&#xff1a; i 0 while i<10: i1 if i5: #当i5时&#xff0c;结束整个循环 ... 0 30778 相关推荐 2019-12-20 11:37 − 1、break break的使用场景&#xff1a;循环语句和switch-case分支语句。…

c语言while和break 语句用法,C语言break和continue语句的用法

在C语言中break和continue是跳出循环意思&#xff0c;他可以跳出for,while,do while循环&#xff0c;下面我来给C语言入门介绍break和continue语句的用法。 1break语句 break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以…

Swit实战技巧

Swift实战技巧 从OC转战到Swift&#xff0c;差别还是蛮大的&#xff0c;本文记录了我再从OC转到Swift开发过程中遇到的一些问题&#xff0c;然后把我遇到的这些问题记录形成文章&#xff0c;大体上是一些Swift语言下面的一些技巧&#xff0c;希望对有需要的人有帮助 OC调用方法…

swit 闭包使用,闭包和OC的block非常相似,先回顾block

此处模拟一下封装网络请求类&#xff0c;使用block向外面抛值 首先写网络请求工具类 (void)networkRequestWithBlock:(void(^)(NSString *))callBack{dispatch_async(dispatch_get_global_queue(0, 0), ^{NSLog("-----发送异步网络请求");dispatch_async(dispatch_g…

swit3.1 (9)笔记 内存管理和方法

Transitioning to ARC Release Notes&#xff08;oc内存管理&#xff09; https://developer.apple.com/library/content/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011226 1、__strong is the default. An obje…

swift 创建类方法(扩展)和便利构造函数

// // UIButtonExtension.swift // ZYFWB // // Created by fe on 2017/3/8. // Copyright © 2017年 fe. All rights reserved. //import UIKit//UIButton的类方法扩展 extension UIButton {//这里的类方法相当于OC中的加号方法class func creatButtonWithImageName(i…