查询进程
进程管理
查询正在运行的进程信息$ps -ef | grep colin115
查询进程ID(适合只记得部分进程字段)pgrep -l re
以完整的格式显示所有的进程:$ps -ajx
显示进程信息,并实时更新:$top
查看端口占用的进程状态:lsof -i:3306
查看用户username的进程所打开的文件:$lsof -u username
查询指定的进程ID(23295)打开的文件:$lsof -p 23295
进程监控
查看系统中使用CPU、使用内存最多的进程;
$top
(->)P
输入top命令后,进入到交互界面;接着输入字符命令后显示相应的进程状态:
对于进程,平时我们最常想知道的就是哪些进程占用CPU最多,占用内存最多。以下两个命令就可以满足要求
P:根据CPU使用百分比大小进行排序。
M:根据驻留内存大小进行排序。
i:使top不显示任何闲置或者僵死进程。
分析线程栈
使用命令pmap,来输出进程内存的状况,可以用来分析线程堆栈;
$pmap PID
eg:
[/home/weber#]ps -fe| grep redis
weber 13508 13070 0 08:14 pts/0 00:00:00 grep --color=auto redis
weber 29515 1 0 2013 ? 02:55:59 ./redis-server redis.conf
[/home/weber#]pmap 29515
性能监控
监控CPU
sar -u 1 2查看CPU使用率:后面的两个参数表示监控的频率,比如例子中的1和2,表示每秒采样一次,总共采样2次;
sar -q 1 2查看CPU平均负载:sar指定-q后,就能查看运行队列中的进程数、系统上的进程大小、平均负载等;
查询内存
sar -r 1 2查看内存使用状况 sar指定-r之后,可查看内存使用状况;
free -m 查看内存使用量
综合应用
当系统中sar不可用时,可以使用以下工具替代:linux下有 vmstat、Unix系统有prstat
eg: 查看cpu、内存、使用情况: vmstat n m (n 为监控频率、m为监控次数)
vmstat 1 3
使用watch 工具监控变化 当需要持续的监控应用的某个数据变化时,watch工具能满足要求; 执行watch命令后,会进入到一个界面,输出当前被监控的数据,一旦数据变化,便会高亮显示变化情况;
eg:操作redis时,监控内存变化:
$watch -d -n 1 './redis-cli info | grep memory'
(以下为watch工具中的界面内容,一旦内存变化,即实时高亮显示变化)
Every 1.0s: ./redis-cli info | grep memory Mon Apr 28 16:10:36 2014
used_memory:45157376
used_memory_human:43.07M
used_memory_rss:47628288
used_memory_peak:49686080
used_memory_peak_human:47.38M
系统管理
查看Linux版本
$uname -a
$lsb_release -a
查看Unix系统版本:操作系统版本
$more /etc/release
查看CPU使用情况
$sar -u 5 10
查看CPU信息
$cat /proc/cpuinfo
查看CPU的核的个数
$cat /proc/cpuinfo | grep processor | wc -l
查看内存信息
$cat /proc/meminfo
其他
gdb 调试利器
ldd 查看程序依赖库
lsof 一切皆文件
ps 进程查看器
pstack 跟踪进程栈
strace 跟踪进程中的系统调用
ipcs 查询进程间通信状态
top Linux 下的任务管理器
free 查询可用内存
vmstat 监视内存使用情况
iostat 监视 I/O 子系统
sar 找出系统瓶颈的利器
readelf elf 文件格式分析
objdump 二进制文件分析
nm 目标文件格式分析
size 查看程序内存映像大小
wget 文件下载
scp 跨机远程拷贝
crontab 定时任务