分类: LINUX
2015-11-25 11:04:36
一, 系统资源监控:
top
Top收集/proc下的系统信息并展示给用户,是个最常用的系统监控工具, 监控进程的cpu, 内存等的使用情况, Top具有交互模式下有多种命令,可以灵活的实现用户的监控需求 常用的命令有:
k #kill 杀死进程
f #Fields 选择top显示的列
F #Fileds 选择top排序的列
c #command 显示进程的完整命令
H #threads 显示进程的子线程
lsof
可以查看进程open的文件状态, 也可以指定file(广义指: 文件/目录/挂载点/设备/套接字/管道等)来找到使用它的进程, 或者显示系统open的文件
通过进程找文件: lsof -c CMD; lsof -p PID
通过文件找进程:lsof -d DIR; lsof +D DIR;lsof FILE
指定文件类型: lsof -p PID -a -i;lsof -p PID -a -U; lsof -p PID -a -N
netstat
查看系统的网络状态, 如:
netstat -lp; 显示正在listen的进程及端口
netstat -a; 显示网络所有的连接状态及监听
netstat -r; 显示内核路由表
netstat -i; 显示网卡信息
dstat
查看系统的磁盘IO, 网络流量, cpu, 内存, 中断情况, swap情况, 文件aio, 文件系统状态, ipc状态, 锁状态, socket, tcp,udp等, 每个监控的显示都相对简略, 但是监控项齐全.
dstat -a #显示最常见的系统监控项
iostat
查看系统的磁盘io状态 如:
iostat -x 1 #显示齐全的io状态, 每隔1秒刷新一次
Sar
可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等.
二, 进程调试工具
pstack
可以查看当前的堆栈信息, 堆栈信息有进程中所有线程的堆栈信息和线程号等信息, 结合top, perf等工具, 可以知道该线程的运行状态(如占用多少cpu)
pstack PID
Strace
可以查看进程的所有系统调用
strace -p PID #查看进程的系统调用
starce CMD #查看程序的系统调用
gdb
程序调试工具, 在线调试, 单步调试,
Valgrind
内存泄漏检查, 锁检查
Perf
Linux下性能分析工具
Perf list #list event
Perf stat -p PID
Perf top -p PID == perf top -e cycles -p PID #display the cycles event info of
三, 系统工具
Sysctl
动态调整内核参数, 如设置系统能打开的最大文件数:
临时改变: sysctl fs.nr_open sysctl fs.nr_open=10485760
永久改变: echo ‘fs.nr_open = 10485760’ >> /etc/sysctl.conf
ulimit
查看/设置用户的设置参数 如设置用户进程打开的文件数:
临时改变 : ulimit -n 10240
永久改变: echo ‘* - nofile 10240’ >> /etc/
四, 网络调试
nc
简单的流通信工具, 可以用来传输各种数据(如文件,镜像等)如:
传输文件(Client -> Service)
service: nc -l port > test.txt
client: cat test.txt | nc service.ip port
传输文件(Service -> Client)
Service: cat test.txt | nc -l port
Client: nc service.ip port > test.txt
传输目录(-:代表标准输出) (Client -> Service)
Service: nc -l port | tar xvf -
Client: tar cvf - dir | nc service.ip port
传输目录(Service -> Client)
Service: tar cvf - dir | nc -l port
Client: nc service.ip port | tar xvf -
聊天:
Service: nc -l port
Client: nc service.ip
port 端口扫描
nc -v -w 1 scan.ip -z port_start-port_end
tcpdump
网络抓包工具, 如:
tcpdump -i IF host IP-ADDR and port PORT -w SAVE_FILE
其中:
IF: 网卡
IP-ADDR: 本地ip地址
PORT: 本地端口, 可以是连接端口或监听端口
SAVE_FILE: 保存数据的文件路径, 可以用wireshark分析该文件
Wireshark(Etherea)
常见的网络协议解析,支持http, nfs, dns, rtmp, samba,ping,icmp,ftp等等1170种协议
Curl/wget
curl是一个利用URL规则在命令行下工作的文件传输工具,支持http,ftp协议, http请求格式如下:
curl -X GET -H KEY:VAL URL
其中:
-X METHOD是http请求的方法如, GET, PUT, POST, DELETE,等
-H KEY:VAL是http请求的header, 不同的场合KEY:VAL不同
URL: 是htttp请求的url, 如
发http Get请求: curl -X GET -H KEY:VAL URL
发http Put请求: curl -X PUT -T UPLOAD-FILE -H KEY:VAL URL
wget是一个从网络上自动下载文件(注意:只能下载)的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。用法: wget URL,
Telnet
远程登录工具, 由于telnet是明文传输, 现在已经被加密的ssh取代, 但是仍经常用来测试监听端口, 如: telnet HOST PORT
Whois/Host
Traceroute/ping/Mtr
iptable
可以方便的制定网络防火墙规则, 同时支持NAT转换, 上网代理等
五, 硬盘&文件系统
file/lsattr/chattr
查看或者改变文件(广义文件)的attr属性
getfattr/setfattr/attr
查看或者设置文件(广义文件)的xattr属性