Linux运维实用命令

做为一名优秀的Java开发工程师,我们必不可少的会用到以下几个命令:

top----Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况 uptime----查看系统负载 free----显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer iostat----用于输出CPU和磁盘I/O相关的统计信息 netstat----用于显示各种网络相关信息 df----列出文件系统的整体磁盘空间使用情况 du----用于显示目录或文件的大小 ps----命令用于显示当前进程 (process) 的状态 ping----常用的网络命令,它通常用来测试与目标主机的连通性 接下来我们开始介绍各个命令的输出。

top----Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况 Linux中的top命令显示系统上正在运行的进程。它是系统管理员最重要的工具之一。被广泛用于监视服务器的负载。top命令的输出如下:

在上边的输出中,前五行水平显示了不同系统参数的概括,接下来是进程和它们在列中的属性。

系统运行时间和平均负载

第一行显示的信息的含义表示如下:

当前时间

系统已运行的时间

当前登录用户的数量

相应最近5、10和15分钟内的平均负载。

任务

第二行显示的是任务或者进程的总结。进程可以处于不同的状态。这里显示了全部进程的数量。除此之外,还有正在运行、睡眠、停止、僵尸进程的数量(僵尸是一种进程的状态)。

CPU 状态

第三行显示的是CPU状态。 这里显示了不同模式下的所占CPU时间的百分比。这些不同的CPU时间表示:

us, user: 运行(未调整优先级的) 用户进程的CPU时间

sy,system: 运行内核进程的CPU时间

ni,niced:运行已调整优先级的用户进程的CPU时间

wa,IO wait: 用于等待IO完成的CPU时间

hi:处理硬件中断的CPU时间

si: 处理软件中断的CPU时间

st:这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)。

内存使用

第四和第五行显示内存使用率,第一行是物理内存使用,第二行是虚拟内存使用(交换空间)。

物理内存显示如下:

全部可用内存 已使用内存 空闲内存 缓冲内存。 交换部分显示如下:

全部可用内存 已使用内存 空闲内存 缓冲交换空间。 进程信息: 接下来显示的当前机器中各个进程的信息,如下所示:

各个字段表示的含义如下:

PID:进程ID,进程的唯一标识符 USER:进程所有者的实际用户名 PR:进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。 NI:进程的nice值(优先级)。越小的值意味着越高的优先级。 VIRT:进程使用的虚拟内存。 RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。 SHR:SHR是进程使用的共享内存。 S:这个是进程的状态。它有以下不同的值: D – 不可中断的睡眠态。

R – 运行态

S – 睡眠态

T – 被跟踪或已停止

Z – 僵尸态

%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比。

%MEM:进程使用的可用物理内存百分比。

TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒。

COMMAND:运行进程所使用的命令。

当我们想查看每个进程中的所有线程的情况时,需要使用 top -h -p pid 命令,输出如下所示:

当我们指定要查看某个进程内部的各个线程的情况时,在输出的第二行就变成了 Threads 而不是之前的 Tasks

uptime----查看系统负载

其实top命令的第一行就是系统的负载,我们也可以使用uptime来单独查看。

重点关注参数:

load average 代表了最近1分钟,5分钟,15分钟CPU的平均负载情况。CPU核数乘以0.7,即如果CPU总核数为4,当load average上15分钟的数值达到2.8时,系统需要处理。

free----显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer 可以使用的参数如下:

-b:以Byte为单位显示内存使用情况 -k:以KB为单位显示内存使用情况 -m:以MB为单位显示内存使用情况 -g:以GB为单位显示内存使用情况 -o:不显示缓冲区调节列 -s:持续观察内存使用状况 -t:显示内存总和列 -V:显示版本信息

区别:

第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用。

第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。

所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。

iostat----用于输出CPU和磁盘I/O相关的统计信息 iostat命令的用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]]

可以使用的参数包括:

-c:只显示系统CPU统计信息,即单独输出avg-cpu结果,不包括device结果 -d:单独输出Device结果,不包括cpu结果 -k/-m:输出结果以kB/mB为单位,而不是以扇区数为单位 -x:输出更详细的io设备统计信息 interval/count:每次输出间隔时间,count表示输出次数,不带count表示循环输出

所表示的含义如下:

rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并 wrqm/s: 每秒对该设备的写请求被合并次数 r/s: 每秒完成的读次数 w/s: 每秒完成的写次数 rkB/s: 每秒读数据量(kB为单位) wkB/s: 每秒写数据量(kB为单位) avgrq-sz:平均每次IO操作的数据量(扇区数为单位) avgqu-sz: 平均等待处理的IO请求队列长度 await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位) svctm: 平均每次IO请求的处理时间(毫秒为单位) %util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率 需要重点关注参数

