开源操作系统笔记

1. 开源操作系统概述

目录

1. 开源操作系统概述

1.定义

2.特点

3.优势

4.缺点

2. 开源操作系统基础

2-1 操作系统认识与命令基础

2.1.1操作系统的功能

2.1.2 提供用户接口

2.1.3 执行应用程序:

2-2 文件权限与目录配置

2.2.1文件权限

2.2.2目录配置

2.2.3目录与文件操作

3. 文件管理

3-1 目录与文件管理

3.1.1目录管理

3.1.2文件管理

3-2 文件内容管理

3-3 文件查找

3-4 文件打包与压缩

4. 文件编辑器 Vim

4-1基本操作

4-2常用命令

5. 系统管理

5-1 用户管理

5-2 磁盘管理

6. 网络服务及应用

6-1 网络配置

6-2 软件安装

6-3服务基础


这是我在这学期学习到的知识整理的一份笔记,供大家参考。

1.定义

开源操作系统是指其源代码公开,用户可以自由使用、修改和分发的操作系统。用户可以根据自身需求对其进行定制和优化,从而满足特定的使用场景和性能需求。常见的开源操作系统包括:

Linux:一个基于Unix的操作系统内核,广泛应用于服务器、桌面和嵌入式系统。

FreeBSD:一个功能强大、稳定性高的Unix类操作系统,适用于服务器和网络应用。

OpenBSD:强调安全性和代码简洁性,适用于需要高安全性的环境。

2.特点

1.免费获取和使用:

   开源操作系统通常不需要支付许可证费用,用户可以免费下载和安装。

   对于企业和个人用户,降低了软件使用成本。

2.社区驱动的开发模式:

   开源软件通常由开发者社区共同维护和更新,鼓励贡献和合作。

   用户可以反馈问题、提交补丁或新增功能,提高软件质量。

3.透明性高:

   由于源代码开放,用户可以检查、修改和优化代码,增强系统的可审计性。

   增强了用户对软件的信任,特别是在安全和隐私方面。

4.安全性强:

   开源软件可以被多方审查,快速发现和修复安全漏洞。

   社区成员能迅速响应并解决安全问题,相较于闭源软件,其安全性往往更高。

3.优势

定制性:用户可以根据需要修改源代码,创建适合自己需求的操作系统版本。

支持多种硬件:许多开源操作系统支持广泛的硬件平台,使其在不同环境下运行灵活。

活跃的社区支持:用户可以通过论坛、邮件列表和在线文档获得技术支持。

学习和实验机会:程序员和开发者可以深入理解操作系统的内部机制,进行学习和实验。

4.缺点

学习曲线:对于新手用户,开源操作系统可能具有较高的学习门槛,尤其是命令行界面的使用。

兼容性问题:某些专有软件可能不支持开源操作系统,导致使用上的限制。

技术支持:虽然社区支持活跃,但在某些情况下,缺乏正式的技术支持可能让用户在遇到问题时感到困难。

主要应用

服务器:开源操作系统广泛应用于Web服务器、数据库服务器和邮件服务器(如Linux的使用非常普遍)。

嵌入式系统:在智能设备、路由器和IoT设备中,开源操作系统能够提供灵活的定制能力。

科研与教育:由于其开放性,开源操作系统在教育和科研中成为热门选择,方便学生和研究人员进行实验和开发。

个人计算:如Ubuntu等用户友好的Linux发行版吸引了越来越多的个人用户,成为桌面操作系统的选择之一。

未来发展方向

云计算和容器化:开源操作系统在云计算和容器技术(如Docker、Kubernetes)中的应用将继续增长。

人工智能:开源操作系统将为AI模型的训练和部署提供高效的基础设施。

安全性增强:随着网络安全威胁的增加,开源社区将进一步加强操作系统的安全性,推动加密技术和隐私保护。

用户友好性:越来越多的开源操作系统正在努力改善用户体验,使其更加友好,吸引新用户加入。

2. 开源操作系统基础

2-1 操作系统认识与命令基础

2.1.1操作系统的功能

