Linux运维实用命令

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_25827845/article/details/83956874

(尊重劳动成果,转载请注明出处:https://blog.csdn.net/qq_25827845/article/details/83956874冷血之心的博客)

目录

top----Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况

 系统运行时间和平均负载

任务

CPU 状态

内存使用

进程信息:

uptime----查看系统负载

free----显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer

iostat----用于输出CPU和磁盘I/O相关的统计信息

扫描二维码关注公众号,回复: 4282537 查看本文章

netstat----用于显示各种网络相关信息

df----列出文件系统的整体磁盘空间使用情况

du----用于显示目录或文件的大小

ps----命令用于显示当前进程 (process) 的状态

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

总结


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

  • top----Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况
  • uptime----查看系统负载
  • free----显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的bufferiostat----用于输出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运维命令,这些命令对我们的日常工作效率的提高都有着显著的作用,在此总结下来和大家一起学习,研究,掌握其最简单的用法。

如果对你有帮助,记得点赞哦~欢迎大家关注我的博客,可以进群366533258一起交流学习哦~

本群给大家提供一个学习交流的平台,内设菜鸟Java管理员一枚、精通算法的金牌讲师一枚、Android管理员一枚、蓝牙BlueTooth管理员一枚、Web前端管理一枚以及C#管理一枚。欢迎大家进来交流技术。
 

猜你喜欢

转载自blog.csdn.net/qq_25827845/article/details/83956874