Linux 常用命令
系统
# uname -a # 查看系统名称/内核 #uname -r 查看内核版本 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加载的内核模块 #cd /lib/modules/$(uname -r) 进行到lib\modules下的内核模块 # env # 查看环境变量 #ulimit -a #查看系统资源限制;查看的是:vi /etc/security/limits.conf文件, 可以修改文件里面的参数,重启生效 #stat awk.txt 查看文件修改时间戳和详细信息 #cat /proc/acpi/thermal_zone/THRM/temperature 查看CPU温度 #locale 查看系统语言环境 # vi /etc/sysconfig/i18n 修LANG=zh_CN.GBK 或 LANG=zh_CN 或 LANG=zh_CN.GB2312 或 LANG=zh_CN.GB18030都会把语言环境改为中文。 不用重启服务,只需退出当前登陆,再次登陆环境就会改变。
资源
# free -m # 查看内存使用量和交换区使用量 # df -h # 查看各分区使用情况 # du -sh <目录名> # 查看指定目录的大小 # grep MemTotal /proc/meminfo # 查看内存总量 # grep MemFree /proc/meminfo # 查看空闲内存量 # uptime # 查看系统运行时间、用户数、负载 # cat /proc/loadavg # 查看系统负载 vmstat 全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等
磁盘和分区
# mount | column -t # 查看挂接的分区状态 # fdisk -l # 查看所有分区 # swapon -s # 查看所有交换分区 # hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备) # dmesg | grep IDE # 查看启动时IDE设备检测状况 #mount 盘符 /mnt #挂接U盘,光驱等 #badblocks 检查坏道位置的工具 ,http://blog.chinaunix.net/u/10723/showart_1332661.html
网络
# ifconfig # 查看所有网络接口的属性 # iptables -L # 查看防火墙设置 # route -n # 查看路由表 # netstat -lntp # 查看所有监听端口 # netstat -antp # 查看所有已经建立的连接 # netstat -s # 查看网络统计信息 # dmesg|grep eth #查看网卡信息(kernel会将开机信息存储在ring buffer中。 您若是开机时来不及查看信息,可利用dmesg来查看。 开机信息亦保存在/var/log目录中,名称为dmesg的文件里 )
#kudzu --probe --class=network #查看网卡信息,kudzu硬件查看命令 #nslookup www.usousou.com 查看域名的DNS解释服务器。 #netstat -r 查看默认网关 #watch more /proc/net/dev 查看网卡 流量的统计信息
进程
# ps -ef # 查看所有进程 # top # 实时显示进程状态
用户
# w # 查看活动用户 # id <用户名> # 查看指定用户信息 # last # 查看用户登录日志 # cut -d: -f1 /etc/passwd # 查看系统所有用户 # cut -d: -f1 /etc/group # 查看系统所有组 # crontab -l # 查看当前用户的计划任务
服务
# chkconfig --list # 列出所有系统服务 # chkconfig --list | grep on # 列出所有启动的系统服务
程序
# rpm -qa # 查看所有安装的软件包
文件 清空test.txt文件的三种方式:1、 echo "" >test.txt ;2、 >test.txt ;3、cat /dev/null >test.txt
Linux服务定制指南:http://doc.chinahtml.com/Manual/rhl-cg-zh_CN-9/ch-services.html
PS命令: UID - 用户ID; PID - 进程ID; PPID - 进程父ID; C - CPU利用率,以整数表示; SZ - 进程用到的swap的量,这是一个粗略计算; RSS - 驻留内存大小; PSR - 进程使用的处理器,在多处理器上可以体现出来,如下面的两个进程使用的不同的处理器(超线程的也算); STIME - 进程的启动时间; TTY - 与进程关联的终端; TIME - 进程使用CPU累计时间; CMD - 执行文件的名称 LWP - light weight process ID 可以称其为线程ID。 NLWP - 进程中的线程数number of lwps (threads) in the process。 SID - 即session ID
下面对命令选项进行说明: -a 显示所有终端机下执行的程序,除了阶段作业领导者之外。 a 显示现行终端机下的所有程序,包括其他用户的程序。 -A 显示所有程序。 -c 显示CLS和PRI栏位。 c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 -C<指令名称> 指定执行指令的名称,并列出该指令的程序的状况。 -d 显示所有程序,但不包括阶段作业领导者的程序。 -e 此参数的效果和指定"A"参数相同。 e 列出程序时,显示每个程序所使用的环境变量。 -f 显示UID,PPIP,C与STIME栏位。 f 用ASCII字符显示树状结构,表达程序间的相互关系。 -g<群组名称> 此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。 g 显示现行终端机下的所有程序,包括群组领导者的程序。 -G<群组识别码> 列出属于该群组的程序的状况,也可使用群组名称来指定。 h 不显示标题列。 -H 显示树状结构,表示程序间的相互关系。 -j或j 采用工作控制的格式显示程序状况。 -l或l 采用详细的格式来显示程序状况。 L 列出栏位的相关信息。 -m或m 显示所有的执行绪。 n 以数字来表示USER和WCHAN栏位。 -N 显示所有的程序,除了执行ps指令终端机下的程序之外。 -p<程序识别码> 指定程序识别码,并列出该程序的状况。 p<程序识别码> 此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异。 r 只列出现行终端机正在执行中的程序。 -s<阶段作业> 指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。 s 采用程序信号的格式显示程序状况。 S 列出程序时,包括已中断的子程序资料。 -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。 t<终端机编号> 此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异。 -T 显示现行终端机下的所有程序。 -u<用户识别码> 此参数的效果和指定"-U"参数相同。 u 以用户为主的格式来显示程序状况。 -U<用户识别码> 列出属于该用户的程序的状况,也可使用用户名称来指定。 U<用户名称> 列出属于该用户的程序的状况。 v 采用虚拟内存的格式显示程序状况。 -V或V 显示版本信息。 -w或w 采用宽阔的格式来显示程序状况。 x 显示所有程序,不以终端机来区分。 X 采用旧式的Linux i386登陆格式显示程序状况。 -y 配合参数"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。 -<程序识别码> 此参数的效果和指定"p"参数相同。 --cols<每列字符数> 设置每列的最大字符数。 --columns<每列字符数> 此参数的效果和指定"--cols"参数相同。 --cumulative 此参数的效果和指定"S"参数相同。 --deselect 此参数的效果和指定"-N"参数相同。 --forest 此参数的效果和指定"f"参数相同。 --headers 重复显示标题列。 --help 在线帮助。 --info 显示排错信息。 --lines<显示列数> 设置显示画面的列数。 --no-headers 此参数的效果和指定"h"参数相同,只在列表格式方面稍有差异。 --group<群组名称> 此参数的效果和指定"-G"参数相同。 --Group<群组识别码> 此参数的效果和指定"-G"参数相同。 --pid<程序识别码> 此参数的效果和指定"-p"参数相同。 --rows<显示列数> 此参数的效果和指定"--lines"参数相同。 --sid<阶段作业> 此参数的效果和指定"-s"参数相同。 --tty<终端机编号> 此参数的效果和指定"-t"参数相同。 --user<用户名称> 此参数的效果和指定"-U"参数相同。 --User<用户识别码> 此参数的效果和指定"-U"参数相同。 --version 此参数的效果和指定"-V"参数相同。 --widty<每列字符数> 此参数的效果和指定"-cols"参数相同。
命令: ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 10:30 ? 00:00:00 init [3] root 2 1 0 10:30 ? 00:00:00 [migration/0]
命令: ps -eF UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root 1 0 0 515 640 0 10:30 ? 00:00:00 init [3] root 2 1 0 0 0 0 10:30 ? 00:00:00 [migration/0]
命令:ps -efL UID PID PPID LWP C NLWP STIME TTY TIME CMD root 1 0 1 0 1 10:30 ? 00:00:00 init [3] root 2 1 2 0 1 10:30 ? 00:00:00 [migration/0]
命令:ps -ejH PID PGID SID TTY TIME CMD 1 1 1 ? 00:00:00 init 2 1 1 ? 00:00:00 migration/0
vmstat 全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下文切换、CPU使用等。
在系统中使用root身份,执行vmstat 1 命令,观察性能状况。各参数值含义见下方:
vmstat
procs
r:
运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)
b:
处于不可中断状态的进程数,常见的情况是由IO引起的
memory
swpd: 切换到交换内存上的内存(默认以KB为单位)
如果 swpd 的值不为0,或者还比较大,比如超过100M了,但是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。
free: 空闲的物理内存
buff: 作为buffer cache的内存,对块设备的读写进行缓冲
cache: 作为page cache的内存, 文件系统的cache
如果 cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi 会非常小。
Swap
si: 交换内存使用,由磁盘调入内存
so: 交换内存使用,由内存调入磁盘
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。
常有人看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是 si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
io
bi: 从块设备读入的数据总量(读磁盘) (KB/s),
bo: 写入到块设备的数据总理(写磁盘) (KB/s)
随机磁盘读写的时候,这2个 值越大(如超出1M),能看到CPU在IO等待的值也会越大
system
in: 每秒产生的中断次数
cs: 每秒产生的上下文切换次数
上面这2个值越大,会看到由内核消耗的CPU时间会越多
cpu
us: 用户进程消耗的CPU时间百分比
us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了
sy: 内核进程消耗的CPU时间百分比
sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。
wa: IO等待消耗的CPU时间百分比
wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。
id: CPU处在空闲状态时间百分比
这个 vmstat 的输出那些信息值得关注?
procs r: 运行的进程比较多,系统很繁忙
io bo: 磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常
cpu us: 持续大于50,服务高峰期可以接受
cpu wa: 稍微有些高
cpu id:持续小于50,服务高峰期可以接受