1.管理硬件资源:

   内存管理:操作系统通过分配和管理内存资源,确保应用程序在内存中合理运行。常用机制包括分页和分段。

  处理器管理:通过进程调度程序,操作系统管理CPU时间片的分配,使多个程序可以并发运行。

   设备管理:操作系统提供驱动程序与硬件设备(如磁盘、打印机等)进行通信,管理输入输出操作。

  文件系统管理:操作系统为文件存储提供结构化的存取方法,并确保数据安全。

2.1.2 提供用户接口

   命令行接口(CLI):如Linux中的Shell,用户通过输入文本命令与操作系统交互。

   图形用户界面(GUI):提供更直观的窗口、图标和菜单,如GNOME、KDE等桌面环境。

   系统调用接口(API):操作系统通过API提供应用程序与硬件资源的交互方式。

2.1.3 执行应用程序:

   进程管理:操作系统管理应用程序的启动、暂停、终止等操作,并调度资源(CPU、内存等)给应用程序。

  多任务处理:操作系统支持同时运行多个程序,通过进程切换、线程管理实现并发处理。

基本命令

1. ls:列出目录内容。

   用法:`ls [选项] [路径]`

   示例:`ls -l`(以详细信息格式列出文件)

   选项说明:

   -a:列出所有文件,包括隐藏文件(以 `.` 开头)。

   -l:长格式输出,显示文件权限、所有者、大小等详细信息。

   

2. cd:改变目录。

   用法:`cd [目录路径]`

   示例:`cd /home`(进入 `/home` 目录)

   特殊目录:

     cd ..:返回上一级目录。

     cd ~:回到当前用户的主目录。

3. cp:复制文件。

用法:`cp [源文件] [目标路径]`

  示例:`cp file.txt /home/user/`(将 `file.txt` 复制到 `/home/user/`)

  常用选项:

  -r:递归复制目录及其内容。

4. mv:移动或重命名文件。

   用法:`mv [源文件] [目标路径]`

   示例:`mv file.txt newname.txt`(重命名文件)

   示例:`mv file.txt /home/user/`(将文件移动到指定目录)

5. rm:删除文件。

   用法:`rm [文件]`

   示例:`rm file.txt`(删除文件)

   常用选项:

     -r:递归删除目录及其内容。

     -f:强制删除,不提示确认。

2-2 文件权限与目录配置

2.2.1文件权限

1. 权限分类:

   读取(r):用户可以查看文件内容或列出目录内容。

   写入(w):用户可以修改文件内容或在目录中创建/删除文件。

   执行(x):用户可以执行文件(如脚本或二进制程序),或进入某个目录。

2. 用户分类:

   文件所有者(User,u):文件或目录的创建者,拥有最高权限。

   用户组(Group,g):同一用户组中的成员可共享某些权限。

   其他用户(Other,o):不属于文件所有者和用户组的其他用户。

3. 权限设置:

   每个文件或目录的权限可以通过 `rwx`三种权限位分别为所有者、用户组和其他用户进行设置。

使用 chmod 命令修改权限:

     数字表示法:每个权限用数字表示,`r=4`,`w=2`,`x=1`。例如,`chmod 755 file.txt` 设置权限为所有者完全访问权限(rwx=7),用户组和其他用户只能读取和执行(r-x=5)。

     字母表示法:通过 `u`(所有者)、`g`(用户组)、`o`(其他用户)设置。例如:`chmod u+x file.txt` 为文件所有者添加执行权限。

4. 权限实例:

   chmod 755 file.txt:设置文件的所有者具有读取、写入、执行权限,其他用户和组具有读取和执行权限。

   chmod u=rwx,g=rx,o=rx file.txt:等同于 `755` 权限。

2.2.2目录配置

1. 目录结构:

  开源操作系统通常采用树形目录结构,从根目录 `/` 开始,所有文件和目录都可以追溯到根目录。

   根目录 `/` 是整个系统的顶层目录,所有文件和子目录都挂载在此目录下。

