linux常考命令
tldr:类似于man命令
1 | pip3 install tldr |
文件、目录操作
- chown chmod chgrp
- ls rm cd cp mv touch rename ln(软连接和硬链接)
- locate find grep 定位查找和搜索
文件或日志查看工具
- 编辑器 vi nano
- cat head tail 查看文件
- more less 交互式查看文件
进程操作的命令
- ps 查看进程
- kill 杀死进程
- top htop 监控进程
内存相关命令
- free 查看内存
网络操作命令
- ifconfig 查看网卡信息
- lsof、netstat 查看端口信息
- ssh scp 远程登录和复制 tcpdump 抓包
常见用户、组操作命令
- useradd 、usermod 增加和修改用户
- groupadd、groupmod 增加和修改组
进程与线程
进程与线程的区别
- 进程是对运行时程序的封装,是系统资源调度和分配的基本单位
- 线程是进程的子任务,cpu调度的基本单位,实现进程内并发
- 一个进程可以包含多个线程,线程依赖进程存在,并共享进程内存
什么是线程安全
python那些操作是线程安全的?
- 一个操作可以在多线程的环境中安全使用,获取正确结果
- 线程安全的操作就好比线程是顺序执行,而不是并发执行的
- 一般涉及到写操作数据需要考虑如何让多个线程安全访问数据
线程同步的方式
- 互斥量(锁) :通过互斥机制防止多线程同时访问公共资源
- 信号量:控制同一时刻多线程访问同一资源的线程数
- 事件:通过通知的方式保持多个线程同步
进程之间通信的方式
- 管道 匿名管道 有名管道
- 信号 比如ctrl + c 产生sigint 程序终止信号
- 消息队列
- 共享内存
- 信号量
- 套接字(socket)
linux内存相关
什么是分页机制
- 逻辑地址和物理地址分离的内存分配管理方案
- 程序的逻辑地址划分为固定大小的页
- 物理地址划分为同样大小的帧
- 通过页表对应逻辑地址和物理地址

什么是分段机制
- 分段为了满足代码的一些逻辑需求
- 数据共享 数据保护 动态链接
- 通过段表实现逻辑地址和物理地址的映射关系
- 每个段内部都是连续的内存分配,段和段之间是离散分配的

分页和分段的区别
- 页是出于内存利用率的角度提出的离散分配机制
- 段是出于用户角度,用于数据保护,数据隔离等用途的管理机制
- 页的大小是固定的,操作系统决定,段的大小不确定,用户程序决定
什么是虚拟内存
- 通过把部分暂时不用的内存信息放在硬盘上
- 局部性原理,程序运行时只有部分必要信息装入内存
- 内存中暂时不需要的内容放到硬盘上
- 系统似乎提供了比实际内存大的多的容量,称之为虚拟内存
什么是内存抖动(颠簸)
- 本质是频繁的页调度行为
- 频繁的页调度,进程不断产生缺页终端
- 置换一个页,又不断再次需要这个页
- 运行程序太多,页面替换策略不好,终止进程或者增加物理内存
python垃圾回收机制的原理
- 引用计数为主(缺点:循环引用)
- 引入标记清除和分代回收解决引用计数的问题
- 引用计数为主+标记清除和分代回收为辅
什么时候引用计数增加?
- 对象被创建 a=1
- 对象被引用 b = a
- 对象作为参数被传递 func(a)
- 对象存储在容器中 l = 【a】
什么时候引用计数减少?
- 显示使用del a
- 引用指向别的对象 b = None
- 离开的对象的作用域比如函数执行结束
- 从一个容器移除对象或销毁容器