一些基础

不同进程之间,进行数据访问

同一主机:pipe 管道

socket   套接字文件

signal   信号

shm   shared memory

semaphore 信号量,一种计数器

不同主机:socket IP和端口号 (最底层的实现方式)

RPC remote procedure call

MQ 消息队列,如:Kafka,RabbitMQ,ActiveMQ

Linux系统状态的查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup

pstree命令:

  pstree  display a tree of processes

    

ps: process state

    ps  report a snapshot of the current processes

    /proc 文件夹存放的都是目前正在运行的进程的数据,每一个进程,系统都会分配专门的文件夹来存放此进程相关的信息

ps  进程管理

支持三种选项

  BSD选项

  • 默认显示当前终端中的进程
  • a 选项包括所有终端中的进程
  • x 选项包括不链接终端的进程
  • u 选项显示进程所有者的信息
  • f 选项显示进程树,相当于 --forest
  • k|--sort  属性 对属性排序,属性前加- 表示倒序
  • o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
  • L 显示支持的属性列表

  UNIX选项

  • -C cmdlist 指定命令,多个命令用,分隔
  • -L 显示线程
  • -e: 显示所有进程,相当于-A
  • -f: 显示完整格式程序信息
  • -F: 显示更完整格式的进程信息
  • -H: 以进程层级格式显示进程相关信息
  • -u userlist  指定有效的用户ID或名称
  • -U userlist 指定真正的用户ID或名称
  • -g gid或groupname  指定有效的gid或组名称
  • -G gid或groupname  指定真正的gid或组名称
  • -p pid 显示指pid的进程
  • --ppid pid  显示属于pid的子进程
  • -M  显示SELinux信息,相当于Z

一些值的含义

ni: nice值

pri: priority 优先级

psr: processor  CPU编号

rtprio: 实时优先级

示例  ps axo pid,cmd,psr,ni,pri,rtprio

VSZ: Virtual memory SiZe,虚拟内存集,线性内存

RSS: ReSident Size, 常驻内存集   (真实内存)

常用组合:

  • aux
  • -ef
  • -eFH
  • -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
  • axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

一些示例

  • ps -p 3914 -o pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm  //查看某个进程的一些属性
  • ps -p 1244 -o comm=    使用其PID查找进程名称:
  • ps -C sshd,bash    要以其名称选择特定进程,显示其所有子进程
  • ps -C httpd,sshd -o pid=   查找指定进程名所有的所属PID
  • ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head     查找占用最多内存和CPU的进程
  • ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head

pgrep   专门用于查找一些进程的,很简单默认只显示进程号,顶多显示名字  -a 可以把参数也显示

  • pgrep [options] pattern
  • -u uid: effective user,生效者
  • -U uid: real user,真正发起运行命令者
  • -t terminal: 与指定终端相关的进程
  • -l: 显示进程名
  • -a: 显示完整格式的进程名
  • -P pid: 显示指定进程的子进程

    示例  

 top

排序:

P:以占据的CPU百分比,%CPU

M:占据内存百分比,%MEM

T:累积占据CPU时长,TIME+

首部信息显示:

uptime信息:l命令

tasks及cpu信息:t命令

cpu分别显示:1 (数字)

memory信息:m命令

退出命令:q

修改刷新时间间隔:s

终止指定进程:k

保存文件:W

栏位信息简介

  • us:用户空间
  • sy:内核空间
  • ni:调整nice时间
  • id:空闲
  • wa:等待IO时间
  • hi:硬中断
  • si:软中断(模式切换)
  • st:虚拟机偷走的时间
top - 18:32:45 up 230 days,  2:01,  1 user,  load average: 0.00, 0.00, 0.00

(1)18:45:02  当前时间

(2)up 230 days,  2:14,  系统连续运行时间

(3)1 user,  当前登录用户数

(4)load average: 0.00, 0.00, 0.00  系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到当前时刻的平均值。

Tasks:  93 total,   1 running,  92 sleeping,   0 stopped,   0 zombie

(1)total  进程总数

(2)running  正在运行的进程数

(3)sleeping  睡眠的进程数

(4)stopped  停止的进程数

(5)zombie  僵尸进程数

Cpu(s):  0.8%us,  0.5%sy,  0.0%ni, 98.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.2%st

(1)0.8%us  用户空间占用CPU百分比

(2)0.5%sy  内核(系统)空间占用CPU百分比

(3)0.0%ni  用户进程空间内改变过优先级的进程占用CPU百分比

(4)98.5%id  空闲CPU百分比

(5)0.0%wa  等待输入输出的CPU时间百分比

(6)0.0%hi  硬件CPU中断占用百分比

(7)0.0%si  软中断占用百分比

(8)0.2%st  虚拟机占用百分比