2. 常见目录:

   `/home`:存放用户的主目录,每个用户都有一个独立的文件夹,用于存储个人文件和配置。例如,`/home/user/` 是用户 `user` 的主目录。

   `/etc`:存放系统的配置文件,所有的服务、系统级别设置都在这里进行管理。例如,网络配置文件、用户信息等重要文件都位于此目录。

   `/var`:用于存放系统运行时产生的可变数据,如日志文件、临时文件等。

   `/bin`:存放系统常用的可执行文件,如基础命令 `ls`、`cp` 等。

   `/usr`:存放用户应用程序和相关文件,包括用户安装的软件包和库文件。

   `/lib`:存放系统运行所需的共享库文件,类似Windows中的 `.dll` 文件。

   `/tmp`:用于存放临时文件,系统会定期清理此目录。

3. 其他常见的目录:

   `/root`:超级用户(root)的主目录。

   `/dev`:存放设备文件,每个硬件设备都对应一个文件,例如 `/dev/sda` 代表硬盘设备。

   `/boot`:存放系统引导所需的文件,如内核和启动引导程序。

2.2.3目录与文件操作

切换目录:使用 `cd` 命令切换到特定目录。

查看当前所在目录:使用 `pwd`(Print Working Directory)命令。

创建目录:`mkdir <目录名>`,例如:`mkdir /home/user/docs`。

删除目录:`rmdir <目录名>`(删除空目录)或 `rm -r <目录名>`(删除非空目录)。

3. 文件管理

3-1 目录与文件管理

3.1.1目录管理

1. 创建目录:

   使用 `mkdir` 命令创建新目录。

   示例:`mkdir my_directory` 创建一个名为 `my_directory` 的新目录。

   常用选项:

   -p:递归创建父目录。例如,`mkdir -p /home/user/newdir/subdir`,如果 `newdir` 不存在,则先创建。

2. 删除目录:

   rmdir:只能删除空目录,使用方法是 `rmdir <目录名>`。

   rm -r:递归删除目录及其内容(包括非空目录),例如 `rm -r my_directory`。

3.1.2文件管理

1. 创建文件:

   使用 `touch` 命令创建新文件,或更新现有文件的时间戳。

   示例:`touch file.txt` 创建 `file.txt` 文件。

   

2. 删除文件:

   使用 `rm` 命令删除文件。

   示例:`rm file.txt` 删除 `file.txt` 文件。

   常用选项:

   -f:强制删除,不提示确认。

   -i:删除前进行确认,适用于谨慎操作。

3-2 文件内容管理

查看文件内容

cat:

查看单个文件内容 - `cat filename`:显示指定文件“filename”的内容。

查看多个文件内容 - `cat file1 file2 file3`:依次显示多个文件的内容,中间没有分隔。

合并文件 - `cat file1 file2 > newfile`:将“file1”和“file2”的内容合并到新文件“newfile”中。如果“newfile”已存在,它将被覆盖。

向文件追加内容 - `cat newcontent >> existingfile`:将“newcontent”的内容追加到已有文件“existingfile”的末尾。

显示行号 - `cat -n filename`:显示文件“filename”的内容,并在每行前面加上行号。

忽略空白行 - `cat -s filename`:如果文件中有连续的多行空白行,只显示一个空白行。

注意事项

“cat”命令通常用于查看小型文件内容,对于大型文件,使用专门的文本查看工具如“less”或“more”可能更合适,因为它们可以逐页显示内容,避免一次性加载整个大文件到内存中导致系统性能问题。

当使用“cat”命令合并文件或向文件追加内容时,要小心操作,免意外覆盖重要文件。在执行这些操作之前,最好先备份文件。  

 less:分页查看文件内容,适合查看大文件,允许向上翻页。

   示例:`less file.txt`。

     按 `q` 退出。

   head:查看文件的开头部分,默认显示前10行。

     示例:`head file.txt`。

     常用选项:`-n <行数>`,显示指定行数,如 `head -n 20 file.txt` 显示前20行。

   tail:查看文件末尾部分,默认显示最后10行。

   示例:tail file.txt。

   常用选项:`-f` 实时查看文件更新,常用于日志监控,如 `tail -f /var/log/syslog`。

3-3 文件查找

