Linux系统监控常用命令

1.PID、TID的区分

uid是user id,即用户id,root用户的uid是0,0为最高权限,
gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID、GID:
~$ id bingyue
uid=1000(bingyue) gid=1000(bingyue) groups=1000(bingyue)
~$ id root
uid=0(root) gid=0(root) groups=0(root)
pid是process id,即进程id,可以通过pid找到这个进程的uid,

tid是thead id,可以理解为线程的id。

2.常用的系统监控命令

top查看活动进程信息
top 命令显示当前的活动进程,默认它是按占用CPU 的多少进行排序,每5秒钟刷新一次列表,
你也可以选择不同的排序方式,例如 m 是按内存占用方式进行排序的快捷键。

iostat命令查看磁盘读取情况
iostat 命令用来显示存储子系统的详细信息,通常用它来监控磁盘 I/O 的情况。
要特别注意 iostat 统计结果中的 %iowait 值,太大了表明你的系统存储子系统性能低下。

使用meminfo查看内存信息
meminfo 包含了内存的详细信息,可以使用 cat 和 grep 命令来显示 meminfo 信息:
cat /proc/meminfo

使用free命令动态查看内存信息
可以使用 free 命令来显示动态的内存使用信息,free 查看大概的内存信息,而 meminfo 提供的信息更加详细。

lsof命令查看打开文件和端口等的列表
lsof 命令对于很多 Linux/Unix 系统都可以使用,主要以列表的形式显示打开的文件和进程。
打开的文件主要包括磁盘文件、网络套接字、管道、设备和进程。
使用这个命令的主要原因是一个一个盘不能卸载并且显示文件正在使用或者打开的错误信息。这个命令很容易看出哪些文件正在使用。

使用mpstat查看cpu信息
mpstat mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。
默认可能没有安装,需要安装后使用。

在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。

使用pmap查看某进程的内存使用情况
pmap 命令用来报告每个进程占用内存的详细情况,可用来看是否有进程超支了,该命令需要进程 id 作为参数。
pmap pid

使用ps 和 pstree查看进程列表
ps 和 pstree 命令都可以用来列表展示正在运行的所有进程。ps 告诉你每个进程占用的内存和 CPU 处理时间,而 pstree 显示的信息没那么详细,但它以树形结构显示进程之间的依赖关系,包括子进程信息。一旦发现某个进程有问题,你可以使用 kill 来杀掉它。

netstat网络信息
Netstat 和 ps 命令类似,显示了大量跟网络相关的信息,例如 socket 的使用、路由、接口、协议、网络等等。

strace
strace 可以记录进程进行系统调用的详情,因此它也是一个非常好的诊断工具,例如你可以使用它来找出某个程序正在打开某个配置文件。
Strace 在跟踪某个进程时会让该进程的性能变得非常差,因此请谨慎使用。

vmstat
你可以使用 vmstat 来监控虚拟内存,一般 Linux 上的开发者喜欢使用虚拟内存来获得最佳的存储性能。该命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。

uptime
uptime 命令告诉你这台服务器从开机启动到现在已经运行了多长时间了。同时也包含了从启动到现在服务器的平均负载情况

3.常用的监控工具

htop — 进程监控
htop 是一个更加先进的交互式的实时监控工具。htop 与 top 命令非常相似,但是他有一些非常丰富的功能,如用户友好界面管理进程、快捷键、横向和纵向进程等更多的。htop 是一个第三方工具并不包括在 Linux 系统中,你需要使用包管理工具进行安装。

iotop — 监控 Linux 磁盘 I/O
iotop 也是和 top 和 htop 命令相似,但是它会有一个报告功能去监控和显示实时的磁盘 I/O 输入和输出和程序进程。这个工具对于查找精确的高的磁盘读/写过程是非常有用的。

nmon即奈吉尔性能监视器 
Nmon是 Nigel's Monitor 的缩写,是一个使用很普遍的开源工具,用来监视 Linux 系统的所有资源包括:CPU、内存、磁盘使用率、网络上的进程、NFS、内核等等,并且提供了一个图形化的工具。

tcpdump — 网络数据包分析器

Tcpdump 是一个简单、可靠的网络监控工具,用来做基本的协议分析,看看那些进程在使用网络以及如何使用网络。
如果需要获取详细的信息,可以使用 Wireshark 。

4.Linux监控常用的操作

netstat -natp : 查看对应的网络链接
lsof -p pid : 查找对应pid的文件句柄
lsof -i : 80 : 查找对应端口被哪个进程占用
lsof /tmp/1.txt :查找对应文件被哪个进程占用

查看所有存在的线程:
ps xH
手册中说:H Show threads as if they were processes

查看一个进程起的线程数:
ps -mp <PID>
手册中说:m Show threads after processes

>>找到最耗CPU的Java线程

首先使用top等命令找到jvm进程的pid,
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3853 weblogic 18 0 9268m 4.1g 10m S 34.4 6.5 1301:04 java

当前jvm进程的pid是3853,通过jstack命令dump出当前的jvm进程的堆栈信息:
jstack 3853 >> /tmp/jstack0330.txt

然后使用下面的命令:
ps -mp pid -o THREAD,tid,time
或者
ps -Lfp pid
这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息:
$ ps -mp 3853 -o THREAD,tid,time
USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME
weblogic 29.3 - - - - - - 21:40:17
weblogic 10.7 24 - 184467 - - 13979 07:39:06

