一、文件命令处理
(一)、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
使用电脑命令行连接
- 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 文件树
实例:
(二) Linux 常用命令之文件处理
查看帮助
--help
man
文件管理
- 查看文件信息:
ls
- 切换工作目录:
cd
- 显示当前目录路径:
pwd
- 创建新目录:
mkdir
- 创建空文件:
touch
- 删除文件或目录:
rm
文件管理
- 拷贝:
cp
- 移动/重命名:
mv
- 建立文件链接:
ln
- 查找文件:
find
- 查看文件内容:
cat
、less
、more
、head
、tail
- 打包压缩:
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 常用统计命令
霍格沃兹测试开发学社
统计命令分类
- 排序
- 去重
- 统计
排序 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
相关资料
- 示例代码 多进程与多线程的示例代码