写在前面
坦白来讲,今天这篇文章没有干货,还在等待干货内容的读者小伙伴可能要失望了,等明天吧,明天会有,今天是正式开始盘一盘Linux前的一点开胃小菜-Linux基础。工作多年,Linux对于我来说,一直是一个低调而又神秘的存在,曾经在相当长一段时间里,我的内心实际是抗拒接触这个东西的,为什么呢?因为我觉得,从开发到部署,都有运维部署的可视化工具,如jenkins,完全没有必要再去记那么的命令行,另外还要满世界地找破解ssh工具的方法,放着简便、好用的工具不用,为啥非要死磕那些难以记忆的命令行呢?直到有一天我发现了一件事,命令行本身还是很好用的,用得多了,也没有那么难以记忆。
Linux是什么
Linux是一种开放源代码的操作系统内核,它是众多不同操作系统中最重要的之一。Linus Torvalds于1991年创建了Linux内核,并在全球范围内得到了广泛的发展和采用。
与其他操作系统相比,Linux具有许多独特的特点和优势。首先,它是开放源代码的,这意味着任何人都可以查看、修改和分发其源代码。这使得Linux成为一个高度灵活、可定制和可扩展的操作系统。
另外,Linux是一个多用户、多任务操作系统,可以同时支持多个用户和程序运行,而不会降低性能。它提供了强大的命令行界面,允许用户通过输入命令与系统进行交互。
Linux也因其稳定性和安全性而受到广泛赞誉。由于其开放源代码的特性,全球各地的开发者可以共同合作,及时修复漏洞和错误,并提供更新的版本。
此外,Linux还具有广泛的应用领域,从个人计算机到服务器、移动设备和嵌入式系统等。它支持各种硬件架构,并提供了大量的应用程序和工具,满足不同用户的需求。
总体而言,Linux是一种强大、灵活和可靠的操作系统,以其开放源代码、多用户、多任务和安全性而闻名,为用户提供了强大的控制和自由。
Linux的发行版
关于Linux的发展历史可以追溯到1991年,当时一位芬兰大学生Linus Torvalds开发了一个名为“Linux”的操作系统内核,并通过互联网向全球开发者公开发布。随着全球开发者的加入和贡献,Linux逐渐成为一种成熟、稳定且广泛使用的操作系统。
随着Linux的发展,出现了很多不同的Linux发行版,其中比较重要的有以下几个:
- Debian:Debian是最早的Linux发行版之一,由Ian Murdock于1993年创立。它以稳定性和安全性著称,广泛用于服务器和工作站上。
- Red Hat Enterprise Linux(RHEL):Red Hat是一家专门从事Linux服务和支持的公司,其主要产品RHEL是企业级Linux发行版。它以稳定性、可靠性和安全性而闻名,被广泛用于企业级应用。
- Ubuntu:Ubuntu是基于Debian构建的Linux发行版,由南非企业家Mark Shuttleworth于2004年创立。它以易用性和友好的用户界面而著称,并在桌面和笔记本电脑市场上占有相当大的份额。
- CentOS:CentOS是基于RHEL源代码重新编译而来的Linux发行版,以稳定性和免费提供企业级支持而著称。它被广泛用于企业级应用和服务器。
- Fedora:Fedora是由Red Hat赞助的社区项目,旨在为Linux用户提供最新的软件和技术。它经常被认为是RHEL的测试版,可以为后续的RHEL版本提供反馈和改进。
这些发行版都有其独特的特点和优势,适用于不同的用户和应用场景。因此,在实际工作中,需要根据具体使用场景,选择合适的Linux发行版,以提高系统的性能、可靠性和安全性。
就目前国内的使用来看,在服务器端操作系统中,主流是CentOs和Ubuntu。但是2020年12月08日,CentOS官方宣布了停止维护CentOS Linux的计划,并推出了CentOS Stream项目。CentOS Linux 7作为RHEL 7的复刻版本于2020年08月06日停止更新,但会延续当前的支持计划,于2024年06月30日停止维护(EOL)。CentOS Linux 8作为RHEL 8的复刻版本,生命周期缩短,于2021年12月31日停止更新并停止维护(EOL)。CentOS官方不再提供CentOS Linux 9及后续版本,而是提供CentOS Stream版本。
Linux的基础概念
Linux作为一种开源操作系统,有一些基础概念还是需要了解的:
- 内核(Kernel):Linux内核是操作系统的核心部分,负责管理计算机的硬件资源和提供基本的系统功能。它是Linux操作系统的核心组件。
- 发行版(Distribution):Linux发行版是基于Linux内核的操作系统的完整软件包,包括内核、系统工具、库以及其他软件。常见的Linux发行版有Ubuntu、Fedora、Debian等。
- Shell:Shell是用户与操作系统之间的命令行界面,用于输入和执行命令。在Linux中,常见的Shell有Bash(Bourne Again SHell)、Zsh等。
- Shell脚本(Shell Scripting):Shell脚本是一种用于自动化任务和批处理的脚本编程语言。通过编写Shell脚本,可以将一系列命令组合在一起进行批量执行。
- 文件系统(File System):Linux使用一种层次化的文件系统来组织和存储文件。常见的文件系统包括Ext4、NTFS、FAT等。
- 文件权限(File Permissions):Linux使用一套权限位来控制对文件和目录的访问权限。权限分为读(r)、写(w)和执行(x),分别表示对文件的读取、写入和执行操作的权限。
- 用户与权限管理:Linux采用多用户的方式进行操作,每个用户都有自己的账户和密码。同时,Linux也有强大的权限管理机制,通过访问控制列表(ACL)和用户组等来管理文件和目录的访问权限。
- 进程(Process):在Linux中,进程是程序的执行实例。每个正在运行的程序都会被分配一个唯一的进程ID(PID),并在系统中独立运行。
- 进程管理(Process Management):Linux提供了各种工具和命令来管理系统中的进程,例如ps、top、kill等。这些工具可以查看和控制正在运行的进程。
- 网络:Linux是基于网络的操作系统,支持各种网络协议和服务。它具有强大的网络功能,可以进行网络配置、通信和管理。
- 软件包管理:Linux发行版通常提供自己的软件包管理工具,用于安装、更新和卸载软件包。常见的软件包管理工具有apt、yum、dnf等。
Linux的文件系统
在了解完关于Linux的一些基础概念r后,需要重点了解一下,Linux的文件系统的结构。Linux文件系统采用了一个层次化的结构,以便于组织和管理文件和目录。它的结构可以被描述为树形结构,称为目录树。
在Linux文件系统中,根目录(/)是整个文件系统的顶级目录,所有其他目录和文件都位于根目录下或其子目录中。以下是一些常见的目录和其作用:
- /bin:存放可执行的二进制文件,如常用的命令和系统工具。
- /boot:包含启动Linux系统所需的文件,如内核和引导加载程序。
- /dev:用于存放设备文件,Linux将设备表示为文件来进行访问。
- /etc:存放系统的配置文件,如网络配置、用户配置等。
- /home:用于存放用户的主目录,每个用户通常有一个对应的子目录。
- /lib:存放系统库文件,这些库文件被可执行文件使用。
- /media:用于挂载可移动介质,如光盘、USB驱动器等。
- /opt:存放可选的第三方软件安装目录。
- /proc:虚拟文件系统,提供有关系统和进程的信息。
- /root:超级用户(即管理员)的主目录。
- /sbin:存放系统管理员使用的系统工具和命令。
- /tmp:用于存放临时文件。
- /usr:存放用户和共享的应用程序、库文件、文档等。
- /var:存放经常变化的文件,如日志文件、缓存文件等。
这只是Linux文件系统中一些常见目录的示例,实际上可以根据特定的Linux发行版和需求进行适当的调整和扩展。文件系统的结构有助于组织和管理文件,使用户能够轻松访问和操作文件。
Linuxt的常用命令
另外,和windows不同的是,Linux系统没有特别漂亮的操作界面,大多数情况下,是以字符类型的指令来与操作系统进行交互,这样做有一个很大的好处就是可以降低对系统资源的消耗。因此,如果想系统性的学习Linux,Linux系统的操作命令那必须是得了解的,常用的还要牢牢记住呢。对于很多人来说,记住这些常用命令确实是一个挑战,包括我自己。后面会按照类别再陆续输出多篇文章来和大家分享一下这些命令的使用方法以及注意事项。
这里先按照功能和用途对Linux系统的常用操作命令进行分类,可以先作一个简单了解:
- 软件包管理命令:用于安装、升级、卸载和查询软件包,以及管理软件包仓库和依赖关系。例如,apt、yum、dpkg、rpm等。
- 文件和目录操作命令:用于创建、复制、移动、重命名、删除文件和目录等。例如,cd、ls、cp、mv、rm、mkdir、rmdir等。
- 文本处理命令:用于搜索、排序、查找、替换文本文件中的内容等。例如,cat、grep、sed、awk等。
- 系统管理和监控命令:用于管理系统资源、进程、网络等,以及监控系统的性能和状态。例如,ps、top、kill、free、ifconfig、netstat等。
- 用户和权限管理命令:用于添加、修改、删除用户账户和组,以及设置和管理文件和目录的权限和所有权等。例如,useradd、usermod、userdel、groupadd、chmod、chown等。
- 网络和通信命令:用于配置和管理网络连接、通信协议、远程访问等。例如,ping、ssh、ftp、curl等。
- 硬件设备管理命令:用于配置和管理硬件设备,如磁盘、网卡、USB设备等。例如,fdisk、mkfs、mount、umount等。
- Shell编程命令:用于创建和执行Shell脚本,自动化执行一系列命令以达到特定的目标。例如,echo、if、while、for等。