WXG一面总结
别的不说,先总结一下几个待完善的题目:
1.Linux启动流程
2.Linux常用命令
系统信息
1.top:实时显示系统进程
和资源使用
情况。当线上报警CPU占有率过高,load飙高时,我们通常会先上去使用top命令看一下具体哪些进程耗费了资源。
2.df:显示磁盘空间使用情况
。当线上服务器报警磁盘满的时候,需要上去查看磁盘占用情况,可以使用这个命令。
查看系统磁盘设备,默认是KB为单位:
使用-h
选项以KB以上的单位来显示,可读性高:
3.du:显示每个文件
和目录
的磁盘使用空间,也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。
4.date:查看和设置系统的日期和时间
系统管理
1.ps:查看当前进程,通常用来查看Java进程的情况和检查JVM参数:
2.kill:发送信号到进程。生产环境中慎用kill -9!
文件操作
日志查看
网络通信
系统监控与性能分析
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 来做资源分配
。