显示标签为“linux”的博文。显示所有博文
显示标签为“linux”的博文。显示所有博文

2009年3月17日星期二

常用的Linux系统分析和调优命令

1. ldd
查找命令需要的动态连接库
yangguo:~ # ldd /bin/ls
linux-gate.so.1 => (0xffffe000)
librt.so.1 => /lib/librt.so.1 (0xb8068000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb804b000)
libacl.so.1 => /lib/libacl.so.1 (0xb8042000)
libc.so.6 => /lib/libc.so.6 (0xb7ee6000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7ecb000)
/lib/ld-linux.so.2 (0xb8096000)
libdl.so.2 => /lib/libdl.so.2 (0xb7ec6000)
libattr.so.1 => /lib/libattr.so.1 (0xb7ec0000)

2. ltrace
查看进程的库调用
yangguo:~ # ltrace -c find ~

% time seconds usecs/call calls function
------ ----------- ----------- --------- --------------------
92.49 2.245147 12070 186 readdir64
4.72 0.114615 3274 35 __fxstatat64
0.52 0.012696 147 86 memcpy
0.41 0.009919 23 425 __errno_location
0.38 0.009212 9212 1 dcgettext
0.16 0.003963 46 85 __fprintf_chk
0.16 0.003896 19 203 strlen
0.13 0.003162 19 166 free
[.....]
0.00 0.000019 19 1 textdomain
------ ----------- ----------- --------- --------------------
100.00 2.427575 2091 total

3. strace
查看进程运行的系统调用
yangguo:~ # strace -e open ls .bashrc
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib/librt.so.1", O_RDONLY) = 3
open("/lib/libselinux.so.1", O_RDONLY) = 3
open("/lib/libacl.so.1", O_RDONLY) = 3
open("/lib/libc.so.6", O_RDONLY) = 3
open("/lib/libpthread.so.0", O_RDONLY) = 3
open("/lib/libdl.so.2", O_RDONLY) = 3
open("/lib/libattr.so.1", O_RDONLY) = 3
open("/dev/urandom", O_RDONLY) = 3


4. file
查看文件类型
yangguo:~ # file /usr/bin/file
/usr/bin/file: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs), stripped

5. mount
列出文件系统的安装点情况
yangguo:~ # mount
/dev/sda7 on / type ext3 (rw,acl,user_xattr)
/proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
debugfs on /sys/kernel/debug type debugfs (rw)
udev on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/sda8 on /home type reiserfs (rw,acl,user_xattr)
/dev/sda1 on /windows/c type fuseblk (rw,noexec,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sda5 on /windows/d type fuseblk (rw,noexec,nosuid,nodev,allow_other,default_permissions,blksize=4096)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
securityfs on /sys/kernel/security type securityfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
gvfs-fuse-daemon on /home/fong/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=fong)

6. df
查看文件系统的使用情况
yangguo:~ # df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda7 15G 7.2G 7.0G 51% /
udev 987M 632K 986M 1% /dev
/dev/sda8 35G 26G 8.9G 75% /home
/dev/sda1 36G 20G 16G 55% /windows/c
/dev/sda5 54G 28G 27G 51% /windows/d

7. du
查看文件目录的大小
yangguo:~ # du -sh /lost+found/
16K /lost+found/

8. readelf
读取elf二进制文件的内容
yangguo:~ # readelf --file-header /bin/ls
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x8049ba0
Start of program headers: 52 (bytes into file)
Start of section headers: 99276 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 9
Size of section headers: 40 (bytes)
Number of section headers: 32
Section header string table index: 31

9. stat
查看文件属性
yangguo:~ # stat --filesystem /etc/profile
File: "/etc/profile"
ID: 8d9614f821ddde52 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 3870200 Free: 2007970 Available: 1811375
Inodes: Total: 983040 Free: 667527

10. lspci
查看pci硬件信息, 使用 -v 可以查看详细信息。
yangguo:~ # lspci
00:00.0 Host bridge: Intel Corporation Mobile PM965/GM965/GL960 Memory Controller Hub (rev 0c)
00:01.0 PCI bridge: Intel Corporation Mobile PM965/GM965/GL960 PCI Express Root Port (rev 0c)
00:19.0 Ethernet controller: Intel Corporation 82566MM Gigabit Network Connection (rev 03)
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #4 (rev 03)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 03)
00:1c.2 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 3 (rev 03)
00:1c.3 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 4 (rev 03)
00:1c.4 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 5 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f3)
00:1f.0 ISA bridge: Intel Corporation 82801HBM (ICH8M-E) LPC Interface Controller (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 03)
01:00.0 VGA compatible controller: nVidia Corporation Quadro NVS 140M (rev a1)
03:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (rev 61)
15:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b6)

11. lsusb
查看usb设备信息, 使用 -v 可列出详细信息。
yangguo:~ # lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 002: ID 04b3:3107 IBM Corp. ThinkPad 800dpi Optical Travel Mouse
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 003: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Bus 003 Device 002: ID 0a5c:2110 Broadcom Corp. Bluetooth Controller
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

12. netstat
列出网络连接情况,包括路由(-r),接口(-i), masquerade连接(-M),统计信息(-s),广播信息(-g)和各种协议 TCP (-t), UDP (-u), or raw (-r)
yangguo:~ # netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
147.2.212.0 * 255.255.255.0 U 0 0 0 eth0
loopback * 255.0.0.0 U 0 0 0 lo
default 147.2.212.254 0.0.0.0 UG 0 0 0 eth0

