6、Linux操作系统基础知识

1. Linux系统结构

1. 内核

内核是操作系统的核心组件,负责管理系统资源和硬件设备。它提供了硬件抽象层,使得应用程序不必直接操作硬件。内核的主要功能包括:

  • 进程管理:创建、调度和终止进程。
  • 内存管理:分配和回收内存,提供虚拟内存功能。
  • 设备管理:控制硬件设备的访问。
  • 文件系统管理:管理文件和目录结构。
  • 系统调用接口:提供系统调用,使应用程序能够与操作系统交互。

2. Shell

Shell是用户与操作系统之间的交互界面,接受用户命令并将其传递给内核执行。Shell可以是命令行界面(CLI)或图形用户界面(GUI)。其主要作用包括:

  • 命令解释:解析用户输入的命令。
  • 脚本执行:运行Shell脚本,实现自动化任务。
  • 程序启动:根据用户命令启动应用程序。
  • 环境管理:配置和管理用户环境变量。

3. 文件系统

文件系统负责管理和存储数据,提供文件和目录的组织结构。其主要功能包括:

  • 数据存储:将数据以文件形式存储在磁盘上。
  • 目录管理:组织文件和目录的层次结构。
  • 访问控制:设置文件和目录的读写权限。
  • 文件操作:提供创建、删除、读取、写入和修改文件的操作接口。

4. 应用程序

应用程序是由用户或第三方开发者编写的软件,用于执行特定任务或功能。它们通过系统调用与内核交互,利用系统资源完成任务。应用程序的主要特点包括:

  • 特定功能:每个应用程序针对特定的任务设计,例如文字处理、数据分析、网络浏览等。
  • 用户接口:提供图形界面或命令行界面供用户操作。
  • 依赖系统资源:通过系统调用接口使用内存、CPU、存储等系统资源。
  • 扩展性:可通过插件或外部模块扩展功能。
    image

Linux操作系统内核

  • 1、进程管理

    • 进程调度
    • 进程创建与销毁
    • 进程间通信
  • 2、内存管理

    • 内存分配与回收
    • 虚拟内存管理
    • 缓存管理
  • 3、驱动管理

    • 设备驱动程序接口
    • 硬件抽象层
    • 中断处理
  • 4、文件和网络管理

    • 文件系统管理
    • 网络协议栈
    • 网络安全及防火墙管理
      ........

Linux Shell(壳)

Linux Shell接收用户命令并将其转换为内核可执行的系统调用。具体而言,用户输入的命令如cat会被Shell解析为open()read()等系统调用,然后由内核执行。

  • 简化操作:Shell通过友好的命令行接口,使用户无需了解底层细节即可与操作系统交互。
  • 安全性:Shell验证和解析用户输入,确保只执行合法命令,从而增强内核的安全性。

Linux Shell工具

名称 程序路径 作者
Bourne Shell /usr/bin/sh 或 /bin/sh Stephen Bourne
C Shell /usr/bin/csh Bill Joy
K Shell /usr/bin/ksh David Korn
Bourne Again Shell /bin/bash Brian Fox
Z Shell /bin/zsh 或 /usr/bin/zsh Paul Falstad
  • 查看当前工具: echo $SHELL
  • 查看工具列表: cat /etc/shells
  • 查看可切换工具: chsh -l
  • 切换使用工具: chsh -s 工具名

Shell和Terminal

image

Shell编程/Shell脚本(.sh)

image

Linux文件系统

一切皆文件

在Linux中,“一切皆文件”的概念意味着系统中的所有资源,包括硬件设备、目录及进程等,均被视为文件。这种设计简化了操作和管理,具体包括:

  • 普通文件:存储数据的常规文件。
  • 目录文件:包含其他文件和子目录的文件。
  • 进程文件:在/proc目录下代表系统中运行的进程。
  • 设备文件:位于/dev目录,代表硬件设备。
  • 网络字节流套接字文件:用于网络通信的数据流。
  • 链接文件:指向另一个文件的符号链接或硬链接。
  • 管道文件:用于进程间通信的文件。

这种设计哲学是Linux系统高效和灵活性的基础。通过统一的文件接口,用户和程序可以以一致的方式访问和操作系统资源,从而简化了系统的操作和管理。

命令 作用
lsof /bin/bash 查找与某个文件相关的进程
lsof -u root 列出某个用户(如 root)打开的文件信息
lsof -c redis 列出某个程序(如 redis)进程所打开的文件信息
lsof -i tcp 列出所有 TCP 网络连接信息

losf 文件名——查看合格者文件相关的进程。
/ 在Linux系统里是根目录,也是分隔符
image

目录结构

