Ubuntu系统必知必会

一、查看系统信息

操作系统信息

查看系统信息,命令如下:

$ cat /etc/os-release
输出如下:

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.5 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

CPU信息

命令如下:

$ lscpu

架构:                           x86_64
CPU 运行模式:                   32-bit, 64-bit
字节序:                         Little Endian
Address sizes:                   42 bits physical, 48 bits virtual
CPU:                             16
在线 CPU 列表:                  0-15
每个核的线程数:                 2
每个座的核数:                   8
座:                             1
NUMA 节点:                      1
厂商 ID:                        GenuineIntel
CPU 系列:                       6
型号:                           106
型号名称:                       Intel(R) Xeon(R) Platinum 8378C CPU @ 2.80GHz
步进:                           6
CPU MHz:                        2799.994
BogoMIPS:                       5599.98
超管理器厂商:                   KVM
虚拟化类型:                     完全
L1d 缓存:                       384 KiB
L1i 缓存:                       256 KiB
L2 缓存:                        10 MiB
L3 缓存:                        57 MiB
NUMA 节点0 CPU:                 0-15
Vulnerability Itlb multihit:     Not affected
Vulnerability L1tf:              Not affected
Vulnerability Mds:               Not affected
Vulnerability Meltdown:          Not affected
Vulnerability Mmio stale data:   Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Vulnerability Retbleed:          Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; Load fences, usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full retpoline, IBPB
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
标记:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx p
                                 dpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 
                                 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid
                                 _single ssbd rsb_ctxsw ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm av
                                 x512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 
                                 arat avx512vbmi umip avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq md_clear spec_ctrl
                                  intel_stibp arch_capabilities

内存信息

命令如下:

$ free

              总计         已用        空闲      共享    缓冲/缓存    可用
内存:    63868488     8172808     5175204     3605336    50520476    51566064
交换:           0           0           0

磁盘信息

命令如下:

$ fdisk -l

Disk /dev/sda:100 GiB,107374182400 字节,209715200 个扇区
Disk model: VBS fileIO      
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000c9af1

设备       启动  起点      末尾      扇区  大小 Id 类型
/dev/sda1  *     2048 209715166 209713119  100G 83 Linux


Disk /dev/sdc:500 GiB,536870912000 字节,1048576000 个扇区
Disk model: VBS fileIO      
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/sdb:1000 GiB,1073741824000 字节,2097152000 个扇区
Disk model: VBS fileIO      
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x31b35595

设备       启动  起点       末尾       扇区  大小 Id 类型
/dev/sdb1        2048 2097151999 2097149952 1000G 83 Linux


Disk /dev/sdd:1000 GiB,1073741824000 字节,2097152000 个扇区
Disk model: VBS fileIO      
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1735b494

设备       启动  起点       末尾       扇区  大小 Id 类型
/dev/sdd1        2048 2097151999 2097149952 1000G 83 Linux


Disk /dev/sde:1000 GiB,1073741824000 字节,2097152000 个扇区
Disk model: VBS fileIO      
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0a456c6e

设备       启动  起点       末尾       扇区  大小 Id 类型
/dev/sde1        2048 2097151999 2097149952 1000G 83 Linux

系统资源实时信息

命令如下:

$ top

top - 20:12:46 up 141 days,  5:05,  2 users,  load average: 4.54, 5.38, 6.20
任务:  15 total,   1 running,  14 sleeping,   0 stopped,   0 zombie
%Cpu(s): 17.1 us, 16.8 sy,  0.0 ni, 66.0 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
MiB Mem :  62371.6 total,   4792.0 free,   8237.0 used,  49342.5 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.  50098.7 avail Mem 

 进程 USER      PR  NI    VIRT    RES    SHR    %CPU  %MEM     TIME+ COMMAND                                                                         
    1 root      20   0    4356   2048   1420 S   0.7   0.0   0:00.72 .init.sh                                                                        
  127 root      20   0   12172   1556    632 S   0.0   0.0   0:00.00 sshd                                                                            
  151 root      20   0  709928  38756  16188 S   0.0   0.1   0:00.39 node                                                                            
  157 root      20   0   10.7g  44356  18584 S   0.0   0.1   0:01.04 node                                                                            
  242 root      20   0  926092  66384  17992 S   0.0   0.1   0:03.34 node                                                                            
  327 root      20   0   13900   5696   4240 S   0.0   0.0   0:00.01 sshd                                                                            
  329 root      20   0   15244   5440   1960 S   0.0   0.0   0:00.03 bash                                                                            
  436 root      20   0  623112  26124  15452 S   0.0   0.0   0:00.12 node                                                                            
  615 root      20   0  702852  21200  12872 S   0.0   0.0   0:00.10 node                                                                            
  628 root      20   0  943508  71280  18224 S   0.0   0.1   0:01.31 node                                                                            
  862 root      20   0  590856  23724  12632 S   0.0   0.0   0:00.10 node                                                                            
 1015 root      20   0   13892   5692   4240 S   0.0   0.0   0:00.01 sshd                                                                            
 1017 root      20   0   15244   5528   2040 S   0.0   0.0   0:00.05 bash                                                                            
 9740 root      20   0   14144   2100   1492 R   0.0   0.0   0:00.00 top                                                                             
 9939 root      20   0    2500    376    312 S   0.0   0.0   0:00.00 sleep   

