Linux资料
背景
我个人不是专攻 linux 系统的, 但工作会涉及linux 相关的使用和在linux 上的服务的问题定位 如:
- 常规的使用: 部署 k8s 等
- 基础问题排除: 部署问题排除, 容器故障排除, 容器的网络问题排除等
- 性能分析: 容器或进程的内存 怎么占用这么高?是不是泄漏了? 为什么cpu占用不高性能上不去?
所以, 这里主要以汇总资料为主,方便自己后续方便查找
入门资料
见 入门资料
概念
个人理解: Linux 的核心是"内核 + 用户空间"协作,它向下管理硬件资源,向上提供统一的接口供程序运行。几条常用的心智模型:
- 内核负责调度 CPU、内存、磁盘、网络等资源,用户态应用通过系统调用与内核交互。
- “一切皆文件”:无论是磁盘文件、设备节点还是网络套接字,都可用类似的方式读写、赋权。
- 进程和线程是最小的执行单元;Shell 只是用户与系统的桥梁,命令本质上是启动新的进程。
对我大多数使用场景,也都是围绕 进程 的生命周期 来工作
进程的创建: 部署或叫运行 应用
- 启动 python,shell 等程序:
python xx.py,bash xx.sh,./app - 启动服务:
systemctl start sshd xxx - 其实在 shell 中执行的命令,大部分也会启动一个进程(也有例外哈):
sleep 3600
- 启动 python,shell 等程序:
进程的查看和问题排除:
- 进程列表:
ps -ef,ps aux --sort=-%cpu - 进程树:
pstree -p,ps -eo pid,ppid,cmd --forest便于确认父子关系 - 资源占用:
top,htop,pidstat -u -p <pid>查看 CPU/内存/IO 压力 - 打开的文件与端口:
lsof -p <pid>,ls -l /proc/<pid>/fd,ss -lptn - 实时监控:
watch -n 1 'ps -o pid,cmd,%cpu,%mem -p <pid>', 或结合systemd-cgls,systemctl status <service>
- 进程列表:
进程的修改: 我理解一般很少操作😄
进程的删除:
- 服务停止:
systemctl stop xxx - 杀死:
kill xxx
- 服务停止:
开机过程(第一个进程如何启动起来的)
当我们打开安装了linux系统的设备(不管是服务器还是虚拟机)的电源(服务器的物理按钮或者是虚拟机的开始按钮),就会执行linux系统的加载过程
大概过程:
- 系统的引导过程: 固件(BIOS/UEFI) 启动并找到linux系统存储在那个存储上(可能是硬盘,u盘,光碟,网络)(),并开始运行
- linux 内核的加载和启动
- 系统就会运行1号进程
- 其他开机默认启动的服务(进程)
学习资料:
一个文件为什么能运行
一个二进制文件或命令能够直接运行的原因: 一般程序经过编译构建为二进制的时候, 是按 ELF 格式写入文件保存的, 运行时linux 会根据这种格式启动进程
学习资料:
最后更新于