WXG一面总结

WXG一面总结

别的不说,先总结一下几个待完善的题目:

1.Linux启动流程

2.Linux常用命令

系统信息

1.top:实时显示系统进程资源使用情况。当线上报警CPU占有率过高,load飙高时,我们通常会先上去使用top命令看一下具体哪些进程耗费了资源。

image-20240325234559811

image-20240325235130853

2.df:显示磁盘空间使用情况。当线上服务器报警磁盘满的时候,需要上去查看磁盘占用情况,可以使用这个命令。

查看系统磁盘设备,默认是KB为单位:

image-20240325235722688

使用-h选项以KB以上的单位来显示,可读性高:

image-20240325235739815

3.du:显示每个文件目录的磁盘使用空间,也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。

image-20240326000319706

4.date:查看和设置系统的日期和时间

image-20240326000420893

系统管理

1.ps:查看当前进程,通常用来查看Java进程的情况和检查JVM参数:

image-20240326000758580

2.kill:发送信号到进程。生产环境中慎用kill -9!

image-20240326000947498

image-20240326001235262

文件操作

image-20240326001331784

日志查看

image-20240326001537939

网络通信

image-20240326001819413

系统监控与性能分析

image-20240326002146023

3.Docker底层原理

Docker 底层的核心技术包括 Linux 上的命名空间(Namespaces)、控制组(Control groups)、Union 文件系统(Union file systems)和容器格式(Container format)。

我们知道,传统的虚拟机通过在宿主主机中运行 hypervisor 来模拟一整套完整的硬件环境提供给虚拟机的操作系统。虚拟机系统看到的环境是可限制的,也是彼此隔离的。这种直接的做法实现了对资源最完整的封装,但很多时候往往意味着系统资源的浪费。例如,以宿主机和虚拟机系统都为 Linux 系统为例,虚拟机中运行的应用其实可以利用宿主机系统中的运行环境。

我们知道,在操作系统中,包括内核、文件系统、网络、PID、UID、IPC、内存、硬盘、CPU 等等,所有的资源都是应用进程直接共享的。要想实现虚拟化,除了要实现对内存、CPU、网络IO、硬盘IO、存储空间等的限制外,还要实现文件系统、网络、PID、UID、IPC等等的相互隔离。前者相对容易实现一些,后者则需要宿主机系统的深入支持。

随着 Linux 系统对于命名空间功能的完善实现,程序员已经可以实现上面的所有需求,让某些进程在彼此隔离的命名空间中运行。大家虽然都共用一个内核和某些运行时环境(例如一些系统命令和系统库),但是彼此却看不到,都以为系统中只有自己的存在。这种机制就是容器(Container),利用命名空间来做权限的隔离控制,利用 cgroups 来做资源分配

浅谈日常使用的 Docker 底层原理-三大底座 - 掘金 (juejin.cn)