Python测开28期 - 旎奥 - 学习笔记 -Linux

一、文件命令处理

(一)、Linux 安装

  • 使用云服务器
  • 使用虚拟机安装

安装包下载

  • https://www.centos.org/download/
    • CentOS-xx-DVD-xx.iso : 标准安装版,一般下载这个就可以了(推荐)
    • CentOS-xx-NetInstall-xx.iso : 网络安装镜像(从网络安装或者救援系统)
    • CentOS-xx-Everything-xx.iso: 对完整版安装盘的软件进行补充,集成所有软件。(包含 centos7 的一套完整的软件包,可以用来安装系统或者填充本地镜像)
    • CentOS-xx-GnomeLive-xx.iso: GNOME 桌面版
    • CentOS-xx-KdeLive-xx.iso: KDE 桌面版
    • CentOS-xx-livecd-xx.iso : 光盘上运行的系统,类拟于 winpe
    • CentOS-xx-minimal-xx.iso : 精简版,自带的软件最少

虚拟机安装 Linux

https://ceshiren.com/t/topic/12926

Linux 的访问方式

  • ssh 登录
  • 图形界面登录

远程登录方式

  • 远程客户端:SecureCRT, Putty, SSH Secure Shell, Moba
  • cmd/powershell 等命令行

远程登录软件

以 mobaxterm 为例

mobaxterm 的使用

img.png

img.png

使用电脑命令行连接

  • Mac 的 terminal
  • Win 的 cmd 或者 powershell

sshd 的启动状态

systemctl status sshd

ssh 的安装

# centos 系统:

yum install -y openssl openssh-server

# Ubuntu 系统:

apt install openssh-server openssh-client

systemctl start sshd

连接方式

ssh [ -p 端口 ] 用户名@服务的 ip

保持心跳

Host *
   ServerAliveInterval 40

配置 ssh 连接名

Host my_ali
  HostName ip地址
  User root
  Port 22
  # PreferredAuthentications publickey
  # IdentityFile C:\Users\Administrator\.ssh\id_rsa

Linux 文件树

img.png
实例:
image

(二) Linux 常用命令之文件处理

查看帮助

  • --help
  • man

文件管理

  • 查看文件信息: ls
  • 切换工作目录: cd
  • 显示当前目录路径: pwd
  • 创建新目录:mkdir
  • 创建空文件:touch
  • 删除文件或目录:rm

文件管理

  • 拷贝:cp
  • 移动/重命名:mv
  • 建立文件链接:ln
  • 查找文件:find
  • 查看文件内容:catlessmoreheadtail
  • 打包压缩:tar

文本处理

  • 文本编辑:vi/vim
  • 屏幕输出:echo
  • 输出重定向:>

文件属性

修改文件权限

  • r:读权限 read — 4
  • w:写权限 write — 2
  • x:执行权限 execute — 1
  • -: 无权限 — 0
  • chmod 777 文件

查看网卡信息

  • ifconfig
  • ip addr

测试远程主机的连通性

  • ping
    • -c:ping 的次数
    • -i:每次 ping 的时间间隔

打印 Linux 网络系统的状态信息

  • netstat
    • -t:列出所有 tcp
    • -n:以数字形式显示地址和端口
    • -p:显示进程的 pid 和名字

退出 Linux 系统

  • exit

二、Linux 性能与统计命令

(一)为什么要学习性能统计

  • 性能测试
  • 性能分析

性能统计知识

  • 系统级性能数据分析
  • 进程级别性能数据分析

常用性能指标

  • cpu 代表算法的高效性
  • mem 代表数据结构的使用合理性
  • net io 等更多指标

net io 的不合理使用同样会在 cpu 和 mem 上体现出影响,所以我们今天重点介绍 3 个指标,cpu mem 与 net

统计方法

  • 临时性分析 命令交互
  • 系统性分析 prometheus grafana

CPU 使用统计

cpu 信息 /proc/cpuinfo

cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 79
model name  : Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz
microcode   : 0x1
cpu MHz     : 2499.994
cache size  : 40960 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 1
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:
processor   : 1
vendor_id   : GenuineIntel

系统负载与进程 cpu 占用 top