二、系统跑分

我们利用 sysbench 工具对系统进行跑分测试,首先我们安装 sysbench 工具,然后对cpu 进行跑分测试。

apt update
apt install sysbench

cpu 跑分

sysbench cpu run

sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Prime numbers limit: 10000

Initializing worker threads...

Threads started!

CPU speed:
    events per second:  2392.49

General statistics:
    total time:                          10.0268s
    total number of events:              23993

Latency (ms):
         min:                                    0.34
         avg:                                    0.42
         max:                                  100.41
         95th percentile:                        0.35
         sum:                                10021.26

Threads fairness:
    events (avg/stddev):           23993.0000/0.00
    execution time (avg/stddev):   10.0213/0.00

cpu 单线程跑分结论

单线程性能: 测试使用了一个线程,这意味着所有的负载都由一个线程承担。在这种模式下,CPU速度为每秒2392.49个事件,这对于单线程来说是一个相对较高的处理速度。

总体性能: 在10.0268秒内,系统总共处理了23993个事件,这表明系统在单线程模式下有较高的吞吐量。

延迟: 延迟方面,平均延迟为0.42毫秒,最小延迟为0.34毫秒,最大延迟为100.41毫秒。这些数据显示系统在处理请求时,大部分时间的响应速度较快,但偶尔会出现较高的延迟。

延迟分布: 95%的事件处理延迟在0.35毫秒以下,这表明大部分事件的响应时间非常快。

线程公平性: 线程公平性统计显示,每个线程平均处理了23993个事件,执行时间也非常均衡,没有明显的性能差异。

系统稳定性: 从标准差为0可以看出,系统在单线程模式下的性能非常稳定,没有出现大的波动。

潜在问题: 虽然单线程性能看起来不错,但最大延迟达到了100.41毫秒,这可能是系统中的一个潜在瓶颈。在实际应用中,这样的延迟可能会影响用户体验。

内存跑分

sysbench --threads=48 memory run

sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 48
Initializing random number generator from current time


Running memory speed test with the following options:
  block size: 1KiB
  total size: 102400MiB
  operation: write
  scope: global

Initializing worker threads...

Threads started!

Total operations: 11589432 (1157101.85 per second)

11317.80 MiB transferred (1129.98 MiB/sec)


General statistics:
    total time:                          10.0144s
    total number of events:              11589432

Latency (ms):
         min:                                    0.00
         avg:                                    0.03
         max:                                 2097.05
         95th percentile:                        0.00
         sum:                               371245.84

Threads fairness:
    events (avg/stddev):           241446.5000/236613.58
    execution time (avg/stddev):   7.7343/0.94

内存 48 线程跑分结论

  1. 测试配置:
    测试使用的sysbench版本是1.0.18。
    LuaJIT版本是2.1.0-beta3。
    测试使用了48个线程。
    随机数生成器使用当前时间进行初始化。
  2. 测试选项:
    进行的是内存速度测试。
    块大小为1KiB。
    总测试大小为102400MiB(即10GiB)。
    测试操作为写操作。
    测试范围是全局。
  3. 测试结果:
    总共进行了11,589,432次操作,平均每秒1,157,101.85次。
    总共传输了11,317.80 MiB的数据,平均每秒1,129.98 MiB。
    总测试时间为10.0144秒。
  4. 延迟统计:
    最小延迟为0.00毫秒。
    平均延迟为0.03毫秒。
    最大延迟为2,097.05毫秒。
    95%的请求在0.00毫秒内完成。
    总延迟时间为371,245.84毫秒。
  5. 线程公平性:
    每个线程平均处理的事件数为241,446.50,标准差为236,613.58。
    每个线程的平均执行时间为7.73秒,标准差为0.94秒。
  6. 结论:
    • 内存写操作的速度测试显示,平均每秒可以处理大约1,157,101次写操作,每秒写入大约1,129.98 MiB的数据。
    • 延迟较低,大部分操作在0.00毫秒内完成,这表明系统的响应速度很快。
    • 线程之间的事件分配比较均衡,但执行时间有一定的波动,这可能是由于系统负载或其他因素导致的。
    • 总体来说,系统的内存写性能表现良好,延迟低,并且线程分配比较公平。

