查看Linux进程占用的资源
- 格式:docx
- 大小:22.26 KB
- 文档页数:6
查看Linux系统内存、CPU、磁盘使⽤率和详细信息⼀、查看内存占⽤1、free# free -m以MB为单位显⽰内存使⽤情况[root@localhost ~]# free -mtotal used free shared buff/cache availableMem: 118521250866841019349873Swap: 601506015# free -h以GB为单位显⽰内存使⽤情况[root@localhost ~]# free -htotal used free shared buff/cache availableMem: 11G 1.2G 8.5G 410M 1.9G 9.6GSwap: 5.9G 0B 5.9G# free -t以总和的形式查询内存的使⽤信息[root@localhost ~]# free -ttotal used free shared buff/cache availableMem: 1213733212853448870628420268198136010105740Swap: 616038006160380Total: 18297712128534415031008# free -s 5周期性的查询内存使⽤信息每5秒执⾏⼀次命令[root@localhost ~]# free -s 5total used free shared buff/cache availableMem: 1213733212807968875008420268198152810110136Swap: 616038006160380解释:Mem:内存的使⽤情况总览表(物理内存)Swap:虚拟内存。
即可以把数据存放在硬盘上的数据shared:共享内存,即和普通⽤户共享的物理内存值buffers:⽤于存放要输出到disk(块设备)的数据的cached:存放从disk上读出的数据total:机器总的物理内存used:⽤掉的内存free:空闲的物理内存注:物理内存(total)=系统看到的⽤掉的内存(used)+系统看到空闲的内存(free)2、查看某个pid的物理内存使⽤情况# cat /proc/PID/status | grep VmRSS[root@localhost ~]# pidof nginx2732727326[root@localhost ~]#[root@localhost ~]# cat /proc/27327/status | grep VmRSSVmRSS: 2652 kB[root@localhost ~]#[root@localhost ~]# cat /proc/27326/status | grep VmRSSVmRSS: 1264 kB[root@localhost ~]#[root@localhost ~]# pidof java1973[root@localhost ~]# cat /proc/1973/status | grep VmRSSVmRSS: 1166852 kB由上⾯可知,nginx服务进程的两个pid所占物理内存为"2652+1264=3916k"3、查看本机所有进程的内存占⽐之和# cat mem_per.sh[root@localhost ~]# cat mem_per.sh#!/bin/bashps auxw|awk '{if (NR>1){print $4}}' > /opt/mem_listawk '{MEM_PER+=$1}END{print MEM_PER}' /opt/mem_list[root@localhost ~]#[root@localhost ~]# chmod755 mem_per.sh[root@localhost ~]#[root@localhost ~]# sh mem_per.sh64.4[root@localhost ~]#脚本配置解释:ps -auxw|awk '{print $3}' 表⽰列出本机所有进程的cpu利⽤率情况,结果中第⼀⾏带"%CPU"字符ps -auxw|awk '{print $4}' 表⽰列出本机所有进程的内存利⽤率情况,结果中第⼀⾏带"%MEM"字符ps auxw|awk '{if (NR>1){print $4}} 表⽰将"ps auxw"结果中的第⼀⾏过滤(NR>1)掉,然后打印第4⾏⼆、查看CPU使⽤情况1、toptop后键⼊P看⼀下谁占⽤最⼤# top -d 5周期性的查询CPU使⽤信息每5秒刷新⼀次top - 02:37:55 up 4 min, 1 user, load average: 0.02, 0.10, 0.05Tasks: 355 total, 1 running, 354 sleeping, 0 stopped, 0 zombie%Cpu(s): 3.0 us, 2.8 sy, 0.0 ni, 94.2id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st# us:表⽰⽤户空间程序的cpu使⽤率(没有通过nice调度)# sy:表⽰系统空间的cpu使⽤率,主要是内核程序。
Linux查看CPU和内存使⽤情况top命令 top命令是Linux下常⽤的性能分析⼯具,能够实时显⽰系统中各个进程的资源占⽤状况,类似于Windows的任务管理器。
运⾏ top 命令后,CPU 使⽤状态会以全屏的⽅式显⽰,并且会处在对话的模式 -- ⽤基于 top 的命令,可以控制显⽰⽅式等等。
退出 top 的命令为 q (在 top 运⾏中敲 q 键⼀次)。
内容解释:第⼀⾏(top): 15:24:36 系统当前时刻 14 days 系统启动后到现在的运作时间 3 users 当前登录到系统的⽤户,更确切的说是登录到⽤户的终端数 -- 同⼀个⽤户同⼀时间对系统多个终端的连接将被视为多个⽤户连接到系统,这⾥的⽤户数也将表现为终端的数⽬ load average 当前系统负载的平均值,后⾯的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,⼀般的可以认为这个数值超过 CPU 数⽬时,CPU 将⽐较吃⼒的负载当前系统所包含的进程第⼆⾏(Tasks): 288 total 当前系统进程总数 1 running 当前运⾏中的进程数 287 sleeping 当前处于等待状态中的进程数 0 stoped 被停⽌的系统进程数 0 zombie 僵⼫进程数第三⾏(Cpus): 7.3% us ⽤户空间占⽤CPU百分⽐ 2.0% sy 内核空间占⽤CPU百分⽐ 0.0% ni ⽤户进程空间内改变过优先级的进程占⽤CPU百分⽐ 90.4% id 空闲CPU百分⽐ 0.3% wa 等待输⼊输出的CPU时间百分⽐ 0.0% hi 0.0% si 0.0% st第四⾏(Mem): 2042616 total 物理内存总量 1770116 used 使⽤的物理内存总量 272500 free 空闲内存总量 163912 buffers ⽤作内核缓存的内存量第五⾏(Swap):表⽰类别同第四⾏(Mem),但此处反映着交换分区(Swap)的使⽤情况。
Linux终端命令系统资源占用情况查看在Linux操作系统中,终端命令可以帮助我们查看系统资源的占用情况,从而更好地管理和优化系统性能。
本文将介绍一些常用的Linux终端命令,用于查看系统资源占用情况。
1. top命令top命令是一个非常常用的命令,可以实时监控系统的运行情况。
通过输入top命令,我们可以查看当前系统中各个进程的资源占用情况,包括CPU、内存、Swap等。
在top界面下,按下“Shift+M”可以按照内存占用情况进行排序,按下“Shift+P”可以按照CPU占用情况进行排序。
2. free命令free命令可以查看系统的内存使用情况。
通过输入free命令,我们可以获取系统的物理内存、已使用的内存、空闲的内存,以及Swap区的使用情况。
命令输出中的"-/+ buffers/cache"表示已经使用的内存不仅包括实际使用的内存,还包括系统缓存的内存。
3. vmstat命令vmstat命令可以提供关于系统虚拟内存、进程、内存、I/O等方面的统计信息。
通过输入vmstat命令,我们可以实时查看系统的运行状况。
命令输出中的"r"表示等待CPU时间片的进程数量,"us"表示用户级别的CPU占用率,"sy"表示内核级别的CPU占用率,"wa"表示等待I/O操作的CPU占用率。
4. iostat命令iostat命令用于查看系统的I/O设备的使用情况。
通过输入iostat命令,我们可以查看磁盘IO、虚拟内存、CPU利用率等统计信息。
命令输出中的"tps"表示每秒钟的传输次数,"r/s"表示每秒钟的读操作次数,"w/s"表示每秒钟的写操作次数,"%util"表示设备的利用率。
5. df命令df命令用于查看系统的磁盘空间使用情况。
linux top命令cpu总占用率计算在Linux中,使用top命令查看系统状态时,可以看到每个进程的CPU占用率。
要计算CPU总占用率,可以使用以下方法:1. 使用top命令:当你在Linux上打开终端并输入top命令时,你将看到一个动态更新的屏幕,其中显示了系统中各个进程的资源占用情况。
在顶部,你会看到一个标题栏,其中包含各种系统统计信息,如“Tasks”(任务)、“Cpu(s)”(CPU)、“Mem”(内存)和“Swap”(交换空间)。
要查看CPU总占用率,请关注标题栏中与“Cpu(s)”相关的列。
该列会显示如下信息:us:用户空间占用的CPU百分比。
sy:系统空间占用的CPU百分比。
ni:更改过优先级的进程占用的CPU百分比。
id:空闲的CPU百分比。
wa:等待I/O操作的CPU百分比。
hi:处理硬件中断的CPU百分比。
si:处理软件中断的CPU百分比。
st:虚拟化环境中被偷走的CPU时间百分比。
要计算CPU总占用率,你需要将“us”和“sy”列的值相加。
例如,如果“us”是40%,而“sy”是30%,那么CPU总占用率就是70%。
2. 注意:这只是显示在top命令输出中的所有进程的总计值,它并不是系统作为一个整体的CPU使用率。
如果有大量用户空间和系统空间的进程同时运行,总计值可能会很高。
“us”和“sy”列表示的是进程级的CPU占用率,而实际的系统级CPU占用率可能受到其他因素的影响,如内核线程、I/O等待等。
3. 其他工具:除了top命令之外,还有许多其他工具可以帮助你监视和管理Linux系统上的性能,如htop、glances等。
这些工具可能提供更多关于CPU和其他资源使用情况的详细信息。
请注意,这些工具和命令可能需要root权限才能完全访问系统信息。
linux一些常用的查看资源使用命令常用的查看资源使用命令:Linux作为一种常用的操作系统,提供了许多命令来查看系统资源的使用情况,这些命令可以帮助我们了解系统的负载情况、资源的分配以及进程的运行状态等。
下面介绍一些常用的查看资源使用的命令。
1. top命令top命令是一个动态的系统监视器,可以实时显示系统的整体资源使用情况以及各个进程的状态。
在终端中输入top命令后,会显示一个实时更新的进程列表,包括进程的PID、CPU使用率、内存使用率等信息。
通过按键可以对进程进行排序,方便查看系统中资源占用较高的进程。
2. free命令free命令用于显示系统内存的使用情况。
运行free命令后,会显示系统的总内存、已使用内存、空闲内存以及缓冲区和缓存的使用情况。
通过这些信息,我们可以了解系统的内存使用情况,及时调整资源分配。
3. vmstat命令vmstat命令用于显示系统的虚拟内存、进程、CPU活动等信息。
运行vmstat命令后,会显示系统的CPU利用率、内存使用情况、进程的等待状态以及虚拟内存的使用情况。
通过这些信息,我们可以了解系统的整体性能情况,及时发现并解决问题。
4. iostat命令iostat命令用于显示系统的磁盘和IO设备的使用情况。
运行iostat 命令后,会显示各个磁盘的读写速度、IO请求队列的长度以及CPU 的等待IO的时间等信息。
通过这些信息,我们可以了解系统的磁盘IO性能,及时进行优化和调整。
5. df命令df命令用于显示系统的磁盘空间使用情况。
运行df命令后,会显示系统中每个文件系统的总空间、已使用空间、可用空间以及使用率等信息。
通过这些信息,我们可以了解系统磁盘空间的使用情况,及时进行清理或扩容。
6. du命令du命令用于统计文件或目录的磁盘使用情况。
运行du命令后,会显示指定文件或目录的总大小以及子目录的大小。
通过这些信息,我们可以了解文件或目录的磁盘占用情况,及时进行清理或迁移。
linux查看服务器负载和资源占用情况的常用命令在Linux系统中,有多种命令可以用来查看服务器的负载和资源占用情况。
这些命令包括:1. top:这是一个动态显示进程信息的命令,可以实时查看系统的整体负载和各个进程的资源占用情况。
在top命令的界面中,可以看到CPU占用率、内存占用率、进程数等信息,并且可以通过交互式操作来进行排序、过滤等操作。
2. htop:这是一个增强版的top命令,提供了更加丰富的信息和更友好的界面。
htop支持垂直和水平滚动,以便查看所有进程的完整命令行参数。
此外,htop还支持自定义颜色、排序规则等设置。
3. vmstat:这个命令用于显示系统的虚拟内存统计信息,包括进程、内存、分页、块IO、陷阱和CPU活动等方面的信息。
这些信息有助于了解系统的整体负载情况。
4. iostat:这个命令用于监视系统的输入/输出设备负载情况。
它可以显示磁盘的读写速度、I/O请求队列的长度等信息,从而帮助用户了解磁盘的性能瓶颈。
5. free:这个命令用于显示系统的内存使用情况,包括物理内存、交换内存和内核缓冲区的使用情况。
通过这个命令,用户可以了解系统的内存负载情况。
6. pidstat:这个命令用于显示进程的资源占用情况,包括CPU占用率、内存占用率、I/O操作等。
它可以用来监视单个进程的资源使用情况,以便找出资源占用较高的进程。
7. sar:这个命令用于收集、报告和保存系统活动信息,包括CPU占用率、内存使用情况、磁盘I/O等。
它可以用来分析系统在过去的时间段内的负载情况。
这些命令可以帮助用户了解服务器的负载和资源占用情况,以便进行性能优化和故障排查。
在使用这些命令时,用户可以根据具体的需求选择相应的命令和参数来获取所需的信息。
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
下面详细介绍它的使用方法。
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48 Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombieCpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 191272k total, 173656k used, 17616k free, 22052k buffersSwap: 192772k total, 0k used, 192772k free, 123988k cachedPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/03 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0统计信息区前五行是系统整体的统计信息。
第一行是任务队列信息,同 uptime 命令的执行结果。
其内容如下:01:06:48 当前时间up 1:22 系统运行时间,格式为时:分1 user 当前登录用户数load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。
Linux下查看资源消耗命令汇总--持续更新Linux下如何查看⾼CPU占⽤率线程 LINUX CPU利⽤率计算ps -eLo pid,ppid,lwp,nlwp,osz,rss,ruser,pcpu,stime,etime,args然后略作加⼯ps -eL -o pid,%cpu,lwp,args|grep 2408 | sort -r | head -n 20ps -mp pid -o THREAD,tid,timeps -mp 26178 -o THREAD,tid,time | sort -rn | more==================================查找最消耗cpu的java线程============================jps找到java进程PID命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid通过%CPU和 TIME,判断占⽤的线程TID找到TID,转换成16进制,然后在上⾯(jstack 进程id > ps.txt)导出的⽂件中搜索,就可以定位到具体的线程,类。
netstat -anp|grep 80lsof -inetstat -ntlp //查看当前所有tcp端⼝·netstat -ntulp |grep 80 //查看所有80端⼝使⽤情况·netstat -ntulp | grep 3306 //查看所有3306端⼝使⽤情况·netstat -anp|grep 8080lsof命令是什么?可以列出被进程所打开的⽂件的信息。
被打开的⽂件可以是1.普通的⽂件,2.⽬录3.⽹络⽂件系统的⽂件,4.字符设备⽂件5.(函数)共享库6.管道,命名管道7.符号链接8.底层的socket字流,⽹络socket,unix域名socket9.在linux⾥⾯,⼤部分的东西都是被当做⽂件的…..还有其他很多怎样使⽤lsof这⾥主要⽤案例的形式来介绍lsof 命令的使⽤1.列出所有打开的⽂件:lsof备注: 如果不加任何参数,就会打开所有被打开的⽂件,建议加上⼀下参数来具体定位2. 查看谁正在使⽤某个⽂件lsof /filepath/file3.递归查看某个⽬录的⽂件信息lsof +D /filepath/filepath2/备注: 使⽤了+D,对应⽬录下的所有⼦⽬录和⽂件都会被列出4. ⽐使⽤+D选项,遍历查看某个⽬录的所有⽂件信息的⽅法lsof | grep ‘/filepath/filepath2/’5. 列出某个⽤户打开的⽂件信息lsof -u username备注: -u 选项,u其实是user的缩写6. 列出某个程序所打开的⽂件信息备注: -c 选项将会列出所有以mysql开头的程序的⽂件,其实你也可以写成 lsof | grep mysql, 但是第⼀种⽅法明显⽐第⼆种⽅法要少打⼏个字符了7. 列出多个程序多打开的⽂件信息lsof -c mysql -c apache8. 列出某个⽤户以及某个程序所打开的⽂件信息lsof -u test -c mysql9. 列出除了某个⽤户外的被打开的⽂件信息lsof -u ^root备注:^这个符号在⽤户名之前,将会把是root⽤户打开的进程不让显⽰10. 通过某个进程号显⽰该进⾏打开的⽂件lsof -p 111. 列出多个进程号对应的⽂件信息lsof -p 123,456,78912. 列出除了某个进程号,其他进程号所打开的⽂件信息lsof -p ^113 . 列出所有的⽹络连接lsof -i14. 列出所有tcp ⽹络连接信息lsof -i tcp15. 列出所有udp⽹络连接信息lsof -i udp16. 列出谁在使⽤某个端⼝lsof -i :330617. 列出谁在使⽤某个特定的udp端⼝lsof -i udp:55特定的tcp端⼝lsof -i tcp:8018. 列出某个⽤户的所有活跃的⽹络端⼝lsof -a -u test -i19. 列出所有⽹络⽂件系统lsof -N20.域名socket⽂件lsof -u21.某个⽤户组所打开的⽂件信息lsof -g 555522. 根据⽂件描述列出对应的⽂件信息lsof -d description(like 2)23. 根据⽂件描述范围列出⽂件信息1、查看进程“打开”的⽂件:1)pidof programe-name(获得想了解的进程(programe-name)的PID)或ps -aux|grep programe-name(获得想了解的进程(programe-name)的PID)找出进程的PID2)cd /proc/$PID/fd(会看见⽂件描述符)3)ls -l得到⽂件描述符指向的实际⽂件,即当前进程打开的⽂件2、查看进程“打开”的⽂件2:1)获得想了解的进程的PID⽅法同上2)lsof -c programe-name或lsof -p $PID3、查看⽂件对应的进程:lsof file-name4、lsof命令⽤法:lsof -c abc 显⽰abc进程现在打开的⽂件lsof abc 显⽰开启⽂件abc的进程lsof -i :22 显⽰22端⼝现在运⾏什么程序lsof -g gid 显⽰归属gid的进程情况lsof +d /usr/local/ 显⽰⽬录下被进程开启的⽂件lsof +D /usr/local/ 同上,但是会搜索⽬录下的⽬录,时间较长lsof -d 4 显⽰使⽤fd为4的进程lsof -i ⽤以显⽰符合条件的进程情况lsof -s 列出打开⽂件的⼤⼩,如果没有⼤⼩,则留下空⽩lsof -u username 以UID,列出打开的⽂件5、查看⽹络状态:lsof -Pnl +M -i4 显⽰ipv4服务及监听端情况netstat -anp 所有监听端⼝及对应的进程netstat -tlnp 功能同上。
linux查看系统资源命令lsof -n | grep loglsof -p 进程id 能看到这个进程加载了哪些资源,连接了哪些⽂件,⾃⼰⽹络链接虽然平时⼤部分⼯作都是和Java相关的开发, 但是每天都会接触Linux系统, 尤其是使⽤了Mac之后, 每天都是⼯作在⿊⾊背景的命令⾏环境中. ⾃⼰记忆⼒不好, 很多有⽤的Linux命令不能很好的记忆, 现在逐渐总结⼀下, 以便后续查看.基本操作Linux关机,重启# 关机shutdown -h now# 重启shutdown -r now查看系统,CPU信息# 查看系统内核信息uname -a# 查看系统内核版本cat /proc/version# 查看当前⽤户环境变量envcat /proc/cpuinfo# 查看有⼏个逻辑cpu, 包括cpu型号cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c# 查看有⼏颗cpu,每颗分别是⼏核cat /proc/cpuinfo | grep physical | uniq -c# 查看当前CPU运⾏在32bit还是64bit模式下, 如果是运⾏在32bit下也不代表CPU不⽀持64bitgetconf LONG_BIT# 结果⼤于0, 说明⽀持64bit计算. lm指long mode, ⽀持lm则是64bitcat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l建⽴软连接ln -s /usr/local/jdk1.8/ jdkrpm相关# 查看是否通过rpm安装了该软件rpm -qa | grep 软件名sshkey# 创建sshkeyssh-keygen -t rsa -C your_email@#id_rsa.pub 的内容拷贝到要控制的服务器的 home/username/.ssh/authorized_keys 中,如果没有则新建(.ssh权限为700, authorized_keys权限为600)命令重命名# 在各个⽤户的.bash_profile中添加重命名配置alias ll='ls -alF'同步服务器时间sudo ntpdate -u ntp.api.bz后台运⾏命令# 后台运⾏,并且有nohup.out输出nohup xxx &# 后台运⾏, 不输出任何⽇志nohup xxx > /dev/null &# 后台运⾏, 并将错误信息做标准输出到⽇志中nohup xxx >out.log 2>&1 &强制活动⽤户退出# 命令来完成强制活动⽤户退出.其中TTY表⽰终端名称pkill -kill -t [TTY]查看命令路径which <命令>查看进程所有打开最⼤fd数ulimit -n配置dnsvim /etc/resolv.confnslookup,查看域名路由表nslookup last, 最近登录信息列表# 最近登录的5个账号last -n 5设置固定ipifconfig em1 192.168.5.177 netmask 255.255.255.0查看进程内加载的环境变量# 也可以去 cd /proc ⽬录下, 查看进程内存中加载的东西ps eww -p XXXXX(进程号)查看进程树找到服务器进程ps auwxf查看进程启动路径cd /proc/xxx(进程号)ls -all# cwd对应的是启动路径添加⽤户, 配置sudo权限# 新增⽤户useradd ⽤户名passwd ⽤户名#增加sudo权限vim /etc/sudoers# 修改⽂件⾥⾯的# root ALL=(ALL) ALL# ⽤户名 ALL=(ALL) ALL强制关闭进程名包含xxx的所有进程ps aux|grep xxx | grep -v grep | awk '{print $2}' | xargs kill -9磁盘,⽂件,⽬录相关操作vim操作#normal模式下 g表⽰全局, x表⽰查找的内容, y表⽰替换后的内容:%s/x/y/g#normal模式下0 # 光标移到⾏⾸(数字0)$ # 光标移⾄⾏尾shift + g # 跳到⽂件最后gg # 跳到⽂件头# 显⽰⾏号:set nu# 去除⾏号:set nonu# 检索/xxx(检索内容) # 从头检索, 按n查找下⼀个xxx(检索内容) # 从尾部检索打开只读⽂件,修改后需要保存时(不⽤切换⽤户即可保存的⽅式) # 在normal模式下:w !sudo tee %查看磁盘, ⽂件⽬录基本信息# 查看磁盘挂载情况mount# 查看磁盘分区信息df# 查看⽬录及⼦⽬录⼤⼩du -H -h# 查看当前⽬录下各个⽂件, ⽂件夹占了多少空间, 不会递归du -sh *wc命令# 查看⽂件⾥有多少⾏wc -l filename# 看⽂件⾥有多少个wordwc -w filename# ⽂件⾥最长的那⼀⾏是多少个字wc -L filename# 统计字节数wc -c常⽤压缩, 解压缩命令压缩命令tar czvf xxx.tar 压缩⽬录zip -r xxx.zip 压缩⽬录解压缩命令tar zxvf xxx.tar# 解压到指定⽂件夹tar zxvf xxx.tar -C /xxx/yyy/unzip xxx.zip变更⽂件所属⽤户, ⽤户组chown eagleye.eagleye xxx.logcp, scp, mkdir#复制cp xxx.log# 复制并强制覆盖同名⽂件cp -f xxx.log# 复制⽂件夹cp -r xxx(源⽂件夹) yyy(⽬标⽂件夹)# 远程复制scp -P ssh端⼝ username@10.10.10.101:/home/username/xxx /home/xxx# 级联创建⽬录mkdir -p /xxx/yyy/zzz# 批量创建⽂件夹, 会在test,main下都创建java, resources⽂件夹mkdir -p src/{test,main}/{java,resources}⽐较两个⽂件diff -u 1.txt 2.txt⽇志输出的字节数,可以⽤作性能测试# 如果做性能测试, 可以每执⾏⼀次, 往⽇志⾥⾯输出 “.” , 这样⽇志中的字节数就是实际的性能测试运⾏的次数, 还可以看见实时速率. tail -f xxx.log | pv -bt查看, 去除特殊字符# 查看特殊字符cat -v xxx.sh# 去除特殊字符sed -i 's/^M//g’ env.sh 去除⽂件的特殊字符, ⽐如^M: 需要这样输⼊: ctrl+v+enter处理因系统原因引起的⽂件中特殊字符的问题# 可以转换为该系统下的⽂件格式cat file.sh > file.sh_bak# 先将file.sh中⽂件内容复制下来然后运⾏, 然后粘贴内容, 最后ctrl + d 保存退出cat > file1.sh# 在vim中通过如下设置⽂件编码和⽂件格式:set fileencodings=utf-8 ,然后 w (存盘)⼀下即可转化为 utf8 格式,:set fileformat=unix# 在mac下使⽤dos2unix进⾏⽂件格式化find . -name "*.sh" | xargs dos2unixtee, 重定向的同时输出到屏幕awk ‘{print $0}’ xxx.log | tee test.log检索相关grep# 反向匹配, 查找不包含xxx的内容grep -v xxx# 排除所有空⾏grep -v '^/pre># 返回结果 2,则说明第⼆⾏是空⾏grep -n “^$” 111.txt# 查询以abc开头的⾏grep -n “^abc” 111.txt# 同时列出该词语出现在⽂章的第⼏⾏grep 'xxx' -n xxx.log# 计算⼀下该字串出现的次数grep 'xxx' -c xxx.log# ⽐对的时候,不计较⼤⼩写的不同grep 'xxx' -i xxx.logawk# 以':' 为分隔符,如果第五域有user则输出该⾏awk -F ':' '{if ($5 ~ /user/) print $0}' /etc/passwd# 统计单个⽂件中某个字符(串)(中⽂⽆效)出现的次数awk -v RS='character' 'END {print --NR}' xxx.txtfind检索命令# 在⽬录下找后缀是.mysql的⽂件find /home/eagleye -name '*.mysql' -print# 会从 /usr ⽬录开始往下找,找最近3天之内存取过的⽂件。
查看Linux进程占用的资源查看Linux系统下某一个进程占用的资源是进行系统调测的关键。
它不仅涉及到健壮性,也涉及到程序的调优。
尤其是对于那些需要长时间在内存中运行的程序,如果发生随着外部运行环境的变化而导致的资源占用的不当起伏,势必导致程序运行的潜在风险。
toptop是灵活的CPU状态的查看工具,类似任务管理器。
Top命令一般分成两部分进行显示,第一部分是当前系统的运行概况:第一行(top):top - 17:03:45 up 58 days, 4:01, 1 user, load average: 0.00, 0.02, 0.00“17:03:45”为系统当前时刻;“58 days,4:01”为系统启动后到现在的运作时间;“1 user”为当前登录到系统的用户,更确切的说是登录到用户的终端数--同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;“load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过CPU数目时,CPU将比较吃力的负载当前系统所包含的进程;第二行(Tasks):“172 total”为当前系统进程总数;“1 running”为当前运行中的进程数;“171 sleeping”为当前处于等待状态中的进程数;“0 stoped”为被停止的系统进程数;“0 zombie”为僵死的进程数;第三行(Cpus):显示CPU利用率的详细信息,如果有多个CPU,屏幕将在每行显示一个CPU 的信息。
第四行(Mem):显示可用的和已利用的内存第五行(Swap):表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。
通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。
其余的显示内容以表格格式显示进程。
下面对各列进行解释:各个不同的列的内容为:PID 进程的进程IDUSER 运行该进程的用户PRI 进程的优先级NI nice值:该值越高,任务的优先级越低SIZE 该进程使用的内存(代码+数据+堆栈)VIRT:virtual memory usageRSS 该进程使用的物理内存SHARE 该进程使用的共享内存STAT 该进程的状态,用代码显示。
一些主要的状态代码包括:R—正在运行S—正在休眠Z—迟滞T—已停止您还会看到第二个和第三个字符,它们表示:W—已换出的进程N—正nice值%CPU 该进程使用的CPU百分比%MEM 该进程使用的内存百分比TIME 该进程使用的总CPU时间CPU 如果这是一个多处理器系统,该列指明正在其上运行进程的CPU 的ID。
COMMAND 该进程发出的命令top运行中可以通过top的内部命令对进程的显示方式进行控制。
内部命令如下:s -改变画面更新频率l -关闭或开启第一部分第一行top信息的表示t -关闭或开启第一部分第二行Tasks和第三行Cpus信息的表示m -关闭或开启第一部分第四行Mem和第五行Swap信息的表示N -以PID的大小的顺序排列表示进程列表P -以CPU占用率大小的顺序排列进程列表M -以内存占用率大小的顺序排列进程列表h -显示帮助n -设置在进程列表所显示进程的数量q -退出toppmappmap用于查看一个进程所占用的内存的情况,在现实上,几个主要列的含义是:Address:00378000-0038d000 进程所占的地址空间Kbytes 该虚拟段的大小RSS 设备号(主设备:次设备)Anon 设备的节点号,0表示没有节点与内存相对应Locked 是否允许swappedMode 权限:r=read, w=write, x=execute, s=shared, p=private(copy on write) Mapping: bash 对应的映像文件名使用的基本方法是“pmap +命令行模式+ pid”实现对于单一进程的内存监测查看/proc/process_id下的内容/proc/pid/status包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。
[root@localhost ~]# cat /proc/self/statusName: catState: R (running)SleepAVG: 88%Tgid: 5783Pid: 5783PPid: 5742TracerPid: 0Uid: 0 0 0 0Gid: 0 0 0 0FDSize: 256Groups: 0 1 2 3 4 6 10VmSize: 6588 kBVmLck: 0 kBVmRSS: 400 kBVmData: 144 kBVmStk: 2040 kBVmExe: 14 kBVmLib: 1250 kBStaBrk: 0804e000 kBBrk: 088df000 kBStaStk: bfe03270 kBExecLim: 0804c000Threads: 1SigPnd: 0000000000000000ShdPnd: 0000000000000000SigBlk: 0000000000000000SigIgn: 0000000000000000SigCgt: 0000000000000000CapInh: 0000000000000000CapPrm: 00000000fffffeffCapEff: 00000000fffffeff输出解释Name 应用程序或命令的名字State 任务的状态,运行/睡眠/僵死/SleepAVG 任务的平均等待时间(以nanosecond为单位),交互式任务因为休眠次数多、时间长,它们的 sleep_avg 也会相应地更大一些,所以计算出来的优先级也会相应高一些。
Tgid 线程组号Pid 任务IDPpid 父进程IDTracerPid 接收跟踪该进程信息的进程的ID号Uid Uid euid suid fsuidGid Gid egid sgid fsgidFDSize 文件描述符的最大个数,file->fdsGroupsVmSize(KB) 任务虚拟地址空间的大小 (total_vm-reserved_vm),其中total_vm为进程的地址空间的大小,reserved_vm:进程在预留或特殊的内存间的物理页VmLck(KB) 任务已经锁住的物理内存的大小。
锁住的物理内存不能交换到硬盘(locked_vm)VmRSS(KB) 应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)VmData(KB) 程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据;(total_vm-shared_vm-stack_vm)VmStk(KB) 任务在用户态的栈的大小 (stack_vm)VmExe(KB) 程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库(end_code-start_code)VmLib(KB) 被映像到任务的虚拟内存空间的库的大小 (exec_lib)VmPTE 该进程的所有页表的大小,单位:kbThreads 共享使用该信号描述符的任务的个数,在POSIX多线程序应用程序中,线程组中的所有线程使用同一个信号描述符。
SigQ 待处理信号的个数SigPnd 屏蔽位,存储了该线程的待处理信号ShdPnd 屏蔽位,存储了该线程组的待处理信号SigBlk 存放被阻塞的信号SigIgn 存放被忽略的信号SigCgt 存放被俘获到的信号CapInh Inheritable,能被当前进程执行的程序的继承的能力CapPrm Permitted,进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃的,CapEff是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性CapEff Effective,进程的有效能力范例 1可以看出该应用程序的正文段(1KB)很小,说明代码很少,是依靠库(1251KB)来执行。
栈(138KB)适中,说明没有太多许多嵌套函数或特别多的临时变量。
VmLck为0说明进程没有锁住任何页。
VmRSS表示当前进程使用的物理内存为2956KB。
当进程开始使用已经申请的但还没有用的内存时,VmRSS的值开始增大,但是VmSize保持不变。
[root@localhost 1]# cat /proc/4668/statusName: gam_serverState: S (sleeping)SleepAVG: 88%Tgid: 31999Pid: 31999PPid: 1TracerPid: 0Uid: 0 0 0 0Gid: 0 0 0 0FDSize: 256Groups: 0 1 2 3 4 6 10VmSize: 2136 kBVmLck: 0 kBVmRSS: 920 kBVmData: 148 kBVmStk: 88 kBVmExe: 44 kBVmLib: 1820 kBVmPTE: 20 kBThreads: 1SigQ: 1/2047SigPnd: 0000000000000000ShdPnd: 0000000000000000SigBlk: 0000000000000000SigIgn: 0000000000001006SigCgt: 0000000210000800CapInh: 0000000000000000CapPrm: 00000000fffffeffCapEff: 00000000fffffeffOprofile文献:/uid-361890-id-276370.html/developerworks/cn/linux/l-oprof/index.html /green369258/article/details/6894988sysstate/blog/1136956/blog/1136960/thread-480753-1-1.html/s/blog_5f8238650100sn9a.html(分析应用)。