top - 17:27:57 up 76 days, 18:17,  1 user,  load average: 1.03, 1.11, 1.15
Tasks: 215 total,   2 running, 131 sleeping,   0 stopped,   0 zombie
%Cpu(s): 28.7 us,  0.4 sy,  0.0 ni, 70.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16122020 total,  1343832 free,  4715324 used, 10062864 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 11060040 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
23508 yangche+  20   0  668504 114388  30628 R 100.0  0.7   2872:02 /usr/local+
11120 root      10 -10  152468  34444   9120 S  10.0  0.2   2648:51 /usr/local+
11634 yangtie+  20   0 1101696 123748  12648 S   2.0  0.8  53:58.88 /home/yang+
30939 yangtie+  20   0 1525284  95928  17472 S   1.3  0.6  27:44.85 /home/yang+
  658 root      20   0  306560 170916 170332 S   0.7  1.1 116:29.63 /usr/lib/s+
 5541 yangtie+  20   0  447548  42472  12632 S   0.7  0.3   8:15.91 /home/yang+
 5713 quanjin+  20   0 7850436   2.2g   8648 S   0.7 14.0 583:19.28 java -Duse+
 7427 yangche+  20   0 7796228 225700   9420 S   0.7  1.4 537:38.47 java -jar +

cpu 的关键指标

  • cpu 利用率 进程的 cpu 利用情况
  • load average 系统负载情况

ps 命令的 cpu 是平均 cpu 利用率,不适合做性能分析

内存(MEM)占用统计

常用命令

  • free
  • ps
  • top

free

free -m
              total        used        free      shared  buff/cache   available
Mem:           3790         367         136        2077        3287        1042
Swap:             0           0           0

free 输出

  • total Total installed memory (MemTotal and SwapTotal in /proc/meminfo)
  • used Used memory (calculated as total - free - buffers - cache)
  • free Unused memory (MemFree and SwapFree in /proc/meminfo)
  • shared Memory used (mostly) by tmpfs (Shmem in /proc/meminfo, available, on kernels 2.6.32, displayed as zero if not available)
  • buffers Memory used by kernel buffers (Buffers in /proc/meminfo)
  • cache Memory used by the page cache and slabs (Cached and Slab in /proc/meminfo)
  • buff/cache Sum of buffers and cache
  • available Estimation of how much memory is available for starting new applications, without swapping. not all reclaimable memory slabs will be reclaimed due to items being in use

meminfo

/proc/meminfo 保存了更多的内存使用数据

cat /proc/meminfo
MemTotal:        3881920 kB
MemFree:          132204 kB
MemAvailable:    1073044 kB
Buffers:          561564 kB
Cached:          2307572 kB
SwapCached:            0 kB
Active:           795200 kB
Inactive:        2358704 kB
Active(anon):     376576 kB
Inactive(anon):  2035324 kB
Active(file):     418624 kB
Inactive(file):   323380 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
...

进程级别的内存分析

ps -e -o uid,pid,ppid,pcpu,pmem,rss,vsz,comm  --sort -%mem | head -10
  UID   PID  PPID %CPU %MEM   RSS    VSZ COMMAND
 6597 12059     1  0.0  1.9 77036 3584588 java
 5729 32380     1  0.0  1.9 74608 3518808 java
    0 29821     1  1.5  0.9 38768 161384 AliYunDun
    0   457     1  0.2  0.9 37816 1053844 CmsGoAgent.linu
    0   340     1  0.0  0.7 27628  62708 systemd-journal
    0 12047     1  0.0  0.4 19264 396524 rsyslogd
    0 28845     1  0.5  0.4 16092 719100 node_exporter
    0 10454     1  0.0  0.2 11408 564716 tuned
  998 10439     1  0.0  0.2  8788 710032 polkitd

top 命令

top - 17:17:49 up 325 days,  5:59,  5 users,  load average: 0.00, 0.01, 0.05
Tasks:  92 total,   1 running,  91 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881920 total,   134192 free,   372640 used,  3375088 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1071332 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
12059 dx42310+  20   0 3584588  77036      0 S   0.3  2.0  35:01.64 java
32380 dx53889   20   0 3518808  74608   1056 S   0.0  1.9  19:20.34 java
29821 root      10 -10  161384  38768   5788 S   0.3  1.0 758:25.24 AliYunDun
  457 root      20   0 1053844  37680   5208 S   0.0  1.0 993:28.66 CmsGoAgent+
  340 root      20   0   62708  27876  27244 S   0.0  0.7 193:01.35 systemd-jo+
12047 root      20   0  396524  19408  15780 S   0.0  0.5  54:24.50 rsyslogd
28845 root      20   0  719100  16160   4376 S   0.0  0.4   1263:32 node_expor+
10454 root      20   0  564716  11408    712 S   0.0  0.3  18:45.31 tuned
10439 polkitd   20   0  710032   8788   1172 S   0.0  0.2   8:42.55 polkitd
17217 root      20   0  155268   5924   4476 S   0.0  0.2   0:00.03 sshd

网络连接(Net)统计

查看网络连接

