linux所有内存监控,Linux 内存监控

搜索热词

centos6 init进程是系统中的第一个进程,PID永远为1

查看系统在中静态进程的统计信息

命令: ps

格式: ps [可选项]

ax: 显示所有的进程信息

-u: 使用以用户为主的格式输出进程信息

-e: select all processes 显示系统内的进程信息

-l: 使用长格式显示进程信息

-f: full 使用完整的格式显示进程信息

补充: ps -eo pid,args,psr 可以查看系统上进程的 pid 命令参数 已经占用的哪个cpu

ps aux命令

[root@ecs-t6-large-2-linux-20190824103606 tmp]# ps aux

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

root 1 0.0 0.1 125568 3984 ? Ss Sep04 0:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

root 2 0.0 0.0 0 0 ? S Sep04 0:00 [kthreadd]

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

解析

USER: 进程所属的用户

PID: 进程id

%cpu: 进程占用cpu的百分比

%MEM: 进程占用内存的百分比

VSZ: 进程使用的虚拟内存量

RSS: 进程占用的物理内存容量

TTY: 进程在哪个终端上运行

STAT: 进程状态

START: 进程启动时间

TIME: 进程实际占用cpu的时间

COMMAND: 命令名称和参数

ps -elf命令

[root@ecs-t6-large-2-linux-20190824103606 tmp]# ps -elf

F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD

4 S root 1 0 0 80 0 - 31392 ep_pol Sep04 ? 00:00:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

1 S root 2 0 0 80 0 - 0 kthrea Sep04 ? 00:00:00 [kthreadd]

1 S root 3 2 0 80 0 - 0 smpboo Sep04 ? 00:00:00 [ksoftirqd/0]

1 S root 5 2 0 60 -20 - 0 worker Sep04 ? 00:00:00 [kworker/0:0H]

F : 进程的flag,4代表使用者,super user

S : 进程的用户

PPID : 父进程

C: cpu的利用率

PRI : Priority 优先级

NI : Nice

PRI/NI : 进程被cpu执行的优先级,值越小,越容易被执行

ADDR: 进程内存的地址

SZ: 占用的内存大小

WCHAN: 是否正在运作

CMD: 命令名称和参数

查看动态的进程排名信息

top命令

P:按%cpu排序

M:按%MEM排序

1: 多核的话,按1,可以显示出全部cpu

空格:马上刷新

默认每三秒就刷新一次

每隔一秒刷新一次

top -d 1

top 字段解析

top - 20:31:56 up 10 days,5:03,1 user,load average: 0.00,0.01,0.05

当前时间 系统运行的时间 在线人数 系统负载 : 任务队列的平均长度

# 使用w 或 uptime 可以查看到同样的信息

Tasks: 81 total,1 running,80 sleeping,0 stopped,0 zombie

%cpu(s): 3.2 us,0.0 sy,0.0 ni,96.8 id,0.0 wa,0.0 hi,0.0 si,0.0 st

total 进程总数81 正在运行1个进程 80个在休眠 0个停止了 0个僵尸进程数

3.2 us : 用户空间占用cpu百分比3.2

0.0 sy : 内核空间占用cpu的百分百

0.0 ni : 用户空间内改变过优先级的进程占用cpu的百分比

96.8 id: 空闲的cpu百分比

0.0 wa: 等待输入输出的进程占用cpu 的百分比

0.0 hi: 硬件cpu占用百分比

0.0 si: 软中断占用cpu百分比

0.0 st: 虚拟机占有cpu百分比

KiB Mem : 3880020 total,601516 free,1553552 used,1724952 buff/cache

KiB Swap: 0 total,0 free,0 used. 2045092 avail Mem

Mem 内存 总共3880020k 物理内存容量 空闲内存容量=601516 已经使用:used=1553552 缓存=1724952

Swap: 交换区总量0

PID USER PR NI VIRT RES SHR S %cpu %MEM TIME+ COMMAND

1 root 20 0 125568 3984 2628 S 0.0 0.1 0:05.14 systemd

PID: 进程id

USER: 优先级

PR: 优先级

NI: 负数表示高优先级,正数表示低优先级

VIRT: 进程使用的虚拟内存数

RES: 进程使用的未被换出的物理内存大小

SHR: 共享内存量

S: 进程状态

%cpu: 使用的cpu百分比

@MEN: 使用的物理内存百分比

TIME+ : 使用的cpu时间总计

COMMAND : 命令名

加入nice值后,PRI(新) = PRI(老) + nice

root,可以设置的范围是 [-20 19]