13. /proc文件系统
/proc是一个伪文件系统,用来保存总要的内核信息。
13.1 /proc/cpuinfo, 查看cpu信息
yangguo:~ # cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Core(TM)2 Duo CPU T8300 @ 2.40GHz
stepping : 6
cpu MHz : 800.000
cache size : 3072 KB

/proc/interrupts:使用的中断
/proc/devices: 可用的设备
/proc/modules:装载的内核模块
/proc/cmdline:内核命令行
/proc/meminfo:具体的内存使用情况
/proc/config.gz:正在运行的内核压缩配置文件
/proc/NNN : 具体某个进程的运行情况,其中NNN是PID

14. procinfo
查看/proc文件系统中重要信息的总体情况
yangguo:~ # procinfo
Linux 2.6.27.19-5-pae (geeko@buildhost) (gcc 4.3.2) #1 SMP 2009-02-28 04:40:21 +0100 2CPU [yangguo.]

Memory: Total Used Free Shared Buffers Cached
Mem: 2019620 1816992 202628 0 124348 976736
Swap: 4192924 984 4191940

Bootup: Tue Mar 17 09:56:04 2009 Load average: 2.24 2.28 1.53 3/372 3209

user : 2:21:47.06 27.3% page in : 4737423 disk 1: 299547r 253876w
nice : 0:00:11.15 0.0% page out: 7381544
system: 0:18:04.21 3.5% page act: 923262
IOwait: 0:31:45.83 6.1% page dea: 618072
hw irq: 0:00:23.38 0.1% page flt: 118613486
sw irq: 0:00:17.70 0.0% swap in : 219
idle : 5:36:29.85 64.9% swap out: 326
uptime: 4:19:12.73 context : 39369113

irq 0: 10709293 timer irq 18: 0 uhci_hcd:usb7
irq 1: 20459 i8042 irq 19: 2 ehci_hcd:usb2
irq 8: 1 rtc0 irq 20: 294 uhci_hcd:usb3
irq 9: 17710 acpi irq 21: 0 uhci_hcd:usb4
irq 12: 1275484 i8042 irq 22: 3 ehci_hcd:usb1
irq 14: 150963 ata_piix irq215: 254583 iwlagn
irq 15: 0 ata_piix irq216: 282251 eth0
irq 16: 31118 uhci_hcd:usb5, yenta irq217: 568250 ahci
irq 17: 2030 uhci_hcd:usb6, HDA In


2007年5月22日星期二

linux下强大的编辑器工具vi使用技巧

一、vi基本命令

1)光标命令

左h 上j 下k 右l

nG ——n为行数,该命令立即使光标跳到指定行;n为空,光标跳到文件最后一行。

Ctrl+G——光标所在位置的行数和列数报告

w,b——使光标向前或向后跳过一个单词

2)编辑命令

(n)dd 删除

(n)yy 复制

i 光标前插入

a 当前字母后插入

r 在当前光标处替换

cw 替换光标所在处的单词(从光标开始处)

dw 删除光标所在处的单词

x 删除(右)

X 删除(左)

u 撤销

. 重复上次操作

o 插入新行

J 合并两行

A 行尾

:.,3w /tmp/xx

:r /tmp/xx

3)查找命令

f 查找

/ 查找

4)复制粘贴命令

(n)yy 拷贝n行到剪切板

p 粘贴(后)

P 粘贴(当前)

二、vi选项设置

vi是一个强大的编辑器,它不仅可以用来处理我们平时的文本工作,还可以用来写程序文件。在用vi进行程序编辑时,它可以实现语法加亮显示、自动缩进、括号匹配等编辑功能。为控制不同的编辑功能,vi 提供了很多内部选项。

利用 :set 命令可以设置选项。基本语法为:

: set option 设置选项 option

常见的功能选项包括:

autoindent 设置该选项,则正文自动缩进

ignorecase 设置该选项,则忽略规则表达式中大小写字母的区别

number 设置该选项,则显示正文行号

ruler 设置该选项,则在屏幕底部显示光标所在行、列的位置

tabstop 设置按 Tab 键跳过的空格数。例如:set tabstop=n,n默认值为8

1)语法加亮显示

: syntax on 该命令在vi中打开语法加亮显示的功能。这样以后在输入的字符中,vi就会自动的识别出关键字,字符串以及其他的一些语法元素,并以不同的颜色来显示出来。

2)自动缩进

在vi中自动缩进的选项一般有以下的几种:

autoindent: 在这种缩进形式中,新增加的行和前一行有相同的缩进形式。

smartindent: 在这种缩进模式中,每一行都和前一行有相同的缩进量,同时能够正确的识别出{和},当遇到右花括号(}),则取消了缩进形式。此外还增加了识别C语言关键 字的功能。如果一行是以#开头的,那么这种格式将会被特殊对待而不采用缩进格式。这种缩进格式强于autoindent。

cindent:这是C语言的缩进形式,采用这样的缩进方式的程序语言有:C,C++,Java等。当采用这种缩进格式时,vi就会自动的采用标准的C语言形式。这种缩进格式强于smartindent。

可以用如下命令进行缩进形式的设置:

:set autoindent(ai)

:set smartindent(si)

:set cindent(ci)

3)显示行号

:set number(nu) 显示行号

: set nonumber (nonu) 不显示行号

在每个用户的目录下,都有一个vi的配置文件".vimrc"(没有的话可以自己创建)。用户可以编辑它,输入以上命令,使这些设置在每次vi时都有效。例如:在.vimrc文件中加入如下设置行:

set nu #显示行号

set nonu #不显示行号

set ic #查找时不考虑大小写

set noic #查找时考虑大小写

set smartindent #自动缩进

syntax on #语法加亮