Linux学习一(基础知识与命令)

Linux学习一 : 基础知识与命令

基础

Linux基础知识

Linux是一个基于文件的操作系统。
操作系统需要和硬件进行交互, 对应Linux来说这些硬件都是文件,比如: 操作系统会将 硬盘, 鼠标, 键盘, 显示屏等抽象成一个设备文件来进行管理。

Linux内核:
Linux有用户态和内核态两个空间,内核空间是linux的主要部分。Linux内核的主要组件有:系统调用接口、进程管理、内存管理、虚拟文件系统、网络堆栈、设备驱动程序、硬件架构的相关代码。

系统调用接口:system call Interface:SCI层提供了某些机制执行从用户空间到内核的函数调用。
进程管理:指的是系统对进程的多种状态之间转换的策略。Linux 下的进程调度有 3 种策略:

  1. SCHED_OTHER(分时调度策略(默认),是用于针对普通进程的时间片轮转调度策略。)
  2. SCHED_FIFO(实时调度策略,是针对运行的实时性要求比较高、运行时间短的进程调度策略)
  3. SCHED_RR(实时调度策略,是针对实时性要求比较高、运行时间比较长的进程调度策略。)

内存管理

  • 内存管理是多个进程间的内存共享策略。
  • 在Linux中,内存管理主要说的是虚拟内存。虚拟内存可以让进程拥有比实际物理内存更大的内存,可以是实际内存的很多倍。
  • 每个进程的虚拟内存有不同的地址空间,多个进程的虚拟内存不会冲突。内存是按照所谓的内存页 方式进行管理的(对于大部分体系结构来说都是 4KB)。
  • Linux 包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。不过内存管理要管理的可不止 4KB 缓冲区。Linux 提供了对 4KB 缓冲区的抽象,例如 slab 分配器。这种内存管理模式使用 4KB 缓冲区为基数,然后从中分配结构,并跟踪内存页使用情况,比如哪些内存页是满的,哪些页面没有完全使用,哪些页面为空。这样就允许该模式根据系统需要来动态调整内存使用。
  • 为了支持多个用户使用内存,有时会出现可用内存被消耗光的情况。由于这个原因,页面可以移出内存并放入磁盘中。这个过程称为交换,因为页面会被从内存交换到硬盘上。

虚拟文件系统:虚拟文件系统(VFS)是 Linux 内核中非常有用的一个方面,因为它为文件系统提供了一个通用的接口抽象。在 Linux 下支持多种文件系统,如 ext、ext2、minix、umsdos、msdos、vfat、ntfs、proc、smb、ncp、iso9660、sysv、hpfs、affs 等。目前 Linux 下最常用的文件格式是 ext2 和 ext3。

网络堆栈:网络堆栈在设计上遵循模拟协议本身的分层体系结构。

  • Internet Protocol (IP) 是传输协议(通常称为传输控制协议或 TCP)下面的核心网络层协议。
  • TCP 上面是 socket 层,它是通过 SCI 进行调用的。
  • socket 层是网络子系统的标准 API,它为各种网络协议提供了一个用户接口。
  • 从原始帧访问到 IP 协议数据单元(PDU),再到 TCP 和 User Datagram Protocol (UDP),socket 层提供了一种标准化的方法来管理连接,并在各个终点之间移动数据。

设备驱动程序:Linux 内核中有大量代码都在设备驱动程序中,它们能够运转特定的硬件设备。Linux 源码树提供了一个驱动程序子目录,这个目录又进一步划分为各种支持设备,例如 Bluetooth、I2C、serial 等。

**进程间通信**:Linux 操作系统支持多进程,进程之间需要进行数据的交流才能完成控制、协同工作等功能,Linux 的进程间通信是从 UNIX 系统继承过来的。Linux 下的进程间的通信方式主要有管道、信号、消息队列、共享内存和套接字等方法。

命令解析器

bash : 命令解析器需要依次搜索 PATH中的各个目录, 检查这些目录中是否有用户输入的指令。找不到的时候输出command not found。
有普通用户和root用户的区分。
Tab键补全命令,由于很定shell命令的开头字母是相同的, 在这种情况下, 按一次Tab是不会自动补齐的,我们可以连续按两次Tab键,在当前终端中就可以显示出所有匹配成功的shell命令