netstat -tnp | head -10
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 172.17.56.105:46828     39.102.48.202:63791     ESTABLISHED 11634/python3
tcp        0      0 172.17.56.105:22        221.216.138.35:59149    ESTABLISHED 12510/sshd: huangya
tcp        0      0 172.17.56.105:47020     39.102.48.202:63791     ESTABLISHED 11634/python3
tcp        0      0 172.17.56.105:42122     100.100.18.120:443      TIME_WAIT   -
tcp        0      0 172.17.56.105:51976     39.102.48.202:63791     ESTABLISHED 11634/python3
tcp        0      0 172.17.56.105:46270     39.102.48.202:63791     ESTABLISHED 6602/python3
tcp        0      0 172.17.56.105:45318     100.100.105.70:80       TIME_WAIT   -
tcp        0      0 172.17.56.105:41300     39.102.48.202:63791     ESTABLISHED 17105/python3

网络状态

  • ESTABLISHED 成功连接 The socket has an established connection
  • SYN_SENT The socket is actively attempting to establish a connection
  • SYN_RECV A connection request has been received from the network.
  • FIN_WAIT1 The socket is closed, and the connection is shutting down.
  • FIN_WAIT2 Connection is closed, and the socket is waiting for a shutdown from the remote end
  • TIME_WAIT 主动关闭 The socket is waiting after close to handle packets still in the network
  • CLOSE The socket is not being used
  • CLOSE_WAIT 被动关闭 The remote end has shut down, waiting for the socket to close.
  • LISTEN The socket is listening for incoming connections

数据统计

netstat -tn | awk 'NR>2{print $NF}'| sort | uniq -c | sort -nr
     31 ESTABLISHED
      7 TIME_WAIT
      2 CLOSE_WAIT

(二) Linux 常用统计命令

霍格沃兹测试开发学社

http://ceshiren.com

统计命令分类

  • 排序
  • 去重
  • 统计

排序 sort

  • sort 常用参数
    • -b:忽略开头的空白字符
    • -f:将小写字母看做大写字母
    • -h:根据存储容量排序(KB、MB、GB)
    • -n:按数字排序
    • -o:把结果写入文件
    • -r:以相反的顺序来排序
    • -t:指定分隔符,默认为空格
    • -V:按照数字版本排序
    • -k:指定排序的关键字,与-t 参数配合使用

去重 uniq

  • uniq 常用参数
    • -c:统计重复出现的次数
    • -d:所有邻近的重复行只被打印一次。重复次数要大于等于 2
    • -D:所有邻近的重复行将全部打印
    • -f:跳过对前 n 个列的比较
    • -s:跳过对前 n 个字符的比较
    • -w:只对每行前 n 个字符进行比较

统计数量 wc

  • wc 常用参数
    • -c:统计字节数:chars
    • -l:统计行数
    • -w:统计但单词数
    • -L:打印最长行的长度

(三)Linux 进程与线程

进程

  • 可执行程序的运行态
  • 操作系统调度的基本单位
  • 线程容器
  • 进程本身包含指令、数据等资源

线程

  • 进程中被执行的最小单元
  • cpu 调度的基本单位
  • 线程带有指令、数据等资源

进程的生命周期

  • created sleep 100 ./demo.py
  • ready
  • running
  • waiting
  • terminated kill killall

常用进程管理命令

  • ps 进程列表快照
  • top 交互式进程观测
  • kill killall 结束进程
  • fg 进程切换到前台
  • bg 进程切换到后台
  • ctrl z 挂起进程

ps 命令

  • unix 风格参数 ps -ef
  • bsd 风格参数 ps aux
  • gnu 风格参数 ps --pid pidlist
#获得所有进程列表
#UID        PID  PPID
#C STIME TTY
#TIME CMD
ps -ef
#获得所有进程列表,并提供更多可用数据
#USER       PID
#%CPU %MEM    VSZ   RSS TTY      STAT START
#TIME COMMAND
ps aux
#自定义输出指标
ps -o pid,ppid,psr,thcount,tid,cmd -M

Linux 进程运行情况

MAC 进程运行情况

进程状态

  • D uninterruptible sleep (usually IO)
  • R running or runnable (on run queue)
  • S interruptible sleep (waiting for an event to complete)
  • T stopped by job control signal
  • t stopped by debugger during the tracing
  • W paging (not valid since the 2.6.xx kernel)
  • X dead (should never be seen)
  • Z defunct (“zombie”) process, terminated but not reaped by its parent

进程知识练习

  • 查看每一步进程状态
#创建2个子进程,4个子线程
python demo.py 2 4 &
jobs
fg
ctrl z
bg

相关资料