• 主页
  • 相册
  • 随笔
  • 目录
  • 存档
Total 244
Search AboutMe

  • 主页
  • 相册
  • 随笔
  • 目录
  • 存档

linux笔记

2021-06-11

1. 1

1.1. 字符编码系统

  • ASCII:1字节,只用于英文
  • Unicode:UTF-8

1.2. 操作系统

操作系统=内核+系统调用

内核层(kernel)

  • 管理硬件的程序
    • 如果你的内核不支持网络协议,那么就算你的电脑有网卡也无济于事
  • 内核程序放置于内存中的受保护区域(?)
  • 内核程序是守护程序

系统调用层(system call)

  • 提供API调用内核
  • 应用程序的开发都是参考操作系统提供的API,所以该应用程序只能在该系统上运行

封装:硬件→(内核→系统调用)→应用程序(壳程序)

2. 2

2.1. 磁盘分区

磁盘设备文件名格式:/dev/sd[a-p]

  • 按Linux内核检测顺序
  • e.g. USB磁盘:/dev/sdc

磁盘分区

  • 磁盘分区是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分,盘片一旦划分成数个分区(Partition),不同类的目录与文件可以存储进不同的分区。
  • linux中有两种分区方式:MBR和GPT
MBRGPT
Master Boot RecordGlobally Unique Identifier Partition Table
主引导记录全局唯一标识分区表
可以安装启动程序的地方B3
MBR引导扇区仅有一个区块,容错低-
MBR内存放启动引导程序的区块只有446bytes,可能会不够用-
不支持2TB以上的大硬盘-

GPT和MBR对普通用户而言最主要的两个区别

  • GPT支持单分区容量超过2T
  • GPT支持快速启动

2.2. 目录树与挂载

Windows是通过 “某个硬盘-硬盘上的某个分区-分区上的特定文件系统-特定文件系统中的文件” 这样的顺序来访问到一个文件的。

但是与Windows不同, Linux 系统中的一切都是存放在唯一的虚拟文件系统中的,这个虚拟文件系统是树状的结构以一个根目录开始。启动系统后,有这个虚拟文件系统,再识别出各个硬盘,再把某个硬盘的某个分区挂载到这个虚拟文件系统的某个子树上(即分区用某个子目录来表示),再确定分区对应的子目录文件系统,最后的文件就存放在这个特定的文件系统中。也就是说,Linux 系统是通过 “虚拟文件系统-硬盘-硬盘上的分区-分区上的特定文件系统-特定文件系统中的文件” 这样的顺序来访问一个文件的

挂载:利用一个目录当作进入点,将磁盘物理分区挂在该目录下

  • /mnt

3. 4

  • 命令帮助
    • man
    • info
  • 判断用户等级
    • $:一般
    • #:root
  • 常用命令
    • date
    • cal:日历
    • bc:计算器

4. 5

4.1. 文件权限

三种身份决定的权限(除了root)

  • 用户User(即文件拥有者)
  • 用户组Group(拥有者所在组)
  • 其他人Other(非拥有者所在组)

4.2. 文件属性

执行ls -al后:

1
drwxrwx--- 3 root root 4096 Jun 25 08:35 .ssh

第一列:十位数

  • 1:文件or目录
  • 2-4:用户的权限
  • 5-7:用户组权限
  • 8-10:其他人权限

第二列:

  • 连接占用的节点(i-node)

第三列:

  • 文件或目录的拥有者

第四列:

  • 拥有者所在的用户组

第五列:文件大小

第六列: 创建日期或最近的修改日期

  • Access timestamp (atime)
  • Modified timestamp (mtime)
    • 默认是mtime
  • Change timestamp (ctime)
    • 文件的 Access time,atime 是在读取文件或者执行文件时更改的。
    • 文件的 Modified time,mtime 是在写入文件时随文件内容的更改而更改的。
    • 文件的 Create time,ctime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的

第七列:文件名

  • 如果文件名前面有’.’则说明是隐藏文件,只用ls的话是看不到隐藏文件的

  • stat

    • stat命令的输出信息比ls命令的输出信息要更详细

4.2.1. 更改文件属性

  • chgrp:更改所属用户组
    • -R recursive
    • chgrp grpname dirname/firename
  • chown:更改文件拥有者
    • -R recursive
    • chown username dirname/filename
    • chown username:grpname dirname/filename
    • 当文件被cp后,属性未变,所以常用此命令进行修改
  • chmod:修改权限属性
    • -R recursive
    • 数字法
      • 二进制:rwx–>421
    • 符号法
      1
      2
      3
      4
      5
      6
      chmod u=rwx,go=rx .bashrc

      chmod a+w .banshrc

      chmod a-x .bashrc