1. find:查找文件或目录。

   基本用法:`find <路径> -name <文件名>`。

   示例:`find /home -name "file.txt"` 查找 `/home` 目录下名为 `file.txt` 的文件。

   常用选项:

     type f:只查找文件。

     type d:只查找目录。

     -size:按文件大小查找,例如 `find / -size +10M` 查找大于10MB的文件。

     -exec:对查找到的文件执行命令,例如 `find . -name "*.log" -exec rm {} \;` 删除所有 `.log` 文件。

2. grep:在文件内容中搜索特定字符串。

   基本用法:`grep <字符串> <文件>`。

   示例:`grep "error" file.txt` 查找文件 `file.txt` 中包含 "error" 的行。

   常用选项:

     -r:递归搜索目录下的所有文件。

     -i:忽略大小写。

3-4 文件打包与压缩

1. 打包(tar):

   tar -cvf`:创建 `.tar` 包。

   示例:`tar -cvf archive.tar /home/user/documents` 将 `/home/user/documents` 打包为 `archive.tar` 文件。

  选项说明:

     -c:创建新的存档。

     -v:显示操作过程。

     -f:指定输出文件名。

2. 压缩(gzip):

   gzip:压缩文件。

   示例:`gzip file.txt` 压缩 `file.txt` 文件,生成 `file.txt.gz`。

   解压缩使用 `gunzip` 命令:`gunzip file.txt.gz`。

3. 创建并压缩tar包:

   tar -czvf`:创建并压缩 `.tar.gz` 文件。

   示例:`tar -czvf archive.tar.gz /home/user/documents` 将目录打包并压缩为 `.tar.gz` 文件。

4. 文件编辑器 Vim

4-1基本操作

1. 启动编辑器:使用 `vim <文件名>` 打开文件或新建文件。

   示例:`vim file.txt` 打开或创建 `file.txt`。

   

2. 切换模式:

   插入模式(i):用于输入文本,按 `i` 进入插入模式。

   命令模式(Esc):按 `Esc` 退出插入模式,回到命令模式执行保存、退出等命令。

   可视模式(v):选择文本,按 `v` 进入可视模式。

4-2常用命令

1.模式切换

 从普通模式进入插入模式:

- `i`:在当前光标位置前插入文本。

- `a`:在当前光标位置后插入文本。

- `o`:在当前行下方插入新行并进入插入模式。

 - `O`:在当前行上方插入新行并进入插入模式。

 从普通模式进入命令行模式:`:`。

 从普通模式进入可视模式:

- `v`:进入字符可视模式。

- `V`:进入行可视模式。

- `Ctrl+v`:进入块可视模式。

从插入模式或可视模式返回普通模式:按`Esc`键。

2.移动光标

 基本移动:

      `h`、`j`、`k`、`l`:分别对应左、下、上、右方向移动光标。

  `w`:移动到下一个单词的开头。

`b`:移动到上一个单词的开头。

`e`:移动到下一个单词的结尾。

快速移动:

`gg`:移动到文件开头。

`G`:移动到文件末尾。

`nG`:移动到第 n 行。

`Ctrl+o`:快速跳回之前的位置。  

`Ctrl+i`:快速跳转到下一个跳转位置。

3.编辑操作

 删除:

  `x`:删除当前光标所在字符。

`dw`:删除一个单词。

`dd`:删除一行。

`d$`:从当前光标位置删除到行尾。

`d^`:从当前光标位置删除到行首。

复制:

`yw`:复制一个单词。

`yy`:复制一行。

‘dyy’复制d行

`y$`:从当前光标位置复制到行尾。

`y^`:从当前光标位置复制到行首。

粘贴:

`p`(在当前光标位置后粘贴)或`P`(在当前光标位置前粘贴)。 撤销:`u`。

重做:`Ctrl+r`。

4.查找与替换

查找:

`/pattern`:正向查找指定模式。

`?pattern`:反向查找指定模式。

`n`:查找下一个匹配项。

`N`:查找上一个匹配项。

替换:

`:%s/old/new/g`:在整个文件中将所有的 old 替换为 new。

