Linux 下查看内存问题

free 查看内存使用

free — 查看内存使用情况

# total共多少,used已使用多少,free空闲多少,buff/cache磁盘缓存多少,available可用多少
# -m 输出结果使用 MB(兆字节)显示。默认是 KB(千字节)
[root@VM-0-11-ubuntu /home/ubuntu/alluxio]$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3935        2055         118           2        1761        1626
Swap:             0           0           0
  • free 是真实未被使用的物理内存大小

  • available 是应用程序可用内存大小。

a v a i l a b l e = f r e e + b u f f e r + c a c h e ( 可 回 收 缓 存 ) available = free + buffer + cache(可回收缓存) available=free+buffer+cache

top 实时查看进程运行情况

top — 实时查看进程占用内存和cpu情况

某个时刻的运行如下图:

image-20220321141640180

参数意义如下:

top - 时间 up 9 days,  1:47,  几个用户,  load average(系统负载,任务队列的平均长度): 0.00(1分钟-现在), 0.01(5分钟-现在), 0.00(15分钟-现在)
Tasks任务/进程: 119 total(共), 1 running(运行中), 118 sleeping(睡眠中), 0 stopped(终止),   0 zombie(僵尸进程)
%Cpu(s)(占用cpu百分比):  0.7 us(用户空间占用),  0.5 sy(系统空间占用),  0.0 ni(用户空间中改变过优先级的进程), 98.8 id(空闲cpu),  0.0 wa(I/O等待),  0.0 hi(硬中断),  0.0 si(软中断),  0.0 st
MiB Mem(内存) : 3935.5 total,    117.7 free,   2055.5 used,   1762.4 buff/cache
MiB Swap(交换区):   0.0 total,      0.0 free,      0.0 used.   1626.6 avail Mem 

#(实时进程运行情况)
[进程id][用户]  [优先级][nice值] [虚拟内存] [常驻内存] [共享内存] [进程状态] 
[cpu占用比] [内存占用比] [运行时间] [进程名/命令名]
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                     
1490 root      20   0 1025016  81428  19296 S   1.3   2.0 238:10.99 YDService                                                   
11 root      20   0       0      0      0 I   0.3   0.0   2:47.02 rcu_sched           

其中,有一个进程,kswapd0 进程,是一个虚拟内存中负责交换页的进程,如果该进程占用cpu过高,说明系统正在进行频繁的换入换出。一般是由于物理内存(非硬盘容量)不够用而导致的。

ps 查看进程占用的cpu和内存

ps — 查看进程占用的cpu和内存

# aux 使用BSD格式显示
ps -aux

例子:查看占用内存最多的5个进程

# 查看进程,按照第4列降序,然后取前5个
ps -aux | sort -k4rn | head -5

pstree 查看进程关系

pstree — 以树状的形式查看进程之间的关系

根据子进程查看父进程,可以用以下命令:

# 方案一:只能显示当前子线程的直接父进程
cat /proc/[pid]/status  # 显示结果中pid 是当前进程,ppid 是父进程
# 方案二:显示进程树
pstree -aps [pid]
pstree -aps [pid] | less  # 配合上下箭头查看,按 q 退出查看
  • -p :显示每个进程的 pid
  • -a :相同名称的进程不会合并显示
  • -s :显示当前子线程的父进程

举个例子:

命令 cat /proc/[pid]/status 的执行结果如下:

20220321155109

命令 pstree -aps [pid] 的执行结果如下:

image-20220321155400551

kill 杀死进程

kill 命令,用于杀死进程。

kill -9 [pid]  # 强制杀死进程。等价于 kill -KILL [pid]
kill -15 [pid]  # 正常杀死一个进程。等价于 kill -TERM [pid]

# pkill 可加信号参数。使用 pgrep 筛选,避免杀错。
pkill [进程名,可部分] | pgrep -l [进程名]
# 按照终端号踢出用户
pkill -t [终端号] 进程名  # pkill -9 -t pts/1 强制提踢出从 pts/1 终端登录的用户

killall [进程名,全名]

# pgrep -l [进程名] 筛选出包含进程名的所有进程名及其pid

# pgrep [进程部分名] 
# pidof [进程全名]
# 以上两个命令可以直接获取pid

kill -19 [pid]  # 让进程暂停
kill -18 [pid]  # 让进程继续
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值