共计 2369 个字符,预计需要花费 6 分钟才能阅读完成。
导读 | Linux 几乎无处不在,不论是服务器构建,还是客户端开发,操作系统的基础技能对全栈来说都是必备的。 |
Linux 发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的 Redhat(RHEL) 为代表,后者以 Debian 为代表。
Redhat,应该称为 Redhat 系列,包括 RHEL、Fedora、CentOS(RHEL 的社区克隆版本,免费)。Ubuntu 严格来说不能算一个独立的发行版本,Ubuntu 是基于 Debian 加强而来,一个拥有 Debian 所有的优点,以及自己所加强的优点的近乎完美的 Linux 桌面系统。Ubuntu 社区认为实用性和创新性高于一切。
如果你需要一个比较稳定的服务器系统而已,那么最好的选择就是 CentOS 了,安装完成后,经过简单的配置就能提供非常稳定的服务了。但是对云环境而言,unbantu 也许不错,hadoop 最早就是在 ubantu 上开发的。
了解体系结构,可以有一个较好的方向感。Linux 有 kernel 和 user 两种模式,内核、shell 和文件系统一起形成了基本的操作系统结构,Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。
了解 linux 内核,可以充分利用资源,在系统调优时有目标感。
Linux 将内存划分为容易处理的“内存页”,提供了对 4KB 缓冲区的抽象,例如 slab 分配器。进程实际是某特定应用程序的一个运行实体,进程调度控制进程对 CPU 的访问。Linux 中常见的进程间通讯机制有信号、管道、共享内存、信号量和套接字等。内核通过 SCI 提供了一个 API 来创建一个新进程(fork、exec 或 POSⅨ),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)。
Linux 操作系统将独立的文件系统组合成了一个层次化的树形结构,并且由一个单独的实体代表这一文件系统。由于 Linux 支持许多不同的文件系统,并且将它们组织成了一个统一的虚拟文件系统. 设备驱动程序提供一组操作系统可理解的抽象接口完成和操作系统之间的交互,而与硬件相关的具体操作细节由设备驱动程序完成。Linux 内核的网络部分由 BSD 套接字、网络协议层和网络设备驱动程序组成。网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。
Linux 系统能支持多种目前流行的文件系统,推荐用 EXT4。
Linux 下面的文件类型主要有:
1) 普通文件,分为纯文本和二进制。
2) 目录文件,存储文件的地方。
3) 链接文件,指向同一个文件或目录的的文件。
4) 设备文件,分为块设备和字符设备。
5)管道文件,提供进程间通信
6)套接字文件,与网络通信有关
Linux 使用标准的目录结构,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型。
目录名 | 简要说明 |
---|---|
/bin | 二进制可执行命令 |
/dev | 设备特殊文件 |
/etc | 系统管理和配置文件 |
/etc/rc.d | 启动的配置文件和脚本 |
/home | 用户主目录的基点,比如用户 abc 的主目录就是 /home/user,可以用~abc 表示 |
/lib | 标准程序设计库 |
/sbin | 系统管理命令,这里存放的是系统管理员使用的管理程序 |
/tmp | 公用的临时文件存储点 |
/root | 系统管理员的主目录 |
/mnt | 系统提供这个目录是让用户临时挂载其他的文件系统。 |
/lost+found | 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件 |
/proc | 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。 |
/var | 某些大文件的溢出区,比方说各种服务的日志文件 |
/usr | 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含: /usr/X11R6 存放 X window 的目录 /usr/bin 众多的应用程序 /usr/sbin 超级用户的一些管理程序 /usr/doc linux 文档 /usr/include linux 下开发和编译应用程序所需要的头文件 /usr/lib 常用的动态链接库和软件包的配置文件 /usr/man 帮助文档 /usr/src 源代码,linux 内核的源代码就放在 /usr/src/linux 里 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的库 |
shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。shell 有很多类型,这里推荐 BASH。BASH 是 GNU 的 Bourne Again Shell,是 GNU 操作系统上默认的 shell, 大部分 linux 的发行套件使用的都是这种 shell。Linux Shell 及命令
Linux 的命令很多,下面给出了一个简单的分类。
在 shell 中组织 linux 的命令来完成一系列的任务,就是 shell 编程了。Shell,Perl 和 Python 是 Linux 上最常用的脚本语言,我还是推荐使用 Python。
标准的 Linux 系统一般都有一套都有称为应用程序的程序集,它包括文本编辑器、编程语言、X Window、Internet 工具和数据库等。
对于文本编辑而言,Emacs 和 vim 各有千秋,通过插件配合甚至可以作为 IDE 使用。个人感觉,VIM 还应该是必备技能。vim 的命令也很多,整理如下:
就应用的管理而言,ubuntu 需熟知 apt 命令,centos 则是 yum 命令。当然了,源代码编译安装是必须的,makefile 的写法,configure/autoconfig/make 的用法要手到擒来才好。
![post-qrcode](https://www.xgss.net/wp-content/uploads/2023/07/二维码-微信公众号256x256.jpg)