Mark blog

知行合一 划水归档

Linux 中的进程和计划任务(二)

Linux 中系统资源的管理

进程管理工具

top 命令

top:有许多内置命令

​ 排序:

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

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

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

​ 首部信息显示:

​ uptime信息:l命令

​ tasks及cpu信息:t命令

​ cpu分别显示:1 (数字)

​ memory信息:m命令

​ 退出命令:q

​ 修改刷新时间间隔:s

​ 终止指定进程:k

​ 保存文件:W

top 命令栏位简介

​ us:用户空间

​ sy:内核空间

​ ni:调整nice时间

​ id:空闲

​ wa:等待IO时间

​ hi:硬中断

​ si:软中断(模式切换)

​ st:虚拟机偷走的时间

top命令扩展

选项:

​ -d # 指定刷新时间间隔,默认为3秒

​ -b 全部显示所有进程

​ -n # 刷新多少次后退出

​ -H 线程模式,示例:top -H -p `pidof mysqld`

htop命令:EPEL源

​ 选项:

​ -d #: 指定延迟时间;

​ -u UserName: 仅显示指定用户的进程

​ -s COLUME: 以指定字段进行排序

​ 子命令:

​ s:跟踪选定进程的系统调用

​ l:显示选定进程打开的文件列表

​ a:将选定的进程绑定至某指定CPU核心

​ t:显示进程树


内存空间管理

查看内存空间的使用状态:

free [OPTION]

​ -b 以字节为单位

​ -m 以MB为单位

​ -g 以GB为单位

​ -h 易读格式

​ -o 不显示-/+buffers/cache行

​ -t 显示RAM + swap的总和

​ -s n 刷新间隔为n秒

​ -c n 刷新n次后即退出

free命令中参数的意义:


内存工具

vmstat命令

vmstat命令:

​ 查看虚拟内存信息

​ vmstat [options]/[delay [count]]

​ vmstat 2 5

vmstat参数:

procs:

​ r:可运行(正运行或等待运行)进程的个数,和核心数有关

​ b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)

memory:

​ swpd: 交换内存的使用总量

​ free:空闲物理内存总量

​ buffer:用于buffer的内存总量

​ cache:用于cache的内存总量

swap:

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

​ so:从内存交换至磁盘的数据速率(kb/s) 内存工具

io:

​ bi:从块设备读入数据到系统的速率(kb/s)

​ bo: 保存数据至块设备的速率

system:

​ in: interrupts 中断速率,包括时钟

​ cs: context switch 进程切换速率

cpu:

​ us:Time spent running non-kernel code

​ sy: Time spent running kernel code

​ id: Time spent idle. Linux 2.5.41前,包括IO-wait time.

​ wa: Time spent waiting for IO. 2.5.41前,包括in idle.

​ st: Time stolen from a virtual machine. 2.6.11前, unknown.

选项:

​ -s: 显示内存的统计数据

其他内存工具

iostat:统计CPU和设备IO信息

​ 示例:iostat 1 10

pmap命令:进程对应的内存映射

pmap [options] pid […]

​ -x: 显示详细格式的信息

​ 示例:pmap 1

另外一种实现:

​ cat /proc/PID/maps


系统监控工具

glances 命令

glances属于第三方EPEL源中的工具

glances [-bdehmnrsvyz1]/[-B bind]/[-c server]/[-C conffile]/[-p port]/[-P password]/[– password]/[-t refresh]/[-f file]/[-o output]

内建命令:

a Sort processes automatically l Show/hide logs

c Sort processes by CPU% b Bytes or bits for network I/O

m Sort processes by MEM% w Delete warning logs

p Sort processes by name x Delete warning and critical logs

i Sort processes by I/O rate 1 Global CPU or per-CPU stats

d Show/hide disk I/O stats h Show/hide this help screen

f Show/hide file system stats t View network I/O as combination

n Show/hide network stats u View cumulative network I/O

s Show/hide sensors stats q Quit (Esc and Ctrl-C also work)

y Show/hide hddtemp stats

部分选项解释:

​ -b: 以Byte为单位显示网卡数据速率

​ -d: 关闭磁盘I/O模块

​ -f /path/to/somefile: 设定输入文件位置

​ -o {HTML|CSV}:输出格式

​ -m: 禁用mount模块

​ -n: 禁用网络模块