4.2.2. 文件类型

10字符的第1位

  • 普通文件:-
    • 纯文本文件
    • 二进制文件
    • 数据格式文件
  • 目录:d
  • 连接文件(link):l
  • 设备与设备文件
    • 块设备文件:b
    • 字符设备文件:c
  • 套接字:s
    • 通常在/var/run看到这种文件类型
  • 管道(FIFO, pipe):p

4.2.3. 文件扩展名

  • 在linux下,文件扩展名没有实际帮助,但可以借由它来了解文件内容
  • 在linux下,只要文件属性为x就是可执行,但可执行和能执行成功是不一样的
  • 文件或目录最长为255字符

4.3. 目录配置

4.3.1. FHS

  • 文件系统层次结构标准(Filesystem Hierarchy Standard,FHS)
  • 所有文件和目录
  • 仅定义了最上层以及子层这两层
  • 文件系统层次结构标准 - 维基百科,自由的百科全书
  • /usr/–>Unix Software Resource

4.3.2. 目录权限

  • r
    • 可以ls
  • w
    • 可以新建目录或文件(无论其属于谁)
    • 删除已存在的目录或文件(无论其属于谁)
    • 移动
  • x (access)
    • 进入目录
1
2
3
$ chmod 600 test
$ cd test
cd: permission denied: test

4.4. 文件系统(filesystem)

  • 操作系统对硬盘读取方式的不同导致了不同的文件系统
  • linux: ext3
  • VFS(Virtual Firesystem Switch)

    操作系统的文件系统虚拟层,在其下是实体的文件系统。虚拟文件系统的主要功用,在于让上层的软件,能够用单一的方式,来跟底层不同的文件系统沟通。在操作系统与之下的各种文件系统之间,虚拟文件系统提供了标准的操作接口,让操作系统能够很快的支持新的文件系统

5. 6

5.1. 目录和路径

1
2
3
- 前一个工作目录
~ “当前用户身份”所在的家目录
~account account用户的家目录
  • cd: change directory切换目录
  • pwd: print working directory显示工作目录
    • -P: 获得正确的目录名,而不是以连接文件的路径来显示
  • mkdir
    • -p: 建立多层目录 mkdir -p /l1/l2/l3
  • rmdir: 删除“空目录”
    • -p: 与上层“空”目录一起删除
    • 相比于直接rm更安全

5.1.1. 环境变量

  • 用冒号:分隔地址
  • 用完整文件名来执行命令

5.2. 查看文件内容

  • cat vs tac
    • 从第一行开始显示 vs 从最后一行开始显示
  • nl: cat带上行号
    • 可左可右可不加0
  • more没法往前翻页,但less可以
  • od:查看非纯文本——十六进制
  • touch:可以创建文件或修改文件时间/日期

5.3. 文件默认权限

  • umask
    • chmod用于更改已有对象的权限,umask影响之后新建对象的权限

5.4. 文件隐藏权限

  • chattr

    • 用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性(8种)

      用chattr命令防止系统中某个关键文件被修改:

      1
      chattr +i /etc/fstab

      然后试一下rm、mv、rename等命令操作于该文件,都是得到Operation not permitted的结果。

      让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作:

      1
      chattr +a /data1/user_act.log
  • lsattr

5.5. 文件类型

  • file
    1
    2
    ➜  ~ file package-lock.json
    package-lock.json: ASCII text

5.6. 搜索文件

  • which:寻找执行文件
    • -a:将所有可找到的命令全部列出

6. 7

6.1. 载入点(inode)

inode (index node)是指在许多“类Unix文件系统”中的一种数据结构,用于描述文件系统对象(包括文件、目录、设备文件、socket、管道等)。每个inode保存了文件系统对象数据的属性和磁盘块位置

6.2. df

df命令:用于显示磁盘分区上的可使用的磁盘空间。

  • 默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

6.3. du

du命令 也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看

  • du -sh * |sort -rh

6.4. 链接文件

有点类似于windows中的快捷方式,指向一个源文件

链接文件按结构分类:

  • 硬链接
  • 软连接

6.4.1. 硬链接(实际链接)

