Chinaunix首页 | 论坛 | 博客
  • 博客访问: 71431
  • 博文数量: 44
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-19 16:49
文章分类

全部博文(44)

文章存档

2018年(2)

2017年(1)

2016年(41)

我的朋友

分类: 系统运维

2016-04-29 17:27:23

原文地址:查看系统状态的常用命令 作者:w787815


  1. 1 CPU负载 # cat /proc/loadavg
  2. 检查前三个输出值是否超过了系统逻辑CPU的4倍。
  3. 2 CPU负载 #mpstat 1 1
  4. 检查%idle是否过低(比如小于5%)
  5. 3 内存空间 # free
  6. 检查free值是否过低 也可以用 # cat /proc/meminfo
  7. 4 swap空间 # free
  8. 检查swap used值是否过高 如果swap used值过高,进一步检查swap动作是否频繁:
  9. # vmstat 1 5
  10. 观察si和so值是否较大
  11. 5 磁盘空间 # df -h
  12. 检查是否有分区使用率(Use%)过高(比如超过90%) 如发现某个分区空间接近用尽,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录:
  13. # du -cks * | sort -rn | head -n 10
  14. 6 磁盘I/O负载 # iostat -x 1 2
  15. 检查I/O使用率(%util)是否超过100%
  16. 7 网络负载 # sar -n DEV
  17. 检查网络流量(rxbyt/s, txbyt/s)是否过高
  18. 8 网络错误 # netstat -i
  19. 检查是否有网络错误(drop fifo colls carrier) 也可以用命令:# cat /proc/net/dev
  20. 9 进程总数 # ps aux | wc -l
  21. 检查进程个数是否正常 (比如超过250)
  22. 10 进程 # top -id 1
  23. 观察是否有异常进程出现
  24. 10.1 mpstat 不带任何参数的使用mpstat命令将会输出所有CPU的平均统计信息
  25. mpstat
  26. 10.2 使用‘-p’ (处理器编号)和‘ALL’参数将会从0开始独立的输出每个CPU的统计信息,0表示第一个cpu。
  27. mpstat -P ALL
  28. 10.3 要进行‘N’次,平均每次间隔n秒的输出CPU统计信息
  29. mpstat -P ALL 2 5 (命令中‘2’ 表示每2秒执行一次‘mpstat -P ALL’命令, ‘5’表示共执行5次)
  30. 11.tcpdump 抓包 ,用来防止80端口被人攻击时可以分析数据
  31.  tcpdump -c 10000 -i eth0 -n dst port 80 > /root/sar002
  32. 12.然后检查IP的重复数 并从小到大排序 注意 "-t\ +0" 中间是两个空格
  33. less sar002 | awk {'printf $3"\n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"\n"'} | sort -n -t\ +0
  34. 13.查看有多少个活动的php-cgi进程
  35. netstat -anp | grep php-cgi | grep ^tcp | wc -l
  36. 14.查看开机启动哪些服务
  37. chkconfig --list | awk '{if ($5=="3:on") print $1}'
  38. 15.CPU的数量(多核算多个CPU)越多,系统负载越低,每秒能处理的请求数也越多。
  39. cat /proc/cpuinfo |grep -c processor
  40. 16.统计服务器下面所有的jpg的文件的大小
  41. find / -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
  42. 17.删除0字节文件
  43. find -type f -size 0 -exec rm -rf {} \;
  44. 18.查看http的并发请求数及其TCP连接状态:
  45. netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
  46. 19.内存的大小:
  47. free -m |grep "Mem" | awk '{print $2}'
  48. 20. 取IP地址:
  49. ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6- 或者
  50. ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'

  51. #获取Mask:
  52. echo -e "Mask:\c";
  53. ifconfig |grep inet| sed -n '1p'|awk '{print $4}'|awk -F ':' '{print $2}'
  54. #awk获取IP:
  55. echo -e "IP:\c";
  56. ifconfig |grep inet| sed -n '1p'|awk '{print $2}'|awk -F ':' '{print $2}'
  57. #获取MAC:
  58. echo -e "MAC:\c";
  59. ifconfig |grep eth0|awk '{print $5}'
  60. #获取DNS
  61. echo -e "DNS NameServer:\c";
  62. cat /etc/resolv.conf |grep -i nameserver| awk '{print $2}'
  63. #获取网关:
  64. echo -e "GateWay:\c";
  65. route -n | grep eth0 | grep UG | awk '{print $2}'
  66. #将以上几个全部合起来,就是一个完整的shell脚本,获取linux ip,mac,mask,网关和dns服务器。
  67. sed替换实例:将字符串aAa中的a替换为b
  68. #替换一次,默认的效果
  69. [root@shellcn.net ~#] echo aAa|sed s/a/b/
  70. bAa
  71. #全部替换
  72. [root@shellcn.net ~#] echo aAa|sed s/a/b/g
  73. bAb
  74. #全部替换并忽略大小写
  75. [root@shellcn.net ~#] echo aAa|sed s/a/b/gi
  76. bbb
  77. sed s/ / / 就代表sed的替换功能。
  78. 替换选项,可选,常用的有g和i。g代表替换所有。i代表忽略大小写。
  79. 默认sed替换只替换一次,所以我们常常都要加入g选项。
  80. nginx 编译安装{

  81.         yum install -y make gcc openssl-devel pcre-devel bzip2-devel libxml2 libxml2-devel curl-devel libmcrypt-devel libjpeg libjpeg-devel libpng libpng-devel openssl

  82.         groupadd nginx
  83.         useradd nginx -g nginx -M -s /sbin/nologin
  84.         
  85.         mkdir -p /opt/nginx-tmp

  86.         wget http://labs.frickle.com/files/ngx_cache_purge-1.6.tar.gz
  87.         tar fxz ngx_cache_purge-1.6.tar.gz
  88.         # ngx_cache_purge 清除指定url缓存
  89.         # 假设一个URL为 http://192.168.12.133/test.txt
  90.         # 通过访问 http://192.168.12.133/purge/test.txt 就可以清除该URL的缓存。
  91.         
  92.         tar zxvpf nginx-1.4.4.tar.gz
  93.         cd nginx-1.4.4

  94.         # ./configure --help
  95.         # --with # 默认不加载 需指定编译此参数才使用
  96.         # --without # 默认加载,可用此参数禁用
  97.         # --add-module=path # 添加模块的路径
  98.         # --add-module=/opt/ngx_module_upstream_check \ # nginx 代理状态页面
  99.         # ngx_module_upstream_check 编译前需要打对应版本补丁 patch -p1 < /opt/nginx_upstream_check_module/check_1.2.6+.patch
  100.         # --add-module=/opt/ngx_module_memc \ # 将请求页面数据存放在 memcached中
  101.         # --add-module=/opt/ngx_module_lua \ # 支持lua脚本 yum install lua-devel lua

  102.         ./configure \
  103.         --user=nginx \
  104.         --group=nginx \
  105.         --prefix=/usr/local/nginx \
  106.         --pid-path=/usr/local/nginx/nginx.pid \
  107.         --lock-path=/usr/local/nginx/nginx.lock \
  108.         --with-http_ssl_module \
  109.         --with-http_realip_module \
  110.         --with-http_gzip_static_module \
  111.         --with-http_stub_status_module \
  112.         --add-module=/opt/ngx_cache_purge-1.6 \
  113.         --http-client-body-temp-path=/opt/nginx-tmp/client \
  114.         --http-proxy-temp-path=/opt/nginx-tmp/proxy \
  115.         --http-fastcgi-temp-path=/opt/nginx-tmp/fastcgi \
  116.         --http-uwsgi-temp-path=/opt/nginx-tmp/uwsgi \
  117.         --http-scgi-temp-path=/opt/nginx-tmp/scgi

  118.         make && make install

  119.         /usr/local/nginx/sbin/nginx –t # 检查Nginx配置文件 但并不执行
  120.         /usr/local/nginx/sbin/nginx -t -c /opt/nginx/conf/nginx.conf # 检查Nginx配置文件
  121.         /usr/local/nginx/sbin/nginx # 启动nginx
  122.         /usr/local/nginx/sbin/nginx -s reload # 重载配置
  123.         /usr/local/nginx/sbin/nginx -s stop # 关闭nginx服务
  124. 系统性能状态{

  125.             vmstat 1 9
  126.             
  127.             r # 等待执行的任务数。当这个值超过了cpu线程数,就会出现cpu瓶颈。
  128.             b # 等待IO的进程数量,表示阻塞的进程。
  129.             swpd # 虚拟内存已使用的大小,如大于0,表示机器物理内存不足,如不是程序内存泄露,那么该升级内存。
  130.             free # 空闲的物理内存的大小
  131.             buff # 已用的buff大小,对块设备的读写进行缓冲
  132.             cache # cache直接用来记忆我们打开的文件,给文件做缓冲,(把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)
  133.             inact # 非活跃内存大小,即被标明可回收的内存,区别于free和active -a选项时显示
  134.             active # 活跃的内存大小 -a选项时显示
  135.             si # 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露,要查找耗内存进程解决掉。
  136.             so # 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
  137.             bi # 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte
  138.             bo # 块设备每秒发送的块数量,例如读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
  139.             in # 每秒CPU的中断次数,包括时间中断。in和cs这两个值越大,会看到由内核消耗的cpu时间会越多
  140.             cs # 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用。
  141.             us # 用户进程执行消耗cpu时间(user time) us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施
  142.             sy # 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
  143.             id # 空闲 CPU时间,一般来说,id + us + sy = 100,一般认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
  144.             wt # 等待IOCPU时间。Wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。
  145.             
  146.             如果 r 经常大于4,且id经常少于40,表示cpu的负荷很重。
  147.             如果 bi bo 长期不等于0,表示内存不足。
  148.             如果 b 队列经常大于3,表示io性能不好。
  149.   并发数查看{

  150.         netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
  151.         SYN_RECV # 正在等待处理的请求
  152.         ESTABLISHED # 正常数据传输状态,既当前并发数
  153.         TIME_WAIT # 处理完毕,等待超时结束的请求
  154.         CLOSE_WAIT # 客户端异常关闭,没有完成4次挥手 如大量可能存在攻击行为

  155.     }
  156.  route {

  157.         route # 查看路由表
  158.         route add default gw 192.168.1.1 dev eth0 # 添加默认路由
  159.         route add -net 172.16.0.0 netmask 255.255.0.0 gw 10.39.111.254 # 添加静态路由网关
  160.         route del -net 172.16.0.0 netmask 255.255.0.0 gw 10.39.111.254 # 删除静态路由网关
  161.     解决ssh链接慢{

  162.         sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config
  163.         sed -i '/#UseDNS yes/a\UseDNS no' /etc/ssh/sshd_config
  164.         /etc/init.d/sshd restart

  165.     }
  166.     nmap{

  167.         nmap -PT 192.168.1.1-111 # 先ping在扫描主机开放端口
  168.         nmap -O 192.168.1.1 # 扫描出系统内核版本
  169.         nmap -sV 192.168.1.1-111 # 扫描端口的软件版本
  170.         nmap -sS 192.168.1.1-111 # 半开扫描(通常不会记录日志)
  171.         nmap -P0 192.168.1.1-111 # 不ping直接扫描
  172.         nmap -d 192.168.1.1-111 # 详细信息
  173.         nmap -D 192.168.1.1-111 # 无法找出真正扫描主机(隐藏IP)
  174.         nmap -p 20-30,139,60000- # 端口范围 表示:扫描20到30号端口,139号端口以及所有大于60000的端口
  175.         nmap -P0 -sV -O -v 192.168.30.251 # 组合扫描(不ping、软件版本、内核版本、详细信息)
  176.         
  177.         # 不支持windows的扫描(可用于判断是否是windows)
  178.         nmap -sF 192.168.1.1-111
  179.         nmap -sX 192.168.1.1-111
  180.         nmap -sN 192.168.1.1-111

  181.     }    
  182.      raid原理与区别{

  183.         raid0至少2块硬盘.吞吐量大,性能好,同时读写,但损坏一个就完蛋
  184.         raid1至少2块硬盘.相当镜像,一个存储,一个备份.安全性比较高.但是性能比0弱
  185.         raid5至少3块硬盘.分别存储校验信息和数据,坏了一个根据校验信息能恢复
  186.         raid6至少4块硬盘.两个独立的奇偶系统,可坏两块磁盘,写性能非常差

阅读(877) | 评论(0) | 转发(0) |
0

上一篇:grep命令详解

下一篇:Linux vmstat命令详解

给主人留下些什么吧!~~