​ -t #: 延迟时间间隔

​ -1:每个CPU的相关数据单独显示

*C/S模式下运行glances命令 *

服务器模式:

​ glances -s -B IPADDR

​ IPADDR: 指明监听的本机哪个地址

客户端模式:

​ glances -c IPADDR

​ IPADDR:要连入的服务器端地址

dstat 命令

dstat命令:系统资源统计,代替vmstat,iostat,需要使用yum安装

dstat [-afv]/[options..]/[delay [count]]

​ -c 显示cpu相关信息

​ -C #,#,…,total

​ -d 显示disk相关信息

​ -D total,sda,sdb,…

​ -g 显示page相关统计数据

​ -m 显示memory相关统计数据

​ -n 显示network相关统计数据

​ -p 显示process相关统计数据

​ -r 显示io请求相关的统计数据

​ -s 显示swapped相关的统计数据

​ –tcp

​ –udp

​ –unix

​ –raw

​ –socket

​ –ipc

​ –top-cpu:显示最占用CPU的进程

​ –top-io: 显示最占用io的进程

​ –top-mem: 显示最占用内存的进程

​ –top-latency: 显示延迟最大的进程

iotop

iotop命令是一个用来监视磁盘I/O使用状况的top类工具iotop具有与top相似的UI,其中包括 PID、用户、I/O、进程等相关信息,可查看每个进程是如何使用IO

iotop输出

​ 第一行:Read和Write速率总计

​ 第二行:实际的Read和Write速率

​ 第三行:

​ 参数如下:

​ 线程ID(按p切换为进程ID)

​ 优先级

​ 用户

​ 磁盘读速率

​ 磁盘写速率

​ swap交换百分比

​ IO等待所占的百分比

​ 线程/进程命令

iotop 常用参数

​ -o, –only只显示正在产生I/O的进程或线程,除了传参,可以在运行过程中按o 生效

​ -b, –batch非交互模式,一般用来记录日志

​ -n NUM, –iter=NUM设置监测的次数,默认无限。在非交互模式下很有用

​ -d SEC, –delay=SEC设置每次监测的间隔,默认1秒,接受非整形数据例如1.1

​ -p PID, –pid=PID指定监测的进程/线程

​ -u USER, –user=USER指定监测某个用户产生的I/O

​ -P, –processes仅显示进程,默认iotop显示所有线程

​ -a, –accumulated显示累积的I/O,而不是带宽

​ -k, –kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本 编程有用

​ -t, –time 加上时间戳,非交互非模式

​ -q, –quiet 禁止头几行,非交互模式,有三种指定方式

​ -q 只在第一次监测时显示列名

​ -qq 永远不显示列名

​ -qqq 永远不显示I/O汇总

iotop 交互按键

​ left和right方向键:改变排序

​ r:反向排序

​ o:切换至选项–only

​ p:切换至–processes选项

​ a:切换至–accumulated选项

​ q:退出

​ i:改变线程的优先级

lsof

Lsof:list open files查看当前系统文件的工具。在linux环境下,一切皆文件,用户通 过文件不仅可以访问常规数据,还可以访问网络连接和硬件如传输控制协议 (TCP) 和 用户数据报协议 (UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符

命令参数

​ -a:列出打开文件存在的进程

​ -c<进程名>:列出指定进程所打开的文件

​ -g:列出GID号进程详情

​ -d<文件号>:列出占用该文件号的进程

​ +d<目录>:列出目录下被打开的文件

​ +D<目录>:递归列出目录下被打开的文件

​ -n<目录>:列出使用NFS的文件

​ -i<条件>:列出符合条件的进程(4、6、协议、:端口、 @ip )

​ -p<进程号>:列出指定进程号所打开的文件

​ -u:列出UID号进程详情

​ -h:显示帮助信息

​ -v:显示版本信息。

​ -n: 不反向解析网络名字

进程管理

查看由登陆用户启动而非系统启动的进程

​ lsof /dev/pts1

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

​ 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 -n

​ 通过参数-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指定协议状态通过多个参数可以 清晰的查看网络连接情况、协议连接情况等

恢复删除文件

​ lsof |grep /var/log/messages

​ rm -f /var/log/messages

​ lsof |grep /var/log/messages

​ cat /proc/653/fd/6

​ cat /proc/653/fd/6 > /var/log/messages