文件系统创建(格式化)时,就把存储区域分为两大连续的存储区域。

  • 一个用来保存文件系统对象的元信息数据,这是由inode组成的表(inode表)
  • 另一个用来保存“文件系统对象”的内容数据

文件系统中每个“文件系统对象”对应一个“inode”数据,并用一个整数值来辨识。这个整数常被称为inode号码(“i-number”或“inode number”)

  • 文件系统中如果两个文件或者两个目录具有相同的inode号码,那么就称它们是“硬链接”关系。实际上都是这个inode的别名。
    • 换句话说,一个inode对应的所有文件(或目录)中的每一个,都对应着文件系统某个“目录文件”中唯一的一个目录项。
      • 比如~和/home/xxx?
    • 创建一个目录时,实际做了3件事:
      • 在其“父目录文件”中增加一个条目;
      • 分配一个inode;
      • 再分配一个存储块,用来保存当前被创建目录包含的文件与子目录

6.4.2. 软连接(符号链接)

  • 类似指针,存储的是实际文件的地址

6.4.3. ln

ln命令 用来为文件创建链接,默认的链接类型是硬链接。如果要创建符号链接必须使用”-s”选项。

  • 为何使用?理由如同快捷方式(快速访问?)

6.5. 磁盘分区、格式化、挂在与卸载

略

6.6. 建立虚拟内存

  • 目的:增加虚拟内存
    • 避免杀进程
  • 方法:
    • 建立swap分区
    • 设置虚拟内存文件

7. 8

7.1. 压缩

  • .tar
    • tar打包,并没有压缩过
  • .gz(例如.tar.gz)
    • gzip压缩

7.1.1. tar

tar命令:可以为linux的文件和目录创建档案(备份文件)

  • 打包是指将一大堆文件或目录变成一个总的文件
  • Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)

7.1.2. gzip

  • gzip:压缩
  • gunzip:解压缩,用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。
    • 事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成

8. 9

8.1. linux下的任务管理器

  • top
    • 实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具
    • 从结果上包含了free查看内存的结果
  • ps
    • 报告当前系统的进程状态
    • Process Status
  • lsof

    lsof(list open files)是一个查看当前系统文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,该文件描述符提供了大量关于这个应用程序本身的信息。

  • kill:终止进程
  • Notes
  • Operating System
  • Linux
  • Basic
【外设】hifi小烧闲谈
【外设】Cheap 60键盘组装记录
  1. 1. 1. 1
    1. 1.1. 1.1. 字符编码系统
    2. 1.2. 1.2. 操作系统
  2. 2. 2. 2
    1. 2.1. 2.1. 磁盘分区
    2. 2.2. 2.2. 目录树与挂载
  3. 3. 3. 4
  4. 4. 4. 5
    1. 4.1. 4.1. 文件权限
    2. 4.2. 4.2. 文件属性
      1. 4.2.1. 4.2.1. 更改文件属性
      2. 4.2.2. 4.2.2. 文件类型
      3. 4.2.3. 4.2.3. 文件扩展名
    3. 4.3. 4.3. 目录配置
      1. 4.3.1. 4.3.1. FHS
      2. 4.3.2. 4.3.2. 目录权限
    4. 4.4. 4.4. 文件系统(filesystem)
  5. 5. 5. 6
    1. 5.1. 5.1. 目录和路径
      1. 5.1.1. 5.1.1. 环境变量
    2. 5.2. 5.2. 查看文件内容
    3. 5.3. 5.3. 文件默认权限
    4. 5.4. 5.4. 文件隐藏权限
    5. 5.5. 5.5. 文件类型
    6. 5.6. 5.6. 搜索文件
  6. 6. 6. 7
    1. 6.1. 6.1. 载入点(inode)
    2. 6.2. 6.2. df
    3. 6.3. 6.3. du
    4. 6.4. 6.4. 链接文件
      1. 6.4.1. 6.4.1. 硬链接(实际链接)
      2. 6.4.2. 6.4.2. 软连接(符号链接)
      3. 6.4.3. 6.4.3. ln
    5. 6.5. 6.5. 磁盘分区、格式化、挂在与卸载
    6. 6.6. 6.6. 建立虚拟内存
  7. 7. 7. 8
    1. 7.1. 7.1. 压缩
      1. 7.1.1. 7.1.1. tar
      2. 7.1.2. 7.1.2. gzip
  8. 8. 8. 9
    1. 8.1. 8.1. linux下的任务管理器
© 2024 何决云 载入天数...