1、avgqu-sz 表示磁盘IO队列长度,即IO等待个数。

2、await 表示每次IO请求等待时间,包括等待时间和处理时间

3、svctm 表示每次IO请求处理的时间

4、%util 表示磁盘忙碌情况,一般该值超过80%表示该磁盘可能处于繁忙状态。

netstat----用于显示各种网络相关信息 这个命令更加常用了,可以使用的参数如下:

-a:(all)显示所有选项,netstat默认不显示LISTEN相关 -t:(tcp)仅显示tcp相关选项 -u:(udp)仅显示udp相关选项 -n:拒绝显示别名,能显示数字的全部转化成数字 -l:仅列出有在:Listen:(监听):的服务状态 -p:显示建立相关链接的程序名 -r:显示路由信息,路由表-e:显示扩展信息,例如uid等 -s:按各个协议进行统计 -c:每隔一个固定时间,执行该netstat命令 查看当前所有tcp端口:netstat -nltp

查看所有8080端口使用情况:netstat -an |grep 8080

df----列出文件系统的整体磁盘空间使用情况 该命令可选的参数如下:

df [选项] [文件名] 参数:

-a:--all,显示所有的文件系统,包括虚拟文件系统 -B:--block-size,指定单位大小。比如1k,1m等 -h:--human-readable,以人们易读的GB、MB、KB等格式显示 -H:--si,和-h参数一样,但是不是以1024,而是1000,即1k=1000,而不是1k=1024。 -i:--inodes,不用硬盘容量,而是以inode的数量来显示 -k:以KB的容量显示各文件系统,相当于--block-size=1k -m:以KB的容量显示各文件系统,相当于--block-size=1m -l:--local,只显示本地文件系统 --no-sync:在统计使用信息之前不调用sync命令(默认)。 -sync:在统计使用信息之前调用sync命令 -P:--portability,使用POSIX格式显示 -t:--type=TYPE,只显示指定类型的文件系统 -T:--print-type,显示文件系统类型 -x:--exclude-type=TYPE,不显示指定类型的文件系统。 --help:显示帮助信息。 --version:显示版本信息。

du----用于显示目录或文件的大小 -a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 -k或--kilobytes 以KB(1024bytes)为单位输出。 -m或--megabytes 以MB为单位输出。
-s或--summarize 仅显示总计,只列出最后加总的值。 -h或--human-readable 以K,M,G为单位,提高信息的可读性。 -x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 -L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。 -X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
-D或--dereference-args 显示指定符号链接的源文件大小。 -H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。 -l或--count-links 重复计算硬件链接的文件。

du,disk usage,是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在的,没有被删除的。它计算的大小就是当前他认为存在的所有文件大小的累加和。 df,disk free,通过文件系统来快速获取空间大小的信息,当我们删除一个文件的时候,这个文件不是马上就在文件系统当中消失了,而是暂时消失了,当所有程序都不用时,才会根据OS的规则释放掉已经删除的文件,df记录的是通过文件系统获取到的文件的大小,它比du强的地方就是能够看到已经删除 的文件,而且计算大小的时候,把这一部分的空间也加上了,更精确了。 当文件系统也确定删除了该文件后,这时候du与df就一致了。

ps----命令用于显示当前进程 (process) 的状态 -a 显示同一终端下的所有程序 -A 显示所有进程 c 显示进程的真实名称 -N 反向选择 -e 等于“-A” e 显示环境变量 f 显示程序间的关系 -H 显示树状结构 r 显示当前终端的进程 T 显示当前终端的所有程序 u 指定用户的所有进程 -au 显示较详细的资讯 -aux 显示所有包含其他使用者的行程 -C<命令> 列出指定命令的状况 –lines<行数> 每页显示的行数 –width<字符数> 每页显示的字符数 –help 显示帮助信息 –version 显示版本显示 eg.查看与java相关的进程信息:ps -ef|grep java

ping----常用的网络命令,它通常用来测试与目标主机的连通性

总结

这篇文章比较详细的介绍了常用的linux运维命令,这些命令对我们的日常工作效率的提高都有着显著的作用,在此总结下来和大家一起学习,研究,掌握其最简单的用法。

posted @ 2023-04-13 21:55  Linux运维阿铭  阅读(103)  评论(1编辑  收藏  举报