分类: LINUX
2007-09-21 16:01:29
Linux Support Tips (or 避免痛苦的艺术)
不要相信人,相信工具
"我们的系统上装了8G内存" (实际: 16G)
"我们用的是32位系统" (实际: 64位)
"系统掉电后,xorg.conf丢失" (实际: 正常关机后,xorg.conf丢失)
"今天这个系统没有人碰过" (实际: 下午有至少3个人在上面使用过U盘)
"环境变量已经设好了,可还是不工作" (实际: 环境变量没有设上)
"turbo上装的是和您们一样的软件,可就你们红旗有问题" (实际: turbo上用的是jdbc->odbc方式,红旗上使用的是jdbc->native (ocijdbc)方式)
"zip一个文件时zip崩溃" (实际: zip一个2G以上的文件时zip程序崩溃)
任何(与问题相关的)信息的都是有价值的
# sysdump.sh
# ldd
# set
# strace
# ltrace
# /proc
# /var/log/*
# debugfs
# /sbin/*
# set -x
# -v, -verbose, -debug...
# sysrq
# tcpdump
...
详细记录
软硬件配置信息
试验过程和结果
搜索到的URL和资料
google notebook
blog
日积月累、不断学习
chinaunix.net
读一下nntp的所有帖子
Red Hat Knowledge Base
Red Hat Magazine
Novell Support
自动化可自动化的一切
watch
alias
不要想当然
-1/0
代码是最好的(有时是唯一的)文档
# mount --guess-fstype
# acpid -f
# 如何设置unlimited in limits.conf
用户不会去看文档。
即使看了文档,也不一定看懂了。
即使看懂了,也不一定看全了。
即使看全了,文档也不一定正确。
即使文档正确,也不一定全面。
程序员不会去看文档 (除非手上没有代码)
程序员宁愿去看代码
程序员不相信别的程序员写的文档
程序员自己不会写文档 (除非被逼无奈)
精通 /sbin/*, /usr/sbin/*
最有用的top
# top -id 1
不常用的Linux进程信息
ps能够提供不少进程信息,比如进程号、进程运行状态、进程名称、所占CPU时间、所占内存等。除此以外,还有一些不很常用的进程信息,可以用来解决一些可能很常见的问题 (比如内存泄漏,进程运行异常等)。了解这些信息毕竟要比去读程序源码要简单一些,更何况有些时候根本没有源代码。
所打开的文件
获取方法1:
# ls -l /proc/$PID/fd/
获取方法2:
# lsof -p $PID
内存分配表
获取方法:
# lcat /proc/$PID/maps
堆栈
获取方法:
# pstack $PID
所发出的系统调用
获取方法:
# strace -p $PID
所发出的库函数调用
获取方法:
# ltrace -p $PID
进程继承关系
获取方法:
ps -eo user,pid,ppid,%cpu,%mem,vsz,rss,tty,stat,start,time,wchan,command --forest
运行时dumpcore
获取方法:
# gcore $PID
一行perl脚本
# perl -e 'while (<>) { if (m//) {...}}'
Undocumented Linux
# mount --guess-fstype
# acpid -f
# connect() returns ECONNRESET
# 0 means unlimited in limits.conf
# DC5. 0 SP1 bind enabled chroot jail
最有用的ps
[pczou@pczou bin]$ cat psl.sh
#!/bin/bash
# more info ps
ps -eo user,pid,ppid,%cpu,%mem,vsz,rss,tty,stat,start,time,wchan,command --forest $*
/proc/$PID/maps的用处
寻找内存泄漏
用vi看man手册
[pczou@pczou ~]$ cat /usr/bin/vman
#!/bin/bash
export MANPAGER="col -b | vim -c 'set filetype=man' -"
man $*