参考自:分布式服务架构原理、设计、实践
1.uptime,查看机器的启动时间、登录用户、平均负载等情况,通常用于在线上应急或者技术攻关中确定操作系统的重启时间
输出: 12:30:25 up 30 days, 21:49, 3users, load average: 2.60,2.71,2.74
当前运行时间:12:30:25
系统已运行时间:30天
当前在线用户:3
系统平均负载:2.6,2.71,2.74,最近1分钟,5分钟,15分钟
系统平均负载指特定时间间隔内队列中运行的平均进程数。如果一个进程满足以下条件,它就会在运行队列中:
1)它没有在等待I/O操作的结果
2)没有主动进入等待状态(没有调用wait相关的系统api)
3)没有被停止(如等待终止)
一般来说,活动进程数小于CPU核心数的3倍,系统运行良好。
2.lsof:用于列出系统当前打开的文件句柄。
应用程序打开文件的描述符列表包含了大量的关于应用程序本身的运行信息,因此lsof工具可查看文件句柄列表,对系统监控及应急排错提供重要帮助。
lsof -p 2302 查看某个进程打开的文件句柄数
lsof -i:8080 查看某个端口的使用方式
3. ulimit:系统对用户使用资源的限制
ulimit -a 查看当前系统对用户使用资源的限制
ulimit -u 1024 设置用户的最大进程数
ulimit -n 65530 设置用户可以打开的最大文件句柄数
4. curl:集成测试时,可以查看http请求返回结果是否符合预期
curl -i "http://www.sina.com" 打印请求相应头信息
curl -v ,,,,打印更多的调试信息
curl -verbose 打印更多的调试信息
curl -d 使用post方式提交http请求
curl -I 仅仅返回http头
curl -sw 打印http响应码
5. scp:文件传输
scp -r [email protected]:/home/local/temp /usr/local 将192.168.1.1服务器上/home/local/temp下的文件传输到本地/usr/local目录下。
scp -r /usr/local [email protected]:/home/local/temp 将本地/usr/local目录下的文件传输到192.168.1.1服务器上/home/local/temp下
6. dos2unix和unix2dos:用于转换windows和unix的换行符
通常在windows系统下开发的脚本和配置,上传到unix系统下都需要转换。
7. awk:linux系统下强大的文本分析工具
相对于grep的查找、sed的编辑、awk在对数据分析并生成报告时,显得尤为强大。它把文件逐行读入,以空格为默认分隔符进行切片,也可以以任何字符为分隔符,把切开的部分进行各种分析和处理,在分析和处理的过程中支持脚本式的编程。
8. 其他
sed:文本编辑和替换
tr:文本替换
cut:选取命令,分析一段数据并取出我们想要的部分
wc:统计字数和行数
sort:排序
uniq:去重或者分组统计
zip:压缩zip格式或解压
tar:创建或者解压tar格式的包
------------------------------------------查看活动进程的命令---------------------------------------------------------
1.ps:用于显示系统内所有进程
ps -elf
可通过grep命令找到目标进程
2.top:查看活动进程CPU和内存信息
t:切换显示进程和CPU状态
m:切换显示内存信息
r:重新设置一个进程的优先级
k:终止一个进程
s:改变刷新的时间间隔
u:查看指定用户的进程
htop是top的升级
3.pidstat:用于监控全部或者指定进程占用系统资源的情况,包括cpu,内存,磁盘I/O,线程切换,线程数等。
pidstat -u -p 进程数 #输出CPU使用信息
pidstat -r -p 进程数 #输出内存的使用信息
pidstat -d -p 进程数 #输出磁盘I/O的使用信息
--------------------------------------------------窥探内存的命令-------------------------------------------------------
1.free: 此命令用于显示系统内存的使用情况,包括总体内存,已经使用的内存,还可以显示系统内核使用的缓冲区,包括缓冲(buffer)和缓存(cache)等。
buffer一般不会太大,几十M到几百M,用于存储磁盘块设备的元数据,比如哪些块属于那些文件、文件的权限、目录等信息。
cached会很大,一般在GB字节以上,用于存储读写文件的页。
2.pmap:用来报告进程中各个模块占用内存的具体情况,显示比较底层的进程模块占用内存的信息,并且可以打印内存的起止地址等,用于定位深层次JVM或者操作系统的内存问题
pmap -d 进程号
-----------------------------------------------针对CPU使用情况的监控命令----------------------------------------------------
1.vmstat:显示关于内核线程、虚拟内存、磁盘I/O、陷阱和CPU占用率的统计信息
buffer是I/O系统存储的磁盘块文件的元数据的统计信息
cache是操作系统用来缓存磁盘数据的缓冲区
cs参数标识线程环境的切换次数,次数据太大时表明线程的同步机制有问题
si和so较大时,说明系统频繁使用交换区,应该查看操作系统的内存是否够用
bi和bo代表I/O活动,根据其大小可以知道磁盘I/O的负载情况
2.mpstat:用于实时监控系统CPU的一些统计信息,在多核CPU中还能查看所有CPU的平均使用信息
mpstat -P ALL
--------------------------------------------------监控磁盘I/O的命令----------------------------------------------------------
1.iostat:监控CPU占用率、平均负载值即I/O读写速度等
另外,iotop、ioprofiler、blktrace可以监控更多底层的I/O活动信息,vmstat、mpstat也有一些I/O相关的输出
iostat -x
iowait:包括r-wait和w_wait,这些参数较大,说明I/O负载较大,I/O等待严重,磁盘读写遇到瓶颈
2.swapon:查看交换分区的使用情况
/sbin/swapon -s
3.df:查看文件系统的硬盘挂载点和空间使用情况
df-h
-----------------------------------------------查看网络信息和网络监控命令----------------------------------------------------
ifconfig查看机器挂载的网卡信息
ping检测网络故障连通性
telnet远程登录
nc调试分析器
mtr网路连通性测试工具,也可以用来检测丢包率 mrt -r sina.com
nslookup检测网络中DNS服务器能否正确解析域名的工具
traceroute提供从用户的主机到互联网另一端的主机的路径
sar多功能监控工具,可以输出网卡读取速度,适合线上排查问题用
netstat网络连通、端口信息
netstat -elf |grep 进程
netstat -nap |grep 端口
iptraf实时监控网络流量的交互式的彩色文本屏幕界面
tcpdump网络状态分析和跟踪工具
nmap扫描某一主机打开的端口及端口提供的服务信息
ethtool用于查看网卡的配置情况
----------------------------------------------------------linux系统的高级工具-------------------------------------------
pstack显示每个进程的本地调用栈
stace监控一个应用程序所使用的的系统调用
/proc文件系统
cat /proc/cpuinfo显示CPU信息
cat /proc/meminfo显示内存信息
cat /proc/zoneinf显示详细的内存映射信息
cat /proc/mounts显示磁盘映射信息
cat /proc/loadavg显示系统的平均负载