linux常用命令与问题排查命令记录

   日期:2024-12-26    作者:uiyb0 移动:http://ljhr2012.riyuangf.com/mobile/quote/46419.html

linux常用命令与问题排查命令记录

1.1 网卡

 

1.2 内存

1.2.1 free - 查看系统内存信息
1.2.1.1 使用方式
参数选项解释说明-b以Byte为单位显示内存的使用情况-m以MB为单位显示内存的使用情况@-K以KB为单位显示内存的使用情况-h以人类可读的形式显示内存的使用情况@-t显示内存总和列-s <间隔秒数>根据指定的间隔秒数持续显示内存的使用情况@-o不显示系统缓冲区列
1.2.1.2 举例说明

(1)查看系统内存

 

(2)定时查询内存

 

(3)检查使用超过100m的进程

 
1.2.2 vmstat - 虚拟内存统计
1.2.2.1 使用方式
参数选项解释说明-a显示活跃和非活跃内存-f显示从系统启动至今的fork进程数量-m显示slab信息-n只在开始时显示一次各字段名称-s显示内存相关统计信息及多种系统活动数量@-d显示磁盘相关统计信息-p显示指定磁盘分区统计信息-S使用指定单位显示。参数有k,K,m,M,分别代表1000,1024,1000000,1048576字节(byte)。默认单位为K(1024byte)-t统计信息带上时间戳
1.2.2.2 举例说明
1.2.2.2.1 显示虚拟内存的使用情况
 
    1.2.2.2.2 显示活跃和非活跃内存
     
    
    1.2.2.2.3 查看内存使用的详细信息
     
    

    这些信息分别来自于/proc/meminfo,/proc/stat和/proc/vmstat

     
    

    这些信息主要来自于/proc/diskstats。其中的merged表示一次来自于合并的写/读请求,系统一般会把多个连接/邻近的读/写请求合并到一起来操作。

    (5)查看/dev/sda1磁盘的读写统计信息

     
    
    • reads:来自于该分区的读的次数
    • read sectors:来自于该分区的读扇区的次数
    • writes:来自于该分区的写的次数
    • requested writes:来自于该分区的写请求次数。

    1.3 numa

     
    

    1.4 超线程

     
    

    1.5 时钟源

     
    

    1.6 raid

     
    

    1.7 文件

     
    

    1.8 磁盘

     
    
    1.8.1 iostat - I/O信息统计
    1.8.1.1 使用方式
    参数选项解释说明-c显示CPU的使用情况@-d显示磁盘的使用情况@-k每秒以kB为单位显示数据-m每秒以MB为单位显示数据-n显示NFS的使用情况-t显示每次统计的执行时间-p device指定要统计的磁盘设备名称,默认为所有的磁盘设备-x显示扩展统计
    1.8.1.2 举例说明
    1.8.1.2.1 显示所有设备的负载情况
     
    
    • 톙: 用户进程消耗的CPU时间百分比
    • %nice : 改变过优先级的进程占用的CPU时间百分比
    • %system : 系统(内核)进程消耗的CPU时间百分比
    • %iowait : IO等待所占用的CPU时间百分比
    • %steal : 虚拟机强制CPU等待的时间百分比
    • %idle : CPU处在空闲状态的时间百分比
      第3~4行中各列的含义如下
    • tps : 表示该设备每秒的传输次数,“一次传输”的意思是“一次I/O请求”,多个逻辑请求可能会被合并为“一次I/O请求”,“一次传输”请求的大小是未知的。
    • Blk_read/s : 表示每秒读取的数据块数
    • Blk_wrtn/s : 表示每秒写入的数据块数
    • Blk_read : 表示读取的所有块数
    • Blk_wrtn : 表示写入的所有块数
    1.8.1.2.2 定时显示所有信息
     
    
    1.8.1.2.3 只显示磁盘统计信息
     
    
    1.8.1.2.4 查看扩展信息
     
    
    • rrqm/s:每秒进行merge的读操作数目
    • wrqm/s:每秒进行merge的写操作数目
    • r/s:每秒完成的读I/O设备次数
    • w/s:每秒完成的写I/O设备次数
    • rkB/s:每秒读入的千字节数
    • wkB/s:每秒写入的千字节数
    • avgrq-sz:设备平均每次进行I/O操作的数据大小(扇区
    • avgqu-sz:平均I/O队列长度
    • await:设备平均每次I/O操作的等待时间(毫秒
    • svctm:设备平均每次I/O操作的服务时间(毫秒
    • Փ每秒钟用于I/O操作的百分比
    1.8.1.2.5 只查看CPU的统计信息
     
    
    1.8.2 iotop - 动态显示磁盘I/O统计信息
    1.8.2.1 使用方式
    参数选项解释说明-o显示正在使用I/O的进程或者线程,默认是显示所有@-d设置显示的间隔秒数-p只显示指定PID的信息@-u显示指定用户的信息-P只显示进程,一般是显示所有的线程-a显示从iotop启动后每个线程完成了的I/O总数-k设置显示单位为KB-t在每一行前添加一个当前的时间
    1.8.2.2 举例说明
    • 不接任何参数启动iotop命令
     
    
    • Total DISK READ:总的磁盘读取速度
    • Total DISK WRITE:总的磁盘写入速度
    • TID:进程pid值
    • PRIO:优先级
    • USER:用户
    • DISK READ:磁盘读取速度
    • DISK WRITE:磁盘写入速度
    • SWAPIN:从swap分区读取数据占用的百分比
    • IO:I/O占用的百分比
    • COMMAND:消耗I/O的进程名

    1.9 sn

     
    

    1.10 CPU

    1.10.1 mpstat - CPU信息统计
    1.10.1.1 使用方式
    参数选项解释说明-P指定CPU编号,例如:-P 0表示第一个CPU,-P 1表示第二个CPU,-P ALL表示所有CPU
    1.10.1.2 举例说明
    1.10.1.2.1 显示CPU信息统计
     
    

    说明
    第1列:06:13:34 PM,表示当前时间
    第2列:CPU,all表示所有CPU,0表示第一个CPU…
    后面9列的含义分别如下

    • 瀡户进程消耗的CPU时间百分比。
    • %nice:改变过优先级的进程占用的CPU时间百分比
    • %sys:系统(内核)进程消耗的CPU时间百分比
    • %iowait:IO等待所占用的CPU时间百分比
    • %irq:硬中断占用的CPU时间百分比
    • %soft:软中断占用的CPU时间百分比
    • %steal:虚拟机强制CPU等待的时间百分比
    • %guest:虚拟机占用CPU时间的百分比
    • %idle:CPU处于空闲状态的时间百分比
    1.10.1.2.2 显示指定CPU信息的统计
     
    

    1.11 sar - 收集系统信息

    1.11.1 使用方式
    参数选项解释说明-A显示系统所有资源设备(CPU,内存,磁盘)的运行状态-u显示系统所有CPU在采样时间内的负载状态@-P显示当前系统中指定CPU的使用情况-d显示系统所有硬盘设备在采样时间内的使用状况@-r显示在采样时间内系统内存的使用状况@-b显示在采样时间内缓冲区的使用情况@-v显示索引节点,文件和其他内核表的状态-n显示网络运行状态@-q显示运行队列的大小,它与系统当时的平均负载相同@-R显示进程在采样时间内的活动情况-y显示终端设备在采样时间内的活动情况-w显示系统交换活动在采样时间内的状态-o filename将命令结果以二进制格式存放在文件中,filename是文件名
    1.11.2 举例说明
    1.11.2.1 查看系统CPU的整体负载情况
     
    
    • 톳用户进程消耗的CPU时间百分比
    • %nice:改变过优先级的进程占用的CPU时间百分比
    • %system:系统(内核)进程消耗的CPU时间百分比
    • %iowait:IO等待所占用的CPU时间百分比
    • steal:虚拟机强制CPU等待的时间百分比
    • idle:CPU处在空闲状态的时间百分比
    1.11.2.2 显示运行队列的大小
     
    
    • runq-sz:运行队列的长度(等待运行的进程数
    • plist-sz:进程列表中进程(process)和线程(thread)的数量
    • ldavg-1:最后一分钟的系统平均负载(system load average
    • ldavg-5:过去5分钟的系统平均负载
    • ldavg-15:过去15分钟的系统平均负载
    1.11.2.3 显示系统内存的使用状况
     
    
    • kbmemfree:空闲物理内存量
    • kbmemused:使用中的物理内存量
    • %memused:物理内存量的使用率
    • kbbuffers:内核中作为缓冲区使用的物理内存容量
    • kbcached:内核中作为缓存使用的物理内存容量
    • kbcommit:应用程序当前使用的内存大小
    • %commit:应用程序当前使用的内存大小占总大小的使用百分比
    1.11.2.4 显示缓冲区的使用情况
     
    
    • tps:每秒钟物理设备的I/O传输总量
    • rtps:每秒钟从物理设备读入的数据总量
    • wtps:每秒钟向物理设备写入的数据总量
    • bread/s:每秒钟从物理设备读入的数据量,单位为块/s
    • bwrtn/s:每秒钟向物理设备写入的数据量,单位为块/s
    1.11.2.5 显示网络的运行状态

    (1查看网络接口信息

     
    
    • IFACE:网络接口
    • rxpck/s:每秒钟接收的数据包
    • txpck/s:每秒钟发送的数据包
    • rxkB/s:每秒钟接收的字节数
    • txkB/s:每秒钟发送的字节数
    • rxcmp/s:每秒钟接收的压缩数据包
    • txcmp/s:每秒钟发送的压缩数据包
    • rxmcst/s:每秒钟接收的多播数据包

    (2查看网络错误的统计数据

     
    
    • IFACE:网络接口
    • rxerr/s:每秒钟接收的坏数据包
    • txerr/s:每秒钟发送的坏数据包
    • coll/s:每秒的冲突数
    • rxdrop/s:因为缓冲充满,每秒钟丢弃的已接收数据包数
    • txdrop/s:因为缓冲充满,每秒钟丢弃的已发送数据包数
    • txcarr/s:发送数据包时,每秒载波错误数
    • rxfram/s:每秒接收数据包的帧对齐错误数
    • rxfifo/s:接收的数据包每秒FIFO过速的错误数
    • txfifo/s:发送的数据包每秒FIFO过速的错误数

    (3查看套接字信息

     
    
    • totsck:使用的套接字总数量
    • tcpsck:使用的TCP套接字数量
    • udpsck:使用的UDP套接字数量
    • rawsck:使用的raw套接字数量
    • ip-frag:使用的IP段数量
    • tcp-tw:处于TIME_WAIT状态的TCP套接字数量
    1.11.2.6 查看系统磁盘的读写性能
     
    
    • DEV:表示磁盘的设备名称
    • tps:表示该设备每秒的传输次数,“一次传输”的意思是“一次I/O请求”,多个逻辑请求可能会被合并为“一次I/O请求”,“一次传输”请求的大小是未知的。
    • rd_sec/s:表示每秒从设备读取的扇区数
    • wr_sec/s:表示每秒写入设备的扇区数目
    • avgrq-sz:设备平均每次I/O操作的数据大小(扇区
    • avgqu-sz:平均I/O队列长度
    • await:设备平均每次I/O操作的等待时间(毫秒
    • svctm:设备平均每次I/O操作的服务时间(毫秒
    • Փ每秒钟用于I/O操作的百分比

    2.1 docker

     
    

    2.2 kubernetes

     
     
    

    3.1 切屏

     
    

    3.2 命令行快捷方式

     
    

    3.3 vim快捷方式

    vim编辑方式/vimrc自动加载文件头等操作记录

    4.1 进程管理命令

    4.1.1 ps - 查看进程
    4.1.1.1 使用方式
    参数选项解释说明-a显示所有终端下执行的进程a显示与终端相关的所有进程,包含每个进程的完整路径x显示与终端无关的所有进程u显示进程的用户信息-u显示指定用户相关的进程信息-e显示所有进程-f额外显示UID,PPID,C与STIME栏位f显示进程树-H显示进程树-l以详细的格式来显示进程的状况-o自定义输出指定的字段,以逗号分隔-sort keykey表示为指定字段排序,默认升序+key升序,-key降序
    4.1.1.2 命令输出后第一行参数的解释说明
    1. ps
     
    
      1. ps -ef
       
      
        1. ps -aux
         
        
          1. 显示指定用户的相关进程信息
           
          
          1. 以详细格式显示进程状态
           
          
            1. 查看某个进程在哪个CPU上运行
             
            
            4.1.2 kill - 结束进程
            4.1.2.1 使用方式
            参数选项解释说明-l列出全部的信号名称-p指定kill命令只打印相关进程的进程号,而不发送任何信号-s指定要发送的信号
            4.1.2.2 举例说明
            4.1.2.2.1 列出所有信号的名称
             
            
              信号说明HUP(1)挂起,通常因终端掉线或用户退出而引发INT(2)中断,通常是按下Ctrl+c组合键来发出这个信号QUIT(3)退出,通常是按下CTRL+组合键来发出这个信号KILL(9)立即结束进程的运行TERM(15)终止,通常在系统关机时发送TSTP(20)暂停进程的运行,通常是按下Ctrl+z组合键来发出这个信号
              4.1.2.2.2 终止进程
              • kill指令默认使用的信号为15,用于结束进程。如果进程忽略此信号,则可以使用信号9强制终止进程。
               
              
              4.1.3 killall - 通过进程名终止进程
              4.1.3.1 使用方式
              参数选项解释说明-I不区分大小写匹配-g终止属于该进程组的进程-i在终止进程之前询问是否确认-l列出所有已知的信号名-q如果没有进程终止则不提示-r使用正则表达式匹配要终止的进程名称-s用指定的信号代替默认信号-u终止指定用户的进程-v报告信号是否发送成功-w等待所有被终止的进程死去。killall每秒都会检查一次被终止的进程是否仍然存在,其仅在都死光后才返回。注意,如果信号被忽略,或者没有起作用,或者进程停留在僵尸状态,那么killall可能会永久等待
              4.1.3.2 举例说明
              4.1.3.2.1 终止定时任务服务进程
               
              
              4.1.3.2.2 终止指定用户的所有进程
               
              
              4.1.4 pkill - 通过进程名终止进程
              4.1.4.1 使用方式
              参数选项解释说明-t终端杀死指定终端的进程-u用户杀死指定用户的进程
              4.1.4.2 举例说明
              4.1.4.2.1 通过进程名终止进程
               
              
              4.1.4.2.2 通过终端名终止进程
               
              
              4.1.4.2.3 通过用户名终止进程
               
              
              4.1.5 top - 实时显示系统中各个进程的资源占用状况
              4.1.5.1 使用方式
              参数选项解释说明-a将进程按照使用内存排序-b以批处理的模式显示进程信息,输出结果可以传递给其他程序或写入到文件中。在这种模式下,top命令不会接受任何输入,一直运行直到达到-n选项设置的阈值,或者按Ctrl+C等组合键终止程序-c显示进程的整个命令路径,而不是只显示命令名称-d指定每两次屏幕信息刷新之间的时间间隔-H指定这个可以显示每个线程的情况,否则就是进程的总的状态-i不显示闲置或者僵死的进程信息-ntop输出信息更新的次数,完成后将退出top命令-p显示指定的进程信息
              4.1.5.2 举例说明
              4.1.5.2.1 显示进程信息
               
              

                补充
                1)计算真正可用的内存数为:第四行的free+第四行的buffers+第五行的cached。
                2)在对内存进行监控时,要时刻关注top命令里第五行swap交换分区的used,如果这个数值还在不断地变化,则说明内核正在不断进行内存和swap的数据交换,这表示内存真的不够用了或者程序运行有内存溢出问题。
                3)在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况,显示多核不同核CPU的信息。
                4)直接用top无任何参数的方式查看会非常占用系统的资源。可以使用top -b -n1 > test的方式将数据重定向到文件里,再进行查看。

                4.1.5.2.2 将进程按照使用内存排序
                 
                
                4.1.5.2.3 以批处理模式显示进程信息
                 
                
                4.1.5.2.4 显示进程的完整路径
                 
                
                4.1.5.2.5 其他使用补充
                 
                
                4.1.6 nohup - 用户退出系统进程继续工作
                4.1.6.1 使用方式
                • nohup可以让程序以后台挂起的方式运行,被运行程序的输出信息将不会显示到终端,而是写入到当前目录的nohup.out文件中。如果当前目录的nohup.out文件不可写,则输出重定向到$HOME/nohup.out文件中。
                4.1.6.2 举例说明
                 
                
                4.1.7 strace - 跟踪进程的系统调用
                4.1.7.1 使用方式
                • strace是Linux环境下的一款程序调试工具,用于检查一个应用程序所使用的系统调用以及它所接收的系统信息。strace会追踪程序运行时的整个生命周期,输出每一个系统调用的名字、参数、返回值和执行所消耗的时间等
                参数选项解释说明-c统计每一个系统调用所执行的算时间、次数和出错的次数等-d输出strace关于标准错误的调试信息-f跟踪目标进程,以及目标进程创建的所有子进程@-ff如果提供-o filename,则将所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号-i输出系统调用的入口指针-q禁止输出关于脱离的消息-r输出每一个系统调用的相对时间-t在输出中的每一行前加上时间信息。例如:16:45:28-tt在输出中的每一行前加上时间信息,精确到微秒。例如11:18:59.759546@-ttt在输出中的每一行前加上时间信息,精确到微秒,而且时间表示为UNIX时间戳。例如1486111461.650434-T显示每次系统调用所花费的时间-v对于某些相关调用,把完整的环境变量、文件stat结构等打印出来-x以十六进制形式输出非标准字符串-xx所有字符串以十六进制形式输出-o filename将strace的输出写入文件filename-p pid指定要跟踪的进程pid,要同时跟踪多个pid,重复多次-p选项即可@-s strsize指定输出的字符串的最大长度,默认为32.并没有将文件名视为字符串,默认全部输出-u username以username的UID和GID执行所跟踪的命令

                输出过滤器

                参数选项解释说明-e expr输出过滤器,通过表达式,可以过滤掉你不想要的输出@-e trace=open表示只跟踪open调用而-e trace=open表示跟踪除open外所有-e trace=file只跟踪与文件操作有关的系统调用-e trace=process只跟踪与进程有关的系统调用-e trace=network只跟踪与网络有关的系统调用-e trace=signal只跟踪与系统信号有关的系统调用-e trace=desc只跟踪与文件描述符有关的系统调用-e trace=ipc只跟踪与进程通信有关的系统调用
                4.1.7.2 举例说明
                4.1.7.2.1 排查Nginx 403 forbidden错误
                 
                

                先将test.txt文件的内容清空,然后模拟去访问nginx

                 
                
                4.1.7.2.2 只跟踪与文件操作有关的系统调用(使用过滤器
                 
                
                4.1.7.2.3 通过pid跟踪进程
                 
                
                4.1.7.2.4 跟踪系统调用统计
                 
                
                4.1.7.2.5 重定向输出
                 
                
                4.1.7.2.6 对系统调用进行计时
                 
                
                4.1.8 ltrace - 跟踪进程调用库函数
                4.1.8.1 使用方式

                ltrace能够跟踪进程的库函数调用,它会显现出调用了哪个库函数,而strace则是跟踪进程的每个系统调用

                参数选项解释说明-c统计库函数每次调用的时间,最后程序退出时打印摘要-C解码低级别名称(内核级)为用户级名称-d打印调试信息-e expr输出过滤器,通过表达式,可以过滤掉你不想要的输出@-e printf表示只查看printf函数调用-f跟踪子进程-o filename将ltrace的输出写入文件filename-p pid指定要跟踪的进程pid@-r输出每一个调用的相对时间-S显示系统调用-t在输出中每一行前加上时间信息。例如 16:45:28-tt在输出中每一行前加上时间信息。例如 11:18:59.759546-ttt在输出中每一行前加上时间信息,精确到微妙,而且时间表示为UNIX时间戳。-T显示每次调用所花费时间-u username以username的UID和GID执行所跟踪的命令
                4.1.8.2 举例说明

                (1)ltrace使用

                 
                

                (2)通过pid跟踪进程调用库函数

                 
                 
                

                5.1 tcpdump - 监听网络流量

                5.1.1 使用方式
                参数选项解释说明-A以ASCII码的方式显示每一个数据包(不会显示数据包中链路层的头部信息)。在抓取包含网页数据的数据包时,可方便查看数据-c <数据包数目>接收到指定的数据包数目后退出命令@-e每行的打印输出中将包含数据包的数据链路层头部信息-i <网络接口>指定要监听数据包的网络接口@-n不进行DNS解析,加快显示速度@-nn不将协议和端口数字等转换成名字@-q以快速输出的方式运行,此选项仅显示数据包的协议概要信息,输出信息较短@-s <数据包大小>设置数据包抓取长度,如果不设置则默认为68字节,设置为0则自动选择合适的长度来抓取数据包-t在每行输出信息中不显示时间戳标记-tt在每行输出信息中显示无格式的时间戳标记-ttt显示当前行与前一行的延迟-tttt在每行打印的时间戳之前添加日期-ttttt显示当前行与第一行的延迟-v显示命令执行的详细信息-vv显示比-v选项更加详细的信息-vvv显示比-vv选项更加详细的输出
                5.1.2 举例说明
                5.1.2.1 不加参数运行tcpdump命令监听网络
                 
                
                5.1.2.2 精简输出信息
                 
                
                5.1.2.3 监听指定网卡收到的数据包
                 
                

                命令结果说明

                  5.1.2.4 监听指定主机的数据包
                   
                  
                  5.1.2.5 监听指定端口的数据包
                   
                  
                  5.1.2.6 监听指定协议的数据包
                   
                  

                  常见的协议关键字有ip,arp,icmp,tcp,udp等类型

                  5.1.2.7 利用tcpdump抓包详解tcp/ip连接和断开过程的案例

                  使用tcpdump对tcp数据进行抓包

                   
                  

                  数据传输过程

                   
                  

                  4次挥手过程

                   
                  

                  5.2 nmap - 网络探测工具和安全/端口扫描器

                  5.2.1 使用方式
                  参数选项解释说明-sSTCP同步扫描(TCP SYN@-sTTCP连接扫描-sn不进行端口扫描,只检查主机正在运行。该选项与老版本的-sP相同@-sU扫描UDP端口-sV探测服务版本信息-Pn只进行扫描,不ping主机-PS使用SYN包对目标主机进行扫描。默认是80端口,也可以指定端口,格式为-PS22或-PS22-25,80,113,1050,35000,记住PS和端口号之间不要有空格-PU使用udp ping扫描端口-O激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志,也就是操作系统类型-v显示扫描过程中的详细信息@-S设置扫描的源IP地址-g port设置扫描的源端口-oN把扫描的结果重定向到文件中-iL filename从文件中读取扫描的目标-p <端口>指定要扫描的端口,可以是一个单独的端口,也可以用逗号分隔开多个端口,或者使用“-”表示端口范围@-n不进行DNS解析,加快扫描速度@-exclude排除指定主机-excludefile排除指定文件中的主机
                  5.2.2 举例说明
                  5.2.2.1 查看主机当前开放的端口
                   
                  
                  5.2.2.2 扫描主机的指定端口
                   
                  
                  5.2.2.3 扫描局域网内所有的IP
                   
                  
                  5.2.2.4 探测目标主机的服务和操作系统的版本

                  特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


                  举报收藏 0评论 0
                  0相关评论
                  相关最新动态
                  推荐最新动态
                  点击排行
                  {
                  网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号