`:%s/old/new/gc`:在整个文件中将所有的 old 替换为 new,并在每次替换前询问。

5.保存与退出

保存:`:w`。

另存为:`:w newfile`。

退出:`:q`。

强制退出(不保存修改):`:q!`。

保存并退出:`:wq`。

5. 系统管理

5-1 用户管理

1. 创建用户:`useradd <用户名>`。

   示例:`useradd newuser` 创建一个名为 `newuser` 的新用户。

2. 删除用户:`userdel <用户名>`。

   示例:`userdel newuser` 删除用户 `newuser`。

3. 修改用户信息:`usermod`。

   示例:`usermod -aG sudo newuser` 将 `newuser` 添加到 `sudo` 组,授予管理员权限。

4. 权限管理:

   使用 `passwd` 命令设置用户密码。

   示例:`passwd newuser` 为 `newuser` 设置密码。

5-2 磁盘管理

1. 查看磁盘使用情况:

   `df`:查看文件系统的磁盘使用情况。

    示例:`df -h` 以人类可读格式(如MB、GB)显示磁盘使用情况。

   

2. 查看目录或文件的磁盘使用情况:

   du:查看文件或目录占用的磁盘空间。

     示例:`du -sh /home/user` 显示 `/home/user` 目录占用的磁盘空间。

3. 挂载与卸载设备:

   挂载:`mount <设备> <挂载点>`。

   示例:`mount /dev/sda1 /mnt` 将设备 `/dev/sda1` 挂载到 `/mnt` 目录。

   卸载:`umount <挂载点>`。

   示例:`umount /mnt`。

6. 网络服务及应用

6-1 网络配置

1. 网络配置命令:

   ifconfig:查看和配置网络接口信息(已被 `ip` 命令替代)。

     示例:`ifconfig` 显示网络接口的当前状态。

   ip a:查看网络接口的详细信息,替代 `ifconfig`。

     示例:`ip a` 列出所有网络接口及其IP地址。

   ping:测试与目标主机的网络连通性。

     示例:`ping www.google.com` 测试与Google服务器的连接。

2. 配置文件:

   Debian系:网络配置文件通常存放在 `/etc/network/interfaces` 中。

   Red Hat系:网络配置文件存放在 `/etc/sysconfig/network-scripts/` 中。

6-2 软件安装

1. 常用包管理器:

   Debian系(如Ubuntu):使用 `apt` 包管理器。

     示例:`apt update` 更新软件包列表,`apt install <软件包名>` 安装软件包。

   Red Hat系(如CentOS):使用 `yum` 包管理器。

     示例:`yum install <软件包名>` 安装软件包。

Linux 软件安装的常见方式:

软件包管理器安装

 对于不同的 Linux 发行版,有各自的软件包管理器,如 Ubuntu 中的 APT(Advanced Package Tool)、CentOS 中的 YUM(Yellowdog Updater, Modified)等。 使用软件包管理器可以方便地从官方软件源中搜索、安装、更新和卸载软件。例如,在 Ubuntu 中安装 Vim 编辑器,可以使用命令`sudo apt install vim`。

从源代码安装

 下载软件的源代码压缩包,通常以`.tar.gz`或`.tar.bz2`等格式。 解压缩源代码包,进入解压后的目录。 - 按照软件提供的安装说明,一般会执行`./configure`命令进行配置检查,生成 Makefile 文件;然后执行`make`命令进行编译;最后执行`sudo make install`命令进行安装。  这种方式安装的软件可以根据自己的需求进行定制,但安装过程相对复杂,且需要一定的编译知识。

二进制安装包安装

 有些软件提供了针对特定 Linux 发行版的二进制安装包,如`.deb`文件(适用于 Debian 和 Ubuntu 等)和`.rpm`文件(适用于 Red Hat、CentOS 和 Fedora 等)。 对于`.deb`文件,可以使用`sudo dpkg -i package.deb`命令进行安装;对于`.rpm`文件,可以使用`sudo rpm -i package.rpm`命令进行安装。

安装过程中的注意事项

权限问题  

在安装软件时,通常需要管理员权限,因此很多命令需要在前面加上`sudo`。 确保你知道自己在执行的操作,避免误操作导致系统问题。

