linux运维基础

 ZR_yst     2023-07-17     493     0   

欢迎来到银盒子的世界~

(1)sudo 根权限

(2)ls 当前目录文件及子目录   e.g.:ls test/

         ls +目录路径 该目录路径的文件及子目录

         ls -al 目录路径 该目录路径的文件及子目录+文件Unix权限、用户组、用户信息

(3)cd +目录路径

              ..

              - 返回上一次的目录

(4)mkdir 创建子文件夹

                    +路径和名称

                    -p 路径和名称 路径可以不存在

                    +名称 当前目录创建目录

(5)cp 拷贝

             源文件 目的文件

             源目录 目的目录 -rf

(6)rm 文件名

                           -f 需要根权限

              目录名称 -rf 删除目录

(7)grep "关键词" 文件名 -r 在指定文件中检索包含关键词的行

                                目录 -r   目录。。。 -r 递归查询

                                             | grep "关键词2"  在关键词1的结果中检索包含关键词2的行

                                             | grep -v "关键词2"

(8)cat 文件名 输出文件内容

(9)poweroff 关机 

         reboot 重启

                     -f 强制重启,无需shutdown

(10)yum centos

           apt -get

(11)性能分析

top:

top [-] [d] [q] [c] [S] [s] [i] [n] [b]

    其中 

    d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
    q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
    c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
    S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
    s : 安全模式,将交谈式指令取消, 避免潜在的危机
    i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
    n : 更新的次数,完成后将会退出 top
    b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
   

    top运行参数解析:

   

    us 用户模式下CPU占比 sy系统模式下CPU占比

    ni

    图片.png

        图片.png

        id 空闲状态CPU占比

        wa 因为I/O等待造成的CPU占用比

        hi 硬中断占比

        si 软中断占比

        st CPU等待虚拟机调度的时间占比

       

        VIRT 进程使用虚拟内存

        RES 常驻内存

        SHR 进程使用共享内存

        S:进程运行状态

        %CPU:运行时CPU占比

        %MEM:内存占比

        TIME+:进程占用CPU总时长

        COMMAND:进程名

        1. 查看CPU方法

        总核数=物理CPU个数✖每颗物理CPU核数

        总逻辑CPU数=物理CPU个数 X 每颗物理CPU的核数 X 超线程数

        2. 查看物理CPU个数

        cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l

        3. 查看每个物理CPU中core的个数(即核数)

        cat /proc/cpuinfo| grep “cpu cores”| uniq

        4. 查看逻辑CPU的个数

        cat /proc/cpuinfo| grep “processor”| wc –l
         top -p +PID 查看进程信息

         top -H -p: 该进程所有线程的top信息

         top视图下 按P CPU占用百分比排序 M 占用内存百分比排序 T 累计占据CPU时间排序

(12)进程

ps:

-A    显示所有的进程,跟-e的效果相同
-a    显示现行终端机下的所有进程,包括其他用户的进程
-u    显示当前用户的进程状态
-x    通常与 a 这个参数一起使用,可列出较完整信息
-l    较长、较详细的将该PID的信息列出
-j    工作的格式(jobs format)
-f    把进程的所有信息都显示出来
-e    表示显示所有继承
[root]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0 193952  7068 ?        Ss   01:43   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    01:43   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   01:43   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    01:43   0:00 [ksoftirqd/0]
root          7  0.0  0.0      0     0 ?        S    01:43   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    01:43   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        S    01:43   0:01 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   01:43   0:00 [lru-add-drain]
root         11  0.0  0.0      0     0 ?        S    01:43   0:00 [watchdog/0]
root         12  0.0  0.0      0     0 ?        S    01:43   0:00 [watchdog/1]
root         13  0.0  0.0      0     0 ?        S    01:43   0:00 [migration/1]
root         14  0.0  0.0      0     0 ?        S    01:43   0:00 [ksoftirqd/1]
root         16  0.0  0.0      0     0 ?        S<   01:43   0:00 [kworker/1:0H]

VSZ:该进程使用掉的虚拟内存量 (Kbytes)
RSS:该进程占用的固定的内存量 (Kbytes)
TTY:该进程是在那个终端机上面运行,若与终端机无关,则显示?,另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:代表该进程目前的状态,主要的状态有:

    R:该进程正在运行
    S:该进程正在休眠,但可被某些信号(signal)唤醒
    D:无法中断的休眠状态(通常为IO进程)
    T:该进程已经停止
    Z:僵死状态,该进程应该已经终止,但是其父进程却无法正常的终止它,造成zombie(疆尸)程序的状态
    W:等待状态,等待内存的分配

