运维常用的linux命令

来源:岁月联盟 编辑:exp 时间:2011-09-15

1、vmstat  报告虚拟内存统计信息
      vmstat [-V] [-n] [delay [count]]         delay是两次输出之间的延迟时间;count是指按照这个时间间隔统计的次数。         例如:  vmstat -n 3       (每个3秒刷新一次)
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---
r b       swpd   free   buff cache        si  so         bi   bo        in  cs      us sy id wa
1 0    144 186164 105252 2386848    0    0    18   166   83     2     48 21 31 0
2 0    144 189620 105252 2386848    0    0     0   177  1039 1210   34 10 56 0
0 0    144 214324 105252 2386848    0    0     0    10   1071   670    32 5 63 0
Procs
r: 等待运行的进程数 b: 处在非中断睡眠状态的进程数 w: 被交换出去的可运行的进程数。此数由 linux 计算得出,但 linux 并不耗尽交换空间
Memory
 swpd: 虚拟内存使用情况,单位:KB
 free: 空闲的内存,单位KB
buff: 被用来做为缓存的内存数,单位:KB 
Swap
si: 从磁盘交换到内存的交换页数量,单位:KB/秒
so: 从内存交换到磁盘的交换页数量,单位:KB/秒
IO
bi: 发送到块设备的块数,单位:块/秒
bo: 从块设备接收到的块数,单位:块/秒
System
in: 每秒的中断数,包括时钟中断
cs: 每秒的环境(上下文)切换次数
CPU
按 CPU 的总使用百分比来显示
us: CPU 使用时间
sy: CPU 系统使用时间
id: 闲置时间
如果在多用户环境中us+sys》80,进程就会在运行队列中花费等待时间,响应时间和吞吐量就会下降。wa>40表明磁盘io没有也许存在不合理的平衡,或者对磁盘操作比较频繁
 
2、lsmod  查看linux系统中已经加载的模块数
比如说我们可以查看系统中是否已经加载ip_vs的模块 ipvsadm  :lsmod | grep ip_vs
 
3、lsof(list open files)是一个列出当前系统打开文件的工具
lsof 常见的用法是查找应用程序打开的文件的名称和数目。可用于查找出某个特定应用程序将日志数据记录到何处,或者正在跟踪某个问题。
lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件
lsof -u username 显示所属user进程打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
lsof -d FD 显示指定文件描述符的进程
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
lsof -i 用以显示符合条件的进程情况
例如:查看22端口现在运行的情况
# lsof -i :22
查看所属root用户进程所打开的文件类型为txt的文件:
# lsof -a -u root -d txt
在卸载文件系统时,如果该文件系统中有任何打开的文件,操作通常将会失败。那么通过lsof可以找出那些进程在使用当前要卸载的文件系统,如下:
# lsof /GTES11/
当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内容。 假如由于误操作将/var/log/messages文件删除掉了,那么这时要将/var/log/messages文件恢复的方法如下:
首先使用lsof来查看当前是否有进程打开/var/logmessages文件,如下:
# lsof |grep /var/log/messages
syslogd 1283 root 2w REG 3,3 5381017 1773647 /var/log/messages (deleted)
从上面的信息可以看到 PID 1283(syslogd)打开文件的文件描述符为 2。同时还可以看到/var/log/messages已经标记被删除了。因此我们可以在 /proc/1283/fd/2 (fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下:
# head -n 10 /proc/1283/fd/2
从上面的信息可以看出,查看 /proc/8663/fd/15 就可以得到所要恢复的数据。如果可以通过文件描述符查看相应的数据,那么就可以使用 I/O 重定向将其复制到文件中,如:
cat /proc/1283/fd/2 > /var/log/messages
4、dmidecode  帮助收集电脑系统信息的管理系统
    dmidecode -s system-serial-number   //显示系统序列号   -s, --string KEYWORD Only display the value of the given DMI string   只显示指定DMI字符串的信息
    dmidecode -t memory      //显示内存信息  -t, --type TYPE       Only display the entries of given type  #只显示指定条目的信息
    dmidecode -t 11       #显示OEM信息
5、mii-tool 这是Linux下专门设置网卡工作模式的命令
    (1) 查看网卡的工作模式,输入命令:#mii-tool -v        “100BaseTx-FD”意为100M Full Duplex。
    (2) 更改网卡的工作模式,输入命令:#mii-tool -F media [interface]   
例如,设置网卡工作在10M半双工模式下,输入命令:#mii-tool -F 10baseT-HD eth0
    (3)恢复网卡的自适应工作模式,输入命令:#mii-tool -r eth0
6、sort ~/.bash_history | uniq -c | sort -nr | head      //可以查看系统用户最常使用的几个命令,其中uniq -c 即打印每一重复行出现的次数。sort -n是按数值排序 -r是指逆序显示。
7、uptime 查看系统负载值  1,5,15分钟
     /proc/loadavg  也显示了系统的负载值
8、显示消耗内存/CPU最多的10个进程
ps aux | sort -nk +4 | tail
ps aux | sort -nk +3 | tail
9、查看apache的并发请求数及其TCP连接状态
netstat -n|awk '/^tcp/{++S[$NF]} END {for (a in S) print a,S[a]}'
10、把当前目录下*.sh文件改名为*.SH
find . -name "*.sh" | sed 's/(.*).sh/mv ? 1 .SH/ ' |sh
find . -name "*.sh" | sed 's/(.*).sh/mv & 1 .SH/ ' |sh
11、ssh执行远程的程序,并在本地显示
ssh -n -l root 10.48.30.197 "ls -l /root"
12、以http方式共享当前文件夹的文件
python -m SimpleHTTPServer
在浏览器中输入:http://IP:8000/ 即可下载当前目录下的文件。
13、locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。
locate -n 100 a.out : 寻找所有叫 a.out 的档案,但最多只显示 100 个
locate chdrv : 寻找所有叫 chdrv 的档案
find / -name "*chdrv*" -print   同上,区别:find只查找具体的文件和目录,显示数目要比上述命令小。
14、which  取得程序名列表。命令位置的具体路径。
root@svn-30-194:~# which top
/usr/bin/top
 15、Linux 禁ping和开启ping操作
 # echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
如果要恢复,只要:
# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
作者 “lovecode”