Mem:   3974188k total,  2811108k used,  1163080k free,   144292k buffers

(1)total  物理内存总量

(2)used  使用的物理内存总量

(3)free  空闲内存总量

(4)buffers  用作内核缓存的内存量

Swap:  2097148k total,    46184k used,  2050964k free,   595092k cached

(1)total  交换区总量

(2)used  使用的交换区总量

(3)free  空闲交换区总量

(4)cached  缓冲的交换区总量

  空闲内存 = 空闲内存总量free + 内核缓存的内存量 buffers + 缓冲的交换区总量cached

free 内存管理

free [OPTION]

  • -b  以字节为单位
  • -m  以MB为单位
  • -g  以GB为单位
  • -h  易读格式
  • -o  不显示-/+buffers/cache行
  • -t   显示RAM + swap的总和
  • -s  n  刷新间隔为n秒
  • -c  n  刷新n次后即退出

  清理缓存

  

 vmstat命令:虚拟内存信息 也有磁盘io

  swap:

  • si:从磁盘交换进内存的数据速率(kb/s)
  • so:从内存交换至磁盘的数据速率(kb/s)

  io:

  • bi:从块设备读入数据到系统的速率(kb/s)
  • bo: 保存数据至块设备的速率

iostat:统计CPU和设备IO信息

示例:iostat 1 10

iftop:显示带宽使用情况,EPEL源

示例:iftop -n -i eth1

glances命令  跨网络监控其他系统的参数

   S: glances -s -B IPADDR  IPADDR: 指明监听的本机哪个地址

   C: glances -c IPADDR  IPADDR:要连入的服务器端地址

    可以通过防火墙策略,限定特定的地址可以连接我

dstat命令:系统资源统计,代替vmstat,iostat

  • -c 显示cpu相关信息
  • -C #,#,...,total
  • -d 显示disk相关信息
  • -D total,sda,sdb,...
  • -g 显示page相关统计数据
  • -m 显示memory相关统计数据
  • -n 显示network相关统计数据
  • -p 显示process相关统计数据
  • -r 显示io请求相关的统计数据
  • -s 显示swapped相关的统计数据

iotop

iostat 只能看出某个设备的ip情况

iotop可以看到某个进程的io情况,显示某个进程在磁盘上的读写情况

lsof  查看某个挂载点或者设备是否被使用

  • -a:列出打开该文件存在的进程     lsof  -a  filename
  • -c<进程名>:列出指定进程所打开的文件    lsof  -c  pname
  • -g:列出GID号进程详情
  • -d<文件号>:列出占用该文件号的进程
  • +d<目录>:列出目录下被打开的文件
  • +D<目录>:递归列出目录下被打开的文
  • -n<目录>:列出使用NFS的文件
  • -i<条件>:列出符合条件的进程(4、6、协议、:端口、 @ip )
  • -p<进程号>:列出指定进程号所打开的文件
  • -u:列出UID号进程详情
  • -h:显示帮助信息
  • -v:显示版本信息。
  • -n:  不反向解析网络名字

 一些示例

指定进程号,可以查看该进程打开的文件   lsof -p 9527

查看指定程序打开的文件   lsof -c httpd

查看指定用户打开的文件   lsof -u root | more

查看指定目录下被打开的文件

lsof +D /var/log/    lsof +d /var/log/

参数+D为递归列出目录下被打开的文件,参数+d为列出目录下被打开的文件

  • 查看所有网络连接
  • lsof -i –n
  • lsof -i@127.0.0.1
  • 通过参数-i查看网络连接的情况,包括连接的ip、端口等以及一些服务的连接情况,例如: sshd等。也可以通过指定ip查看该ip的网络连接情况
  • 查看端口连接情况
  • lsof -i :80
  • lsof -i@172.16.12.5:22
  • 通过参数-i:端口可以查看端口的占用情况,-i参数还有查看协议,ip的连接情况等
  • 查看指定进程打开的网络连接
  • lsof -i –n -a -p 9527
  • 参数-i、-a、-p等,-i查看网络连接情况,-a查看存在的进程,-p指定进程
  • 查看指定状态的网络连接
  • lsof -n -P -i TCP -s TCP:ESTABLISHED
  • -n:no host names, -P:no port names,-i TCP指定协议,-s指定协议状态通过多个参数可以 清晰的查看网络连接情况、协议连接情况等