文件管理命令

cd :切换工作目录
ls:显示文件 ls -a 还可以显示隐藏文件, ls -l 显示详细信息,主要看文件时间和权限。rwx:读/写/执行
创建目录:mkdir
删除目录:rmdir
rm可以删除文件,也可以删除目录,rm -r 递归删除 -f强制删除文件, rm -rf 可以强制删除文件或目录。
cp:拷贝
mv:移动文件: 移动文件到上一级:mv file ../
cat:查看文件内容
more:可以用翻屏的方式查看内容,比cat高级一点。
head:查看文件头部的若干信息
tail:查看文件尾部的若干信息。
链接分两种类型: 软连接和硬链接。软连接相当于windows中的快捷方式,硬链接文件并不会进行拷贝,只是多出一个新的文件名并且硬链接计数会加1。
chmod:修改文件权限,用的也挺多的,.sh文件刚建立的时候不能直接运行,需要添加chmod +x run.sh,加上执行权限。
chown:修改文件所有者,基本没用过
tree:显示树状目录
pwd:pwd命令用户当前所在的工作目录, 没有参数, 直接执行该命令即可
touch:创建新的空文件。
which命令可以查看要执行的命令所在的实际路径, 命令解析器工作的时候也会搜索这个目录。
可以用输出输入重定向进行文件内容的输入和输出。

用户管理命令

linux是多用户系统,有的时候需要进行用户切换,用su或者su-。su只切换用户, 当前的工作目录不会变化, 但是使用 su -不仅会切换用户也会切换工作目录, 工作目录切换为当前用户的家目录。

添加新用户需要使用adduser/useradd命令来完成。
userdle命令才能删除用户在系统中的用户ID和所属组ID等相关信息,但是需要注意的是在某些Linux版本中用户虽然被删除了, 但是它的家目录却没有被删除,需要我们手动将其删除。
groupadd添加用户组, 使用 groupdel删除用户组。
passwd 修改密码

压缩

tar 涉及参数:
c:创建压缩文件
z: 使用gzip的方式进行文件压缩
j: 使用bzip2的方式进行文件压缩
v: 压缩过程中显示压缩信息, 可以省略不写
f: 指定压缩包的名字
在这里插入图片描述

解压缩

怎么压缩就怎么解压缩,只不过c换成x
后缀多加上 -C文件名,可以将文件解压到指定的文件夹下。
在这里插入图片描述

zip需要自己安装,挺好用,用的时候搜一下。

查找命令

find:根据文件的属性, 查找对应的磁盘文件。
find模糊查询的时候,用到两个符号,*和?, *可以匹配多个字符,?匹配单个字符。
find 搜索路径 - type 文件类型,可以指定文件类型进行搜索。
find 搜索的路径 -size [+|-]文件大小 ,可以指定文件大小进行搜索。
-maxdepth: 最多搜索到第多少层目录
-mindepth: 至少从第多少层开始搜索
可以同时执行多个操作、
-exec 是find的参数, 可以在exec参数后添加其他需要被执行的shell命令。find 添加了 exec 参数之后, 命令的尾部需要加一个后缀 {} ;, 注意 {}和\之间需要有一个空格。
find 路径 参数 参数值 -exec shell命令2 {} \ ;
在find 中 使用 xargs 关键字我们就可以使用管道
在这里插入图片描述

grep 命令用于查找文件里符合条件的字符串。
-r: 如果需要搜索目录中的文件内容, 需要进行递归操作, 必须指定该参数
-i: 对应要搜索的关键字, 忽略字符大小写的差别.
-n: 在显示符合样式的那一行之前,标示出该行的列数编号
在这里插入图片描述

locate:简化版的find, 使用这个命令我们可以根据文件名搜索本地的磁盘文件, 但是locate的效率比find要高很多。原因在于它不搜索具体目录,而是搜索一个本地的数据库文件,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。


Linux学习一(基础知识与命令)
https://cauccliu.github.io/2024/03/26/Linux学习一(基础知识与命令)/
Author
Liuchang
Posted on
March 26, 2024
Licensed under