# 主题十一:提问&回答
MIT 6.828 操作系统
现代操作系统
多去使用键盘,少使用鼠标。这一目标可以通过多加利用快捷键,更换界面等来实现。
学好编辑器。作为程序员你大部分时间都是在编辑文件,因此值得学好这些技能。
学习怎样去自动化或简化工作流程中的重复任务。因为这会节省大量的时间。
学习像 Git 之类的版本控制工具并且知道如何与 GitHub 结合,以便在现代的软件项目中协同工作。
如果你发现某种语言实现了你所需要的特定功能库,最好的方式就是直接去使用那种语言。
可以根据 PATH 来查找软件和工具的存储位置。可以使用 which 或 type 命令去查找 shell 在哪里发现了特定的程序。
常见的目录结构:
- /bin - 基本命令二进制文件
- /sbin - 基本的系统二进制文件,通常是root运行的
- /dev - 设备文件,通常是硬件设备接口文件
- /etc - 主机特定的系统配置文件
- /home - 系统用户的家目录
- /lib - 系统软件通用库
- /opt - 可选的应用软件
- /sys - 包含系统的信息和配置(第一堂课介绍的)
- /tmp - 临时文件( /var/tmp ) 通常在重启之间删除
- /usr/ - 只读的用户数据
- /usr/bin - 非必须的命令二进制文件
- /usr/sbin - 非必须的系统二进制文件,通常是由root运行的
- /usr/local/bin - 用户编译程序的二进制文件
- /var -变量文件 像日志或缓存?
特定的语言包比系统的程序报管理器中有更多最新版本的程序包。
建议使用虚拟环境来配置软件包。使用隔离的环境(例如 Python 的 virtualenv)以避免影响全局环境。
Docker 和虚拟机,Docker 采用的是容器技术,容器的开销小于虚拟机。因为容器是和主机共享内核避免运行其他内核,但虚拟机会运行整个 OS 栈,包括内核。带来的问题则是容器的隔离性差。
Arch Linux 采用了滚动更新的策略,用了最前沿的软件包,但可能不稳定。
Debin,Ubuntu 和 CentOS 则保守稳定。但是牺牲了新功能。