三、流与管道

三个标准流

Linux有三个标准流,stdin 输入流,stdout 标准输出流,stderr 标准错误输出流
echo "this will get output to the file and not to stdout" 该命令会直接显示在终端上,如下所示。

> echo "this will get output to the file and not to stdout"
this will get output to the file and not to stdout

echo "this will get output to the file and not to stdout" 1> new-file.txt

我们可以利用 1> 重定向这个标准流到 new-file.txt 文件中,此时在终端上没有任何信息输出。

ls -lsah 1> ls.txt
ls -lsah 1>> ls.txt

此外,1>>可以追加内容至 ls.txt 中去。
第一次运行 ls -lsah 1> ls.txt 命令时,ls.txt 内容如下:

总用量 40K
4.0K drwxr-xr-x 3 root root 4.0K 1227 22:12 .
8.0K drwx------ 1 root root 4.0K 1227 22:07 ..
4.0K drwxr-xr-x 8 root root 4.0K 1227 21:02 .git
4.0K -rw-r--r-- 1 root root  272 1227 20:10 .gitignore
4.0K -rw-r--r-- 1 root root   36 1227 20:10 index.js
4.0K -rw-r--r-- 1 root root  292 1227 20:10 .inscode
4.0K -rw-r--r-- 1 root root   67 1227 20:10 inscode.nix
   0 -rw-r--r-- 1 root root    0 1227 22:12 ls.txt
4.0K -rw-r--r-- 1 root root   51 1227 22:08 new-file.txt
4.0K -rw-r--r-- 1 root root  364 1227 20:10 package.json

第二次运行内容如下:

总用量 40K
4.0K drwxr-xr-x 3 root root 4.0K 1227 22:12 .
8.0K drwx------ 1 root root 4.0K 1227 22:07 ..
4.0K drwxr-xr-x 8 root root 4.0K 1227 21:02 .git
4.0K -rw-r--r-- 1 root root  272 1227 20:10 .gitignore
4.0K -rw-r--r-- 1 root root   36 1227 20:10 index.js
4.0K -rw-r--r-- 1 root root  292 1227 20:10 .inscode
4.0K -rw-r--r-- 1 root root   67 1227 20:10 inscode.nix
   0 -rw-r--r-- 1 root root    0 1227 22:12 ls.txt
4.0K -rw-r--r-- 1 root root   51 1227 22:08 new-file.txt
4.0K -rw-r--r-- 1 root root  364 1227 20:10 package.json
总用量 44K
4.0K drwxr-xr-x 3 root root 4.0K 1227 22:12 .
8.0K drwx------ 1 root root 4.0K 1227 22:07 ..
4.0K drwxr-xr-x 8 root root 4.0K 1227 21:02 .git
4.0K -rw-r--r-- 1 root root  272 1227 20:10 .gitignore
4.0K -rw-r--r-- 1 root root   36 1227 20:10 index.js
4.0K -rw-r--r-- 1 root root  292 1227 20:10 .inscode
4.0K -rw-r--r-- 1 root root   67 1227 20:10 inscode.nix
4.0K -rw-r--r-- 1 root root  578 1227 22:12 ls.txt
4.0K -rw-r--r-- 1 root root   51 1227 22:08 new-file.txt
4.0K -rw-r--r-- 1 root root  364 1227 20:10 package.json

显而易见,1>> 可以追加内容。

管道

ps aux | grep "ps aux" 这条命令表示列出所有正在运行的进程,通过|管道把结果输入到 grep 中,最终找出含 “ps aux” 字符串的进程。
我们和流操作对比一下:

> ps aux > t4.txt
> grep "ps aux" < t4.txt 
root     25431  0.0  0.0  13876  1596 pts/1    R+   22:30   0:00 ps aux

不难看出管道比流的重定向更简洁。

你可能感兴趣的:(ubuntu,linux,运维)