进程,内存,管理 ps,pstree,top,free,vmstat,iftop,lsof,查看网速的更多相关文章

  1. centos8:linux平台查看线程(ps/pstree/top)

    一,ps/pstree/top命令所属的rpm包 pstree所属的包 [root@blog ~]# whereis pstree pstree: /usr/bin/pstree /usr/bin/p ...

  2. Linux进程管理 - ps,top,pstree,signal,kill,killall举例演示

    ps:将某个时间点的进程运行情况撷取下来 [root@www ~]# ps aux <==观察系统所有的进程数据 [root@www ~]# ps -lA <==也是能够观察所有系统的数据 ...

  3. Linux 进程管理 ps、top、pstree命令

    ps命令:查看系统中正在运行的进程 ps 是用来静态地查看系统中正在运行的进程的命令.不过这个命令有些特殊,它的部分选项不能加入"-",比如命令"ps aux" ...

  4. 第十七章 程序管理与SELinux初探--进程、进程管理(ps、top)

    一个程序被加载到内存当中运行,在内存内的那个数据就被称为进程(process).进程是操作系统上非常重要的概念,所有系统上面跑的数据都会以进程的类型存在.系统进程有哪些状态?不同状态会如何影响系统的运 ...

  5. 2017-06-30(ps pstree top kill w killall pkill)

    ps(查看系统下所有进程) -a 显示一个终端的所有进程,除了会话引线 -u 显示进程的归属用户以及内存的使用情况 -x 显示没有控制终端的进程 -l 长格式显示,更加详细的信息 -e 显示所有的进程 ...

  6. LInux查看网速带宽及各进程占用情况:nethogs

    安装: #Ubuntu: sudo apt-get install nethogs #CentOS: sudo yum install nethogs 使用: $ sudo nethogs

  7. Linux内存点滴 用户进程内存空间

    Linux内存点滴 用户进程内存空间 经常使用top命令了解进程信息,其中包括内存方面的信息.命令top帮助文档是这么解释各个字段的. VIRT, Virtual Image (kb) RES, Re ...

  8. Linux用户管理 权限管理 内存管理 网络管理命令 (第四天)

    默认添加的用户会自动加入和用户名一样的组中su 切换用户查看当前登陆的用户: whoami id`查看当前用户属于哪个组:groupsgroupadd 组名 添加组groupdel 组名 删除组gre ...

  9. 2万字|30张图带你领略glibc内存管理精髓(因为OOM导致了上千万损失)

    前言 大家好,我是雨乐. 5年前,在上家公司的时候,因为进程OOM造成了上千万的损失,当时用了一个月的时间来分析glibc源码,最终将问题彻底解决. 最近在逛知乎的时候,发现不少人有对malloc/f ...

随机推荐

  1. 2019牛客多校第四场A meeting 思维

    meeting 题意 一个树上有若干点上有人,找出一个集合点,使得所有人都到达这个点的时间最短(无碰撞) 思路 就是找树的直径,找直径的时候记得要找有人的点 #include<bits/stdc ...

  2. Django_后台管理

    1. 站点管理 2. 创建超级管理员 3. 添加自己的数据模型 默认是打印字符串的 4. 个性化站点管理的定制 4.1 个性化规则 admin.py 4.2 布尔值定制显示 4.3 插入班级的时候同时 ...

  3. stm32f103中freertos的tasks基本使用案例及备忘

    基本实例   freetos的在stm32中使用踩了一些坑,事情做完了,就 做个备忘,希望能给后面的人一些借鉴. 先给出一个实际的例子吧. 启动代码 void task_create(void) { ...

  4. Vue实例 动态组件实现选项卡

    动态组件 选项卡 有n种实现方法 哈哈哈哈 <style> #app{ width: 260px; height: 200px; background: #fff; box-shadow: ...

  5. 如何在linux安装ruby2.2.2+

    背景: 想搭建redis集群但是提示需要ruby2.2.2+ 直接使用yum安装 yum -y install ruby ruby-devel rubygems rpm-build 使用ruby -v ...

  6. Multisim 如何添加文本 如何编辑文本字体

    1.在Multisim中如何添加文本 方法1)Place -> Text 方法2)Ctrl+T 2.如何修改字体的大小及颜色

  7. bugku 隐写2

    首先打开链接发现是一张图片 然后分析一下图片 发现这个图片实际是一个压缩包 然后更改一下后缀名 改成zip 然后解压之后会发现另一个压缩包和一张图片压缩包需要密码然后这个图片是一个提示 然后分析 (我 ...

  8. Spring错误:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.Bi

    在使用SSM框架传递多个参数的时候发生如下错误: 原因是因为在传递多个参数的时候没有使用注解@Param,所以才包如下错误: 参考的技术文章:https://blog.csdn.net/sinat_2 ...

  9. jinja 语法 - 整型转字符串

    大多数 jinja 相关的问题,其实查文档就解决了,但后来遇到这个问题,使得我把 jinja 官方文档,api.样例等,认真读了个遍= =. 发现没有直接的办法可以将整型转为字符串,对于需要进行字符串 ...

  10. C语言进行csv文件数据的读取

    C语言进行csv文件数据的读取: #include <stdio.h> #include <string.h> #include <malloc.h> #inclu ...