<:高优先级的进程
N:低优先级的进程
START:该进程被触发启动的时间
COMMAND:该进程的实际指令

ps -aux --sort -pcpu|less -N     #按照cpu占用来排序


ps -aux --sort -pmem|less -N     #按照内存占用来排序

watch -n 1 'ps -aux --sort -pcpu,+pmem | head -6' 显示前5个进程情况,每秒更新

[root]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   3026   3022  0  80   0 - 28886 do_wai pts/0    00:00:00 bash
0 R     0   3239   3026  0  80   0 - 38331 -      pts/0    00:00:00 ps

    F:代表这个进程的flag,如果是4,则代表使用者为 super user

    S:代表这个进程的状态stat

    C:占用CPU资源的百分比
    PRI:指进程的执行优先级(Priority的简写),其值越小越早被执行
    NI:代表进程的nice值,其表示进程可被执行的优先级的修正数值
    ADDR:代表进程的地址,它指出该进程在内存的哪个部分,如果是个正在运行的程序,一般都是"-"
    SZ:占用的内存大小
    WCHAN:判断当前进程是否正在运行,若为"-",则代表正在运行;若该进程处于休眠状态,该值就是它在内核中的地址
    TTY:该进程是在那个终端机上面运行,若与终端机无关,则显示?,另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
    TIME:占用CPU的时间
    CMD:所下达的指令名称
   

kill/kill -9 杀死进程 -9发送exit信号,不会阻塞

(13)检测虚拟内存

vmstat 一个服务器监控命令

-a
显示活跃和非活跃内存

-f
显示从系统启动至今的fork数量

-m
显示slabinfo

-s
显示内存相关统计信息及多种系统活动数量

-d
显示磁盘相关的统计信息

-S
使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(Byte),默认单位为K(1024 Bytes)

delay
刷新时间间隔,如果不指定,只显示一条结果

count
刷新次数,如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷
vmstat  2 3  采样3次 间隔2秒

r 运行队列中进程数量 b 被阻塞的进程数

swpd 虚拟内存大小 free 可用物理内存大小 buff 物理内存缓存读写操作的buffer大小 cache 物理内存缓存进程地址空间的buffer大小

si 每秒从SWAP读入RAM的大小 so 每秒葱SWAP读入RAM的大小 内存够用是为0,否则长期大于0影响系统性能

bi 文件系统或SWAP读入RAM的块数 bo 文件系统或SWAP读入RAM的块数

in 每秒中断数 cs 每秒上下文切换次数

当我们调用系统函数,就要进行上下文切换;当进行线程的切换,也要进行上下文切换,这个值越小越好。例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程或线程数就是比较合适的值了。系统调用也是如此,每次调用系统函数,我们的代码就会进入到内核空间(内核态),导致上下文切换,这个过程很耗资源,所以要尽量避免频繁的系统调用。上下文切换次数过多表示你的CPU大部分时间浪费在上下文切换中,导致CPU干正经事的时间少了。
vmstat是一个服务器监控命令,通过vmstat可以看到CPU和内存的使用情况。目前说来,对于服务器监控有用处的度量主要有:

  • r(运行队列)

  • pi(页导入)

  • us(用户CPU)

  • sy(系统CPU)

  • id(空闲CPU)


       r(运行队列)展示了正在执行和等待CPU资源的任务个数,当这个值超过了CPU数目,就会出现CPU瓶颈。

       Linux下查看CPU核心数的命令:

cat /proc/cpuinfo|grep processor|wc -l

解决CPU瓶颈的办法如下:

1.增加CPU个数或核数(推荐)

2.调整任务的执行时间,如把大任务放到系统不繁忙的时候进行,进而平衡系统的任务。

3.调整已有任务的优先级

vmstat跟踪CPU满负荷

       首先需要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU满负荷工作并不能说明什么,Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。
vmstat跟踪内存瓶颈

通过vmstat识别内存瓶颈:

       当内存的需求大于实际的物理内存时,服务器就会启动虚拟内存机制,通过虚拟内存,可以将内存段移到SWAP DISK的特殊磁盘段上,这样就会出现虚拟内存的页导入和页导出现象。页导出并不能说明出现了内存瓶颈,虚拟内存系统经常会对内存段进行页导出,但是页导入操作就表明服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回内存,导致服务器速度变慢。

解决内存瓶颈的办法如下:

1. 最简单的,增加内存(推荐)

2. 改小SGA,使得对内存的需求减少

3. 改小PGA,使得对内存的需求减少

发表评论