程序占用swap详细情况查看

[[email protected] myfile]# cat check_swap.sh 
#!/bin/bash
  
echo -e `date +%y%m%d%H%M`
echo -e "PID\t\tSwap\t\tProc_Name"
# 拿出/proc目录下所有以数字为名的目录(进程名是数字才是进程,其他如sys,net等存放的是其他信息)
for pid in `ls -l /proc | grep ^d | awk ‘{ print $8 }‘| grep -v [^0-9]`
do
    
# 让进程释放swap的方法只有一个:就是重启该进程。或者等其自动释放。放
# 如果进程会自动释放,那么我们就不会写脚本来找他了,找他都是因为他没有自动释放。
# 所以我们要列出占用swap并需要重启的进程,但是init这个进程是系统里所有进程的祖先进程
# 重启init进程意味着重启系统,这是万万不可以的,所以就不必检测他了,以免对系统造成影响。
    if [ $pid -eq 1 ];then continue;fi
        grep -q "Swap" /proc/$pid/smaps 2>/dev/null
    if [ $? -eq 0 ];then
        swap=$(grep Swap /proc/$pid/smaps             | gawk ‘{ sum+=$2;} END{ print sum }‘)
        proc_name=$(ps aux | grep -w "$pid" | grep -v grep             | awk ‘{ for(i=11;i<=NF;i++){ printf("%s ",$i); }}‘)
        if [ $swap -gt 0 ];then
            echo -e "${pid}\t${swap}\t${proc_name}"
        fi
    fi
done | sort -k2 -n | awk -F ‘\t‘ ‘{
        pid[NR]=$1;
        size[NR]=$2;
        name[NR]=$3;
}
END{
        for(id=1;id<=length(pid);id++)
        {
          if(size[id]<1024)
                printf("%-10s\t%15sKB\t%s\n",pid[id],size[id],name[id]);
          else if(size[id]<1048576)
                printf("%-10s\t%15.2fMB\t%s\n",pid[id],size[id]/1024,name[id]);
          else
                printf("%-10s\t%15.2fGB\t%s\n",pid[id],size[id]/1048576,name[id])
        }
}‘

linux下查看swap分区被哪些进程占用实现脚本 :http://blog.chinaunix.net/uid-16987232-id-4071984.html

时间: 2024-10-29 15:19:17

程序占用swap详细情况查看的相关文章

查看程序占用tomcat内存情况

近期,公司线上tomcat常常无缘无辜宕机.总结了一下定位问题的方法,仅供參考: 报错信息: Maximum number of threads (200) created for connector with address null and port 9443 # There is insufficient memory for the Java Runtime Environment to continue. # Cannot create GC thread. Out of system

Windows下查看端口被程序占用的方法

有时安装程序时,会出现XX端口被占用的情况,可以通过CMD命令查看什么程序占用 1. netstat -ano 查看相应端口对应程序的PID 例如: C:\>netstat -ano Active Connections Proto Local Address          Foreign Address        State           PID TCP    0.0.0.0:135            0.0.0.0:0              LISTENING     

I.MX6 查看baudrate确定是否被其他程序占用

/*********************************************************************** * I.MX6 查看baudrate确定是否被其他程序占用 * 说明: * 最近UART口出现了不正常的现象,于是想通过在驱动层的baudrate设置的 * 地方对来确认这件事. * * 2016-7-28 深圳 南山平山村 曾剑锋 ************************************************************

Windows 查看程序占用的端口

一. 查看所有进程占用的端口  在开始-运行-cmd,输入:netstat –ano可以查看所有进程 二.查看占用指定端口的程序  当你在用tomcat发布程序时,经常会遇到端口被占用的情况,我们想知道是哪个程序或进程占用了端口,可以用该命令 netstat –ano|findstr “指定端口号” 二.查看占用指定端口的程序 当你在用tomcat发布程序时,经常会遇到端口被占用的情况,我们想知道是哪个程序或进程占用了端口,可以用该命令 netstat –ano|findstr “指定端口号”

windows下查看特定端口被什么程序占用

我电脑上因为命令: netstat -ano 列出的太多了,所以不好看. 以下是其他方式: 查看8088端口占用情况: 开始---->运行---->cmd,或者是window+R组合键,调出命令窗口 1.执行: netstat -aon|findstr "8088" 看到了pid是32236,此时要么通过windows任务管理器,要么执行: tasklist|findstr "32236" 都可以定位到是哪个应用程序占用了8088端口,我的是优酷占用了.

ubuntu下查看服务器的CPU详细情况

https://www.cnblogs.com/liuq/p/5623565.html 全面了解 Linux 服务器 - 1. 查看 Linux 服务器的 CPU 详细情况 ubuntu下查看服务器的CPU详细情况 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间:2017/12/11 14:08 版本:V1.0 Posted on 2016-06-28 15:16 刘[小]倩 阅读(681) 评论(0) 编辑 收藏 1. 查看 Linux 服务器的 C

查看进程占用的内存情况

可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看java用户的进程内存使用情况的话可以使用如下的命令: (1)top top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看tomcat用户的进程内存使用情况的话可以使用如下的命令: $ top -u tomcat 内容解释: PID:进程的ID    US

端口占用(如何查看端口被哪个程序占用)

1.win+R或直接打开任务栏和开始菜单(电脑左下); 2.键入   cmd ,Enter: 3.输入   netstat -ano 4.查看你想了解的端口以及对应的PID 5,输入  netstat -aon|findstr +PID即可 演示:查看25号端口被哪个程序占用 第一步 开始->运行 第二步 输入netstat -ano 发现 25 号端口的PID为 8560 第三步 输入 netstat -aon|findstr 8560

.net 禁止远程查看应用程序错误的详细信息,服务器上出现应用程序错误

打开页面时出现以下错误 ? "/"应用程序中的服务器错误. 运行时错误 说明:?服务器上出现应用程序错误.此应用程序的当前自定义错误设置禁止远程查看应用程序错误的详细信息(出于安全原因).但可以通过在本地服务器计算机上运行的浏览器查看.? 详细信息:?若要使他人能够在远程计算机上查看此特定错误消息的详细信息,请在位于当前 Web 应用程序根目录下的"web.config"配置文件中创建一个 <customErrors> 标记.然后应将此 <cust