通过 printf "%x\n" 13979 可以将线程id转化成16进制表示, 
继续通过grep命令即可以查到对应16进制的线程id信息:
grep 369b /tmp/jstack0330.txt

堆栈信息中的nid对应的linux操作系统下的tid,就是线程id对应的16进制数字,
tid则是jvm的jmm内存规范中的唯一地址定位。

使用grep -A ,可以显示匹配行和之后的几行,
继续查看线程所在堆栈信息中前后的部分:
grep 369b /tmp/jstack0330.txt -A 10
就可以定位到相关的代码位置。

 

时间: 2024-09-17 04:01:43

Linux系统监控常用命令的相关文章

Linux服务器性能追踪以及服务器监控常用命令

在网站性能优化中,我们经常要检查服务器的各种指标,以便快速找到害群之马.大多情况下,我们会使用cacti.nagois或者zabbix之类的监控软件,但是这类软件安装起来比较麻烦,在一个小型服务器,我们想尽快找到问题所在,还是要使用Linux提供的一些命令. 1. 内存检查:free -m 注意,重点看的是第二行,-/+ buffers/cache行,第一个数字是实际消耗的内存,第二个是实际空闲的内存. 2. 系统进程监控 top Top命令注意看输出的第二.第三行.第二行(Tasks)表示系统

Linux运维常用命令_linux shell

自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量.看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试! 1.查看有多少个IP访问:  awk '{print $1}' log_file|sort|uniq|wc -l PS: wc -l 看看有多少行 2.查看某一个页面被访问的次数: grep "/index.php" log_file | wc -l 3.查看每一个IP访问了多少个页面: awk '{++S[$1]} EN

Linux 系统监控、诊断工具之 IO wait

Linux 系统监控.诊断工具之 IO wait 1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器硬件配置一样,部署的软件都一样,却单单这一台负载有问题,初步猜测可能硬件有问题了. 同时,我们还需要把负载有异常的罪魁祸首揪出来,到时候从软件.硬件层面分别寻找解决方案. 2.排查: 从 top 中可以看到 load average 偏高,%wa 很

linux系统中ls命令的用法

普通文件: -,f目录文件: d链接文件(符号链接): L设备文件:字符设备:c块设备:b命名管道: p套接字文件: s linux文件时间戳 时间分为三种类型:创建时间,修改时间:open访问时间:读写改变时间:源数据发生改变时间   4. ls -s 在每个文件的后面打印出文件的大小. size(大小,以K为单位)5. ls -t 按时间进行文件的排序 Time(时间)6. ls -A 列出除了"."和".."以外的文件.7. ls -R 将目录下所有的子目录的

Linux系统中‘dmesg’命令处理故障和收集系统信息的7种用法

Linux系统中'dmesg'命令处理故障和收集系统信息的7种用法 'dmesg'命令显示linux内核的环形缓冲区信息,我们可以从中获得诸如系统架构.cpu.挂载的硬件,RAM等多个运行级别的大量的系统信息.当计算机启动时,系统内核(操作系统的核心部分)将会被加载到内存中.在加载的过程中会显示很多的信息,在这些信息中我们可以看到内核检测硬件设备. dmesg Command Examples dmesg 命令的使用范例 'dmesg'命令设备故障的诊断是非常重要的.在'dmesg'命令的帮助下

查看Linux系统信息的常用命令

查看Linux系统信息的常用命令 一 系统: # uname -a # 查看内核/操作系统/CPU信息 # cat /etc/issue # cat /etc/redhat-release # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加载的内核模块 # env # 查看环境变量   二 资源: # f

MySQL在Linux系统中隐藏命令行中的密码的方法

  这篇文章主要介绍了MySQL在Linux系统中隐藏命令行中的密码的方法,作者利用简单的C程序实现,需要的朋友可以参考下 在命令行中输入命令并不是一个好主意,会造成安全问题.但是如果你决定去写一个应用,而这个应用需要在命令行中使用密码或者其他敏感信息.那么,你能通过以下方法禁止系统的其他用户轻易的看到这些敏感数据 呢?,类似MySQL在ps命令下隐藏密码. 假设我这里系统里两个用户,一个是root ,一个是dabu .测试系统为centos 6.5在按照下面的步骤做: ? 1 2 3 4 [r

Linux系统下apachectl命令使用说明

  linux中的apachectl命令其设计意图是帮助管理员控制Apache httpd后台守护进程的功能.apachectl脚本有两种操作模式.第一,作为简单的httpd的前端程序,设置所有必要的环境变量,然后启动httpd ,并传递所有的命令行参数.第二,作为SysV初始化脚本,接受简单的一个单词的参数,如:start, restart, stop ,并把他们翻译为适当的信号发送给httpd .下面就和小编一起看看Linux系统apachectl命令使用说明的详细版本吧! 功能说明:可用来

解析Linux系统安全的命令

  虽然Linux和Windows NT/2000系统一样是一个多用户的系统,但是它们之间有不少重要的差别.对于很多习惯了Windows系统的管理员来讲,如何保证Linux操作系统安全.可靠将会面临许多新的挑战.本文将重点介绍Linux系统安全的命令. passwd 1.作用 passwd命令用来修改账户的登陆密码,使用权限是所有用户. 2.格式 passwd [选项] 账户名称 3.主要参数 -l:锁定已经命名的账户名称,只有具备超级用户权限的使用者方可使用. -u:解开账户锁定状态,只有具备