依赖关系

 很多软件在安装时可能依赖其他软件包或库。软件包管理器通常会自动处理依赖关系,但在从源代码安装或使用二进制安装包时,可能需要手动解决依赖问题。 可以通过查看软件的安装说明或错误信息来确定所需的依赖,并进行安装。

软件源设置

确保你的 Linux 系统的软件源设置正确,以便能够顺利地从软件源中获取软件。 可以根据自己的需求选择不同的软件源,如官方软件源、第三方软件源等。但要注意第三方软件源的安全性和稳定性。      4. 安装后的配置  

有些软件在安装后需要进行一些配置才能正常使用。 可以查看软件的文档或在网上搜索相关的配置教程。

安装过程中的常见问题及解决方法

软件包管理器无法找到软件

 检查软件源是否设置正确,可以尝试更新软件源列表。 - 确认软件名称是否正确,可以在网上搜索软件在该 Linux 发行版中的正确名称。

安装过程中出现错误 查看错误信息,确定问题所在。常见的错误包括依赖关系未满足、权限不足等。 根据错误信息进行相应的解决,如安装依赖软件、使用管理员权限等。

 3. 从源代码安装时编译失败 检查编译环境是否正确安装,如编译器、库文件等。 查看软件的安装说明和文档,确定是否有特定的编译要求。 在网上搜索相关的编译错误信息,可能会找到其他人遇到的类似问题和解决方法。

6-3服务基础

1.Linux 服务概述

Linux 服务是在后台持续运行的程序,为系统和用户提供特定的功能。它们通常在系统启动时自动启动,并在后台默默工作,无需用户直接干预。

2.常见的 Linux 服务类型

系统服务  

网络服务:如 ssh(安全外壳协议服务,用于远程登录和管理服务器)、httpd(Apache HTTP 服务器,提供网页服务)等。

打印服务:cups(通用 Unix 打印系统),负责管理打印机和打印任务。

系统日志服务:rsyslog,记录系统的各种事件和消息。

应用服务

数据库服务:如 MySQL、PostgreSQL 等,用于存储和管理数据。 邮件服务:如 Postfix、Sendmail 等,负责发送和接收电子邮件。 文件共享服务:如 Samba(实现 Windows 和 Linux 之间的文件共享)、NFS(网络文件系统)等。

3.服务的管理工具

1. systemctl

 启动服务:`systemctl start service_name`。

停止服务:`systemctl stop service_name`。

重启服务:`systemctl restart service_name`。

查看服务状态:`systemctl status service_name`。

使服务在系统启动时自动启动:`systemctl enable service_name`。 禁止服务在系统启动时自动启动:`systemctl disable service_name`。

2.service

启动服务:`service service_name start`。

停止服务:`service service_name stop`。

重启服务:`service service_name restart`。

4.服务的配置文件

大多数 Linux 服务都有自己的配置文件,通常位于 `/etc` 目录下。例如:`/etc/ssh/sshd_config`:SSH 服务的配置文件。 `/etc/httpd/conf/httpd.conf`:Apache HTTP 服务器的配置文件。 通过编辑这些配置文件,可以调整服务的行为和参数。

5.服务的日志文件

服务在运行过程中会产生日志,记录各种事件和错误信息。日志文件通常位于 `/var/log` 目录下。例如: - `/var/log/messages`:系统日志文件,可能包含一些服务的相关信息。 - `/var/log/httpd/access_log` 和 `/var/log/httpd/error_log`:分别是 Apache HTTP 服务器的访问日志和错误日志。 通过查看日志文件,可以了解服务的运行情况,排查问题。 6.服务的安全考虑

限制服务的访问权限

只允许必要的用户和 IP 地址访问服务。对于敏感服务,可以使用防火墙进行限制。

定期更新服务和系统

及时安装安全补丁,修复已知的漏洞。

配置强密码和认证机制

对于需要用户认证的服务,设置强密码,并考虑使用多因素认证。 4. 监控服务的运行状态

使用监控工具,及时发现异常情况并采取措施。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值