根据统计,96%观看这个文章的人并没有使用Linux,真是有点可惜,因为Linux是一个很棒的免费开源操作系统,但它在个人电脑市场的份额只有4%。不过,值得高兴的是,有96%的非人类机器人在用Linux,因为它是服务器的主导操作系统。
如果你是程序员或开发者,Linux是你必须学会的东西,因为你的代码最终会在Linux上运行。如果你不能通过SSH进入Linux终端来修复问题,那就麻烦了。在今天的文章中,你会在10分钟内学到101个关于Linux的基本概念。如果你能坚持到最后,你可能会变得像一个真正的技术极客一样,能像Arch Linux用户一样流利地说出技术术语。
在理解Linux之前,我们需要先了解它的前身:Unix。Unix是在1970年代由AT&T贝尔实验室开发的操作系统,它的开发引发了POSIX标准的出现,用来确保不同系统之间的兼容性。直到今天,POSIX的影响依然存在,很多系统如macOS、Android、FreeBSD和大多数Linux发行版都遵循POSIX标准。
1987年,一个叫Minix的操作系统被开发出来,主要用于学术用途,但它的代码分发受到了限制。这促使芬兰计算机科学学生林纳斯·托瓦兹在1991年开发了Linux。Linux是免费的开源软件,采用GPL 2.0许可证,这意味着它可以自由分发、修改,甚至可以用它赚钱。
我们通常所说的Linux其实并不是一个操作系统,而是一个操作系统内核。Linux内核用C语言编写,它是介于软件应用和硬件之间的“黑科技”。当你打开电脑时,引导程序(通常是GRUB)会将Linux内核加载到内存中。内核会检测硬件,启动系统(通常是systemd),最终带你进入登录界面。
内核的职责很多,包括管理内存、提供虚拟文件系统与文件交互,以及通过驱动程序处理外围设备。但是,由于CPU的保护机制,直接访问内核并不容易。内核位于Ring 0,权限最高,而大多数用户操作在权限最低的Ring 3中。
要与内核交互,可以使用系统调用。例如,当你在C代码中向控制台输出内容时,系统调用会从Ring 3切换到Ring 0来执行任务。这些系统调用通常由像glibc这样的库封装,它是GNU的C标准库,为用户提供更友好的接口。
GNU(发音为“guh-new”)是一个比Linux更早的项目,由理查德·斯托尔曼在1983年启动。GNU为Linux提供了核心工具,使内核变得对人类有用。你可以通过终端探索这些工具,终端是一个图形界面,允许你通过Shell发送命令。最常见的Shell是Bash。
例如,你可以用GNU Shell工具echo向Linux内核打个招呼,把信息打印到屏幕上。虽然看起来很简单,但实际上,内核在后台检查权限并管理驱动程序,把这些二进制数转换成屏幕上的像素。另一个有用的命令是touch,它可以创建一个新文件,你可以用ls列出目录中的文件,或用cat查看文件内容。
在Linux中,文件权限用符号权限或数字表示,比如777表示任何人都可以对文件执行任何操作。不过,一般来说,不要给文件太多权限,因为要始终遵循最小权限原则。
Linux内核管理进程,你可以用ps或htop命令查看这些进程。如果你有一个长时间运行的脚本,可以通过在末尾添加一个&来创建后台进程,或者用cron定时调度任务。
Linux发行版是基于Linux内核的完整操作系统。每个发行版都有不同的用户群体,软件包管理器和发布周期也不同。桌面环境如GNOME或KDE Plasma也会影响用户体验。
不同的发行版家族包括Slackware、Debian、Red Hat和Arch。每个家族都有自己独特的特点和目标用户。如果有一天你不经意间说出“我用Arch”,那就意味着你已经掌握了复杂与简单的平衡,Linux已经成为你掌控数字世界的象征