普通用户,可以设置的范围是 [0 19]

以树型结构显示各进程间的关系

命令: pstree

[root@ecs-t6-large-2-linux-20190824103606 tmp]# pstree

systemd─┬─NetworkManager─┬─dhclient

│ └─2*[{NetworkManager}]

├─agetty

├─atd

├─auditd───{auditd}

├─crond

├─dbus-daemon

├─dockerd-current─┬─docker-containe───10*[{docker-containe}]

│ └─10*[{dockerd-current}]

├─irqbalance

├─java───49*[{java}]

├─lvMetad

├─master─┬─pickup

│ └─qmgr

├─ntpd

├─polkitd───6*[{polkitd}]

├─python

├─rsyslogd───2*[{rsyslogd}]

├─sshd───sshd───bash───pstree

├─systemd-journal

├─systemd-logind

├─systemd-udevd

├─tuned───4*[{tuned}]

└─wrapper─┬─java───14*[{java}]

└─{wrapper}

进程优先级设置

niceness:表示进程可被执行的优先级的修正数值 ,可手工修改,与priority有关

优先级有正负之分(-20 ~ 19)

加入nice值后 PRI(新) = PRI(老) + nice

root可以设置nice值范围(-20 ~ 19)

普通用户可以设置nice值范围(0 ~ 19)

用nice命令新的nice(新开启的进程)

以新的nice来启动命令

nice -10 vi & 设置nice值为10

nice --10 vi & 设置nice值为-10

用renice命令设置新nice(已经存在的进程)

renice 10 15132 设置nice值为10

renice -10 15132 设置nice值为-10

renice命令。renice -n 2 -p 3432。-n,后面是优先级的值;-p,是进程号。

用top命令修改进程的优先级

先输入r,然后输入pid,最后输入优先级

后台运行

需要在命令行后添加&符号

如何让 jar包后台运行?

nohup java -jar xxx.jar &

退出 exit

信号 kill

kill命令用来发送信号,是进程间通信机制中唯一的异步通信机制

进程接收到信号后,采取其他动作,常用它杀死进程

信号值

符号

行为

2

sigint (interrupt)

ctrl + c

9

sigkill (强制杀死进程)

请求终止,不能忽略

15

sigterm ( terminate终止)

请求终止 默认值

20

sigtstp (stop,挂起进程,放到后台执行)

ctrl + z

强制杀死进程

kill -9 pid

有时候直接 kill pid 却杀不掉这个进程,说明他屏蔽了默认值

杀死终端

实现强制下线用户

pkill [选项]

-u: 根据进程所属的用户名,杀死进程

-t: 根据用户所在的终端 TTY杀死进程

[root@localhost ~]# w | grep -v "root"

14:10:10 up 6:08,4 users,0.00

USER TTY FROM LOGIN@ IDLE Jcpu Pcpu WHAT

teacher tty1 - 14:04 5:34 0.16s 0.16s -bash

hack pts/1 173.17.17.174 14:05 4:32 0.17s 0.17s -bash

[root@localhost ~]# pkill -9 -t pts/1

[root@localhost ~]# w | grep -v "root"

14:12:22 up 6:10,3 users,0.00,0.00

USER TTY FROM LOGIN@ IDLE Jcpu Pcpu WHAT

teacher tty1 - 14:04 7:46 0.16s 0.16s -bash

显示物理内存和交换空间的使用情况

命令: free

-m: 用MB的形式显示内存信息

-h: human readable

[root@ecs-t6-large-2-linux-20190824103606 ~]# free -h

total used free shared buff/cache available

Mem: 3.7G 1.4G 636M 8.6M 1.6G 2.0G

Swap: 0B 0B 0B

从用户的角度来说,可用的空间就是 free + buff/cache

buff/cache 会随着系统负载的增大而减小,释放掉缓存的空间,更多的IO直接针对磁盘操作,系统会变慢

内存监控

系统内存信息在这个文件记录 /proc/meminfo

释放内存

/proc是一个特殊文件系统,我们可以通过对它的读写操作,来作为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存

往 /proc/sys/vm/drop_caches 分别写入1,2,3

页面缓存(page cache)可以包含磁盘块的任何内存映射

echo 1 > /proc/sys/vm/drop_caches;

inode是表示文件的数据结构

echo 2 > /proc/sys/vm/drop_caches;

dentries是表示目录的数据结构 。

echo 3 > /proc/sys/vm/drop_caches.

总结

以上是编程之家为你收集整理的Linux 内存监控全部内容,希望文章能够帮你解决Linux 内存监控所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值