转发:Unix 系统管理员的 n 种武器

  原贴:http://qzone.qq.com/blog/158947582-1231765465 转发:Unix 系统管理员的 n 种武器 阅读(2) 评论(0) 发表时间:2009年01月12日 21:04 本文地址:http://qzone.qq.com/blog/158947582-1231765465 分享一篇文章: Unix 系统管理员的 n 种武器Plan the work, work the plan 先从性能检查小工具着手 查看系统负载摘要 - w, top, free(linux) 准实时更新的系统负载摘要 - top, vmstat, iostat 进程查看 - top, ps, lsof 进程跟踪 - strace (truss), ltrace 网络连接情况 - netstat, lsof 文件打开情况 - lsof, fuser Linux下万金油 - ls, cat (with /proc) 查看历史 - sar 以下是一些小 tip 1. Linux 下多数人会使用 netstat -ant |wc -l 或 netstat netstat -ant|grep EST |wc -l 这样的命令来查看当前连接的摘要情况。netstat 扫描很费时间,快速、准确、在系统反应慢的时候尤其有利的方法 # cat /proc/net/sockstat 2. 查看当前系统负载最简单的命令是 w,这个命令在高负载,系统反应慢的情况下最可靠 3. strace -p 很强大,没有日志的情况下,它可以用来了解进程究竟在做什么 4. lsof 也很强大,lsof -n -i TCP:80 和 netstat -natp |grep :80 的效果基本相同,但揭示出额外的东西 5. top 不会排序,就不算会用,常用的排序是按内存用量排序和CPU使用时间排序,分别是按 M 和 P。按 s 可以改变更新间隔。按 h 可以看帮助。 转自校内王剑的日志 Unix 系统管理员的 n 种武器 (1)这些工具的使用顺序应该是这样的 1. 首先,看一下系统摘要,结合系统的用途,作出调查方向的初步判断。系统用途可以用 ps 看一下完整的进程列表; 2. 确定方向后,使用工具查看具体的问题; 3. 使用工具查找引起该具体问题的原因; 经验多了以后,第二步有时候可以省去,但注意可能会误入歧途。 更新:有些是 linux specific 的,注明一下 Unix 系统管理员的 n 种武器 (2)网络相关的工具 网络连接情况 - netstat, lsof 路由表 - route, ip(linux), netstat 查看和配置网络接口 - ifconfig, ip(linux) 网卡设备配置 - ethtool & mii-tool (linux) 网络链路质量检查 - ping, mtr, traceroute 网络包检查 - tcpdump, wireshark 流量监控 - iftop, iptraf, jnettop 万用TCP连接测试工具 - telnet, netcat (nc), openssl s_client 流量管理和控制 - tc (linux) 防火墙设置 - iptables(linux) DNS查询工具 - host, nslookup, dig Linux 下的万金油 - cat, echo (with /proc) 查看历史 - sar 下面是一些小 tip 1. netstat 的 -p 参数很有用,它可以显示 socket 对应的程序的 pid 和 程序名,我常常使用 netstat -ntlp 和 netstat -nulp 来检查守护进程 2. 检查路由表,netstat -nr 和 route -n 是差不多的,不过列有些差别。有些系统上 route 命令不能用来查看路由表,必须用 netstat -r。Linux 上,route -ne 等于 netstat -nr 3. ip 是个强大的命令,它可以用来检查和配置接口 IP 地址、检查和配置路由 ip addr ... ip route ... Linux的高级路由功能必须用 ip 命令来实现 (ip rule + ip route) 4. telnet 除了连接 telnet 服务外,还可以创建一个 tcp 连接并和服务器交互,这个功能和 netcat 相同。openssl s_client -connect server:port 用于建立 SSL 连接(耶,你可以和 https 服务交互) 5. tc 一般用来对流量进行优先级划分或做流量限制。在测试中可以用 tc qdisc change dev eth0 root netem ...... 来模拟网络延时和丢包等情况。在 10ms 延时和 0ms 延时的情况下,系统负载能力有质的区别。 6. 谨慎使用 iptables。除非你正在配置一个防火墙,否则能不用就不用。在一个大的服务器群里,一个没做公开记录的 iptables 规则很可能造成大的损失,外带人力浪费 7. mtr 比 traceroute 好 8. 检查网络问题时,ping -f 可能比 ping 好:ping 不丢包,而 ping -f 才显示出问题 9. 多数网络相关命令都带有 -n 参数(lsof 也有),禁用反向域名查询。反向域名查询很多时候会引起问题,诸如"tcpdump 为什么抓不到包","ping 怎么死了",而且很慢。用 -n 应该是下意识的,不需要别人提醒你,不过 mtr 例外,它的反向域名查询是异步的 10. tcpdump 必须熟悉,如果还没把 tcpdump 的 man page 通读一遍,赶紧的 11. 网线问题是你经常想不到但必须想的。ethtool 和 mii-tool 可以帮助你了解当前网线的连接状态。ethtool 还用于配置一些网卡驱动的参数,例如 TSO (Tcp segmentation offload),链路速度。强制设置网卡链路速率能解决问题,但更多的是引起问题,如难以解释的丢包。 12. sar -n XXX 可以用来了解历史 13. DNS 查询问题可能会引起一些看起来是网络问题的问题,例如浏览器慢,mysql 数据库慢(如果没关反向查询) 网络故障诊断一般是这样的顺序 1. 网络是否中断 (ping) 2. 是否丢包 (ping, ping -f, mtr) 3.1 路由是否正确 (route -n, ip route 等) 3.2 网线状态 (ethtool) 3.3 tcpdump 或者 ifconfig 看看收发包的情况,比如异常流量(大量 icmp,arp,udp) 3.4 arp 表 3.5 iptables 规则 3.6 dns 在一些软件配置上(如 lvs),要仔细检查路由和 arp。 Unix 系统管理员的 n 种武器 (3)再来看看文件、文件系统相关的命令 文件系统的挂载 - mount, umount 文件系统检查 - fsck 检查文件状态 - stat, ls 检查打开的文件 - fuser, lsof 空间检查 - df, du 查找文件 - find, locate, grep 文件权限 - chown, chmod, (linux) lsattr, chattr, getacl, setacl 特殊文件 - mknod, mkfifo, mkdir, rmdir 常用的压缩、归档工具 - tar, cpio, gzip, bzip2, 7zip, unzip, unrar Linux 下万金油 - cat, ls (with /proc) 下面是一些小 tip 1. mount 的 noatime 选项需要特别留意。在打开文件时,系统默认会更新文件的 access time 时戳,如果对文件的访问模式是快速打开、关闭大量不同的文件,例如某些搜索应用、news 服务器等,即便应用是只读的,对 access time 的更新会引起可观的磁盘写入操作。noatime 关闭对 access time 的更新; 2. mount -o remount 在不卸载文件系统的情况下重新设置挂载选项,比如 mount -o remount,noatime /some_mnt_point。在 nfs 服务器宕机,进程僵死的情况下,可以用 remount 来修改 nfs 挂载选项 (mount -o remount,intr),使得进程可以被杀死 3. 对挂载上的文件系统进行写模式的 fsck 会造成文件系统损坏 4. du 一个目录,但不希望包括其子目录上的挂载的文件系统时,可以用 -x 来避免跨文件系统。find 是 -xdev;gnu tar 是 --one-file-system 5. 有时候,在文件被打开的情况下删除文件,会造成"隐藏"的空间占用,df 可以看见空间没了,可是 du 检查的结果是空间还有很多富余,这个时候,可以用 lsof /path 来检查,例如 # lsof /tmp COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME apache2 7184 www-data 15u REG 8,8 0 17 /tmp/.xcache.0.0.169170445.lock (deleted) apache2 15216 www-data 15u REG 8,8 0 17 /tmp/.xcache.0.0.169170445.lock (deleted) apache2 15313 www-data 15u REG 8,8 0 17 /tmp/.xcache.0.0.169170445.lock (deleted) apache2 16041 www-data 15u REG 8,8 0 17 /tmp/.xcache.0.0.169170445.lock (deleted) apache2 22031 root 15u REG 8,8 0 17 /tmp/.xcache.0.0.169170445.lock (deleted) apache2 22778 www-data 15u REG 8,8 0 17 /tmp/.xcache.0.0.169170445.lock (deleted) apache2 22781 www-data 15u REG 8,8 0 17 /tmp/.xcache.0.0.169170445.lock (deleted) mysqld 29107 mysql 5u REG 8,8 0 12 /tmp/ibuA28pF (deleted) mysqld 29107 mysql 6u REG 8,8 0 13 /tmp/ibpTXuPw (deleted) mysqld 29107 mysql 7u REG 8,8 0 14 /tmp/ibQLeReo (deleted) mysqld 29107 mysql 8u REG 8,8 0 15 /tmp/ibNTdyEf (deleted) mysqld 29107 mysql 12u REG 8,8 0 16 /tmp/ib6kde56 (deleted) apache2 32516 www-data 15u REG 8,8 0 17 /tmp/.xcache.0.0.169170445.lock (deleted) apache2 32517 www-data 15u REG 8,8 0 17 /tmp/.xcache.0.0.169170445.lock (deleted) apache2 32558 www-data 15u REG 8,8 0 17 /tmp/.xcache.0.0.169170445.lock (deleted) apache2 32560 www-data 15u REG 8,8 0 17 /tmp/.xcache.0.0.169170445.lock (deleted) 6.空间有富余,权限也正确但无法写入,可能是文件系统的 inode 用完了,用 df -i 检查。和 inode 有关的参数,ls 是 -i,find 是 -inum 7. Linux 下,当你没有 lsof 可以用的时候,学会用 ls -l /proc/ /fd/。上面的 lsof 例子可以写成 # ls -l /proc/*/fd |grep /tmp 8. find 不仅仅能按文件名搜索,它还可以按类型-type、时戳 -atime/-ctime/-mtime、比较时戳 -newer、权限 -perm、大小 -size、所有者 -uid/-user 等条件来找文件 9. locate 很好用,但它依赖于 updatedb 生成的数据库,有些情况下,需要限制 updatedb 索引的文件系统范围。这时,要了解 locate 的局限性 10. 要理解,权限不止 wrx 这三个属性 11. bzip2 压缩率比 gzip 好,但对于上 G 的文件,速度过分慢 以上是您的好友通过QQ邮箱阅读空间分享给您的。 这篇文章来自: Plan the work, work the plan 该频道最近更新了以下文章: Unix 系统管理员的 n 种武器 版本控制入门插图教程 如果乔布斯死了 苹果该怎么办? 在QQ邮箱中阅读
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值