目录 作用 备注
/bin 存放普通用户可执行的指令 即使在单用户模式下也能够执行
/boot 开机引导目录 包括Linux内核文件与引导文件
/dev 设备目录 存放所有硬件设备
/etc 配置文件目录 存放大部分配置属性
/lib 库文件存放地 类似Windows的DLL
/media 可移除设备挂载目录 用于U盘、光盘等
/mnt 临时挂载其他文件 额外设备的临时挂载
/opt 第三方软件安装目录 习惯上放置在/usr/local
/proc 虚拟文件系统 通常为内存中的映射
/root 系统管理员主目录 除root外其他用户在/home
/run 系统运行时所需文件 重启后重新生成
/sbin 只有root能运行的管理指令 类似/bin,但仅限于管理员
/srv 服务所需数据目录
/sys 虚拟文件系统 记录核心系统硬件信息
/tmp 临时文件目录 所有用户可读写
/usr 应用程序放置目录
/var 存放经常改变的文件

用户主目录

  • 主目录home directory

    • root用户的主目录是/root
    • 其他用户的主目录格式为/home/用户名
    • 使用命令cdcd ~可切换到主目录
  • 工作目录working directory

目录指代

符号 指代
/ 根目录
. 当前目录
~ 用户工作目录
../ 上一级目录
../../ 上上一级目录,依此类推

命令帮助

  • 查看命令手册:man command
  • 简要说明:whatis command
  • 详细介绍:info command
  • 内置命令帮助:help command

在线查询:

关机与重启(root用户)

  • 关机命令

    • poweroff
    • shutdown -h now
    • halt -p
  • 重启命令

    • reboot

快捷键与命令

操作 作用
Tab 补全命令和目录
↑/↓ 上一条/下一条命令
Ctrl + Insert 复制
Shift + Insert 粘贴
Alt + Insert 复制并粘贴
Ctrl + E 光标移动到行尾
Ctrl + A 光标移动到行首
Ctrl + K 清除光标后至行尾的内容
Ctrl + U 清除光标前至行首的内容
Ctrl + R 搜索历史命令
!cd: 重复执行最近一次以cd开头的命令
clear 清屏
history 查看历史命令
history -c 清除历史命令(新建会话后仍在)
echo > ~/.bash_history 彻底清除历史命令(CentOS)
echo > ~/.zsh_history 彻底清除历史命令(Kali Linux)

echo > ~/.bash_history 实际是将空赋给当前用户历史文件,达到清空目的

别名配置 alias

  • 查看别名:alias
  • 设置别名:
    1. 打开配置文件:vim ~/.bashrc
    2. 添加别名格式:alias short='xxx;xxx'
  • 使配置生效:source ~/.bashrc

通配符

符号 指代
* 任意字符
? 单个字符
[] 匹配范围中的字符,例如:[0-9] 表示数字,[a-z] 表示小写字母
{} 匹配多个模式中的一个,例如:*.{log,txt} 表示匹配 .log 和 .txt 文件
^ 取反,例如:*[^txt] 查找不是 .txt 结尾的文件

系统环境变量 实际就是可执行文件的路径

  • 作用:定义可执行文件的路径
  • 查看全部变量:env
  • 查看单个变量:echo $XXX
  • 用户变量存放在:~/.bashrc
  • 系统变量存放在:/etc/profile

设置JDK环境变量:

  1. 编辑系统环境配置文件:vim /etc/profile
  2. 添加以下内容:
    export JAVA_HOME=/usr/local/soft/java/jdk1.8.0_74
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    

使配置生效:source /etc/profile

重定向符号

使用场景:

  1. 保存屏幕输出到文件。
  2. 将后台程序输出保存到文件。
  3. 将文件内容作为命令的输入。
  4. 屏蔽命令运行中的错误信息。

文件描述符

ID 描述 设备 备注
0 标准输入 (stdin) 键盘 默认输入值
1 标准输出 (stdout) 显示器 默认输出值
2 标准错误输出 (stderr) 显示器

重定向符号解释

符号 类别 描述
> 输出重定向 将命令的输出重定向到文件,覆盖原有内容
>> 输出重定向 将命令的输出追加到文件末尾
&> 输出重定向 将标准输出和标准错误输出重定向到文件
< 输入重定向 将文件内容作为命令的输入
<< 输入重定向 将多行文本作为命令的输入(Here Document)

案例—输出重定向

类别 命令格式 示例
标准输出 command > file ls / 1> test.txt (1可以省略)
重定向 command >> file echo "aaa" 1>> test.txt (1可以省略)
标准错误 command 2> file find / -name "aaa" 2> err.txt
输出重定向 command 2>> file find / -name "aaa" 2>> err.txt
输出和错误 command > file 2>&1 ls 7.txt 8.txt 1> a.txt 2> b.txt
  • 2>&1的含义:将标准错误输出重定向到标准输出,符号>&是一个整体,不可分 开,分开后就不是上述含义了
  • 2>1的写法其实是将标准错误输出重定向到名为"1 ”的文件里去了
命令格式 说明 案例
command < file 将文件内容作为命令的输入 wc -l < test.txt 统计test.txt 文件中有多少行文本
command << END 从标准输入(键盘)中读取数据,直到遇见分界符END才停止 wc -l << END 统计用户在终端输入的文本的行数
posted @   感觉小丑  阅读(266)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示