Linux基础和常见命令速览

来源:Linux 基础知识总结 | JavaGuide

一、Linux文件系统

1. 文件系统

        Linux 系统中的一个重要的概念:一切都是文件。

        在 Linux 操作系统中,一切被操作系统管理的资源,如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或目录等,都被视为文件,将所有资源都抽象为文件的方式来进行管理和访问。Linux 的文件系统也借鉴了 UNIX 文件系统的设计理念。这种设计使得 Linux 系统可以通过统一的文件接口来管理和操作不同类型的资源,从而实现了一种统一的文件操作方式。例如,可以使用类似于读写文件的方式来对待网络接口、磁盘驱动器、设备文件等,使得操作和管理这些资源更加统一和简便。

        这种文件为中心的设计理念为 Linux 系统带来了灵活性和可扩展性。

2. inode

        1. inode 是 Linux/Unix 文件系统的基础,使用 inode 区分不同的文件(所以每个文件的inode唯一)。

        2. 每个文件都有一个唯一的 inode,存储该文件的元信息。即使文件名被修改或删除,文件的 inode 号码不会改变,从而可以避免一些因文件重命名、移动或删除导致的错误。

说明一些概念:

  • 扇区(Sector):硬盘的最小存储单位
  • 块(block):由多个扇区组成,文件数据就存储在块中,一个块只能存放一个文件,如果一个文件大于一个块时候,存一个文件需要多个块。
  • 元信息 (metadata):由于文件被分在多个块中存储,需要一个额外空间记录一些文件的属性信息,如某个文件被分成几块、每一块在的地址、文件拥有者,创建时间,权限,大小等。
存储文件元信息的区域就叫 inode,译为索引节点

        3. inode 是一种固定大小的数据结构,其大小在文件系统创建时就确定了,并且在文件的生命周期内保持不变。

        4. inode 访问速度非常快,因为系统可以直接通过 inode 号码定位到文件的元数据信息,无需遍历整个文件系统。

        5. inode 数量有限,每个文件系统只能包含固定数量的 inode。这意味着当文件系统中的 inode 用完时,无法再创建新的文件或目录,即使磁盘上还有可用空间。因此,在创建文件系统时,需要根据文件和目录的预期数量来合理分配 inode 的数量。

        6. 可以使用 stat 命令可以查看文件的 inode 信息,包括文件的 inode 号、文件类型、权限、所有者、文件大小、修改时间(使用 inode 号码也使得文件系统在用户和应用程序层面更加抽象和复杂,需要通过系统命令或文件系统接口来访问和管理文件的 inode 信息。)

3. 文件类型

        Linux 支持很多文件类型,其中非常重要的文件类型有: 普通文件目录文件链接文件设备文件管道文件Socket 套接字文件 等。

  • 普通文件(-):用于存储信息和数据, Linux 用户可以根据访问权限对普通文件进行查看、更改和删除。比如:图片、声音、PDF、text、视频、源代码等等。
  • 目录文件(d,directory file):用于表示和管理系统中的文件,目录文件中包含一些文件名和子目录名。打开目录事实上就是打开目录文件。
  • 符号链接文件(l,symbolic link):保留了指向文件的地址而不是文件本身。
  • 字符设备(c,char):用来访问字符设备,比如键盘。
  • 设备文件(b,block):用来访问块设备,比如硬盘、软盘。
  • 管道文件(p,pipe) : 用于进程之间的通信,一种特殊类型的文件。
  • 套接字文件(s,socket):用于进程间的网络通信,也可以用于本机之间的非网络通信。

每种文件类型都有不同的用途和属性,可以通过命令(ls、file等)查看文件的类型信息。

4. 文件链接

        在 Linux/类 Unix 系统上,文件链接(File Link)是一种特殊的文件类型,可以在文件系统中指向另一个文件。常见的文件链接类型有两种:

1、硬链接(Hard Link)

  • 硬链接通过 inode 节点号建立连接,硬链接和源文件的 inode 节点号相同,两者对文件系统来说是完全平等的(可以看作是互为硬链接,源头是同一份文件)。
  • 只有删除了源文件和所有对应的硬链接文件,该文件才会被真正删除。删除其中任何一个对另外一个没有影响,可以通过给文件设置硬链接文件来防止重要文件被误删
  • 硬链接具有一些限制,不能对目录以及不存在的文件创建硬链接,并且,硬链接也不能跨越文件系统
  • ln 命令用于创建硬链接。

硬链接为什么不能跨文件系统?

        硬链接是通过 inode 节点号建立连接的,而硬链接和源文件共享相同的 inode 节点号。然而,每个文件系统都有自己的独立 inode 表,且每个 inode 表只维护该文件系统内的 inode。如果在不同的文件系统之间创建硬链接,可能会导致 inode 节点号冲突的问题,即目标文件的 inode 节点号已经在该文件系统中被使用。
        通俗的说,就是另一个文件系统想要和我这个文件系统跨系统建立硬链接,那么需要和他的源文件使用相同的inode,但是这个inode在我的文件系统中已经存在,那么在我的系统中,这个inode到底是指的哪个文件说不清楚。

2、软链接(Symbolic Link 或 Symlink)

  • 软链接和源文件的 inode 节点号不同,而是指向一个文件路径
  • 源文件删除后,软链接依然存在,但是指向的是一个无效的文件路径
  • 软连接类似于 Windows 系统中的快捷方式。
  • 不同于硬链接,可以对目录或者不存在的文件创建软链接,并且,软链接可以跨越文件系统
  • ln -s 命令用于创建软链接。

5. 目录树

        目录树是一种层次结构,用来组织文件和目录。目录树由根目录(/)作为起始点,向下延伸,形成一系列的目录和子目录。每个目录可以包含文件和其他子目录。结构层次鲜明,就像一棵倒立的树。

常见目录说明:

  • /bin: 存放二进制可执行文件(ls、cat、mkdir 等),常用命令一般都在这里;

  • /etc: 存放系统管理和配置文件;

  • /home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户 user 的主目录就是/home/user,可以用~user 表示;

  • /usr: 用于存放系统应用程序;

  • /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把 tomcat 等都安装到这里;

  • /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;

  • /root: 超级用户(系统管理员)的主目录(特权阶级^o^);

  • /sbin: 存放二进制可执行文件,只有 root 才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如 ifconfig 等;

  • /dev: 用于存放设备文件

  • /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;

  • /boot: 存放用于系统引导时使用的各种文件;

  • /lib 和/lib64: 存放着和系统运行相关的库文件 ;

  • /tmp: 用于存放各种临时文件,是公用的临时文件存储点;

  • /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;

  • /lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows 下叫什么.chk)就在这里。 

二、常见命令

速查手册:Linux命令搜索引擎 命令,Linux Linux命令搜索引擎 命令详解:最专业的Linux命令大全,内容包含Linux命令手册、详解、学习,值得收藏的Linux命令速查手册。 - Linux 命令搜索引擎

https://www.shell.how/解释常见命令:https://www.shell.how/

1. 目录切换-cd

  • cd usr:切换到该目录下 usr 目录
  • cd ..(或cd../):切换到上一层目录
  • cd /:切换到系统根目录
  • cd ~:切换到用户主目录
  • cd - 切换到上一个操作所在目录

2. 目录操作

  • ls:显示当前目录中的文件和子目录的列表。
  • ll: ls -l 的别名,可以看到该目录下的所有目录和文件的详细信息。
  • mkdir [选项] 目录名:创建新目录(增)。
  • find [路径] [表达式]:在指定目录及其子目录中搜索文件或目录(查)。
  • pwd:显示当前工作目录的路径。
  • rmdir [选项] 目录名:删除空目录(删),并且会递归删除目录名的空父目录,直到遇到非空目录或根目录。
  • rm [选项] 文件或目录名:删除文件/目录(删)。
  • cp [选项] 源文件/目录 目标文件/目录:复制文件或目录(移)。
  • mv [选项] 源文件/目录 目标文件/目录:移动文件或目录(移),也可以用于重命名文件或目录。mvcp 的结果不同,mv 好像文件“搬家”,文件个数并未增加。而 cp 对文件进行复制,文件个数增加了。

3. 文件操作

mvcprm 等命令文件和目录都适用
  • touch [选项] 文件名..:创建新文件或更新已存在文件(增)。
  • ln [选项] <源文件> <硬链接/软链接文件>:创建硬链接/软链接。
  • cat/more/less/tail 文件名:文件的查看(查) 。
  • vim 文件名:修改文件的内容(改)。vim 编辑器是 Linux 中的强大组件,是 vi 编辑器的加强版,在实际开发中,使用 vim 编辑器主要作用就是修改配置文件,下面是一般步骤:vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! (输入 wq 代表写入内容并退出,即保存;输入 q!代表强制退出不保存)。

4. 文件压缩

1)打包并压缩文件:

        Linux 中的打包文件一般是以 .tar 结尾的,压缩的命令一般是以 .gz 结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般 .tar.gz

命令:tar -zcvf 打包压缩后的文件名 要打包压缩的文件 ,其中:
  • z:调用 gzip 压缩命令进行压缩
  • c:打包文件
  • v:显示运行过程
  • f:指定文件名

2)解压压缩包:

命令:tar [-xvf] 压缩文件 -C 解压到的位置

其中 x 代表解压,-C部分省略即解压到当前目录。

5. 文件传输

  • scp [选项] 源文件 远程文件 :secure copy,安全复制,用于通过 SSH 协议进行安全的文件传输,可以实现从本地到远程主机的上传和从远程主机到本地的下载。
  • rsync [选项] 源文件 远程文件 : 可以在本地和远程系统之间高效地进行文件复制,并且能够智能地处理增量复制,节省带宽和时间。
  • ftp (File Transfer Protocol):提供了一种简单的方式来连接到远程 FTP 服务器并进行文件上传、下载、删除等操作。

6. 文件权限

        操作系统中每个文件都拥有特定的权限、所属用户和所属组。
        权限是操作系统用来限制资源访问的机制,在 Linux 中权限一般分为读(readable)、写(writable)和执行(executable,分别对应文件的属主(owner),属组(group)和其他用户(other)。通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。超级用户可以无视普通用户的权限。
        通过 ls -l 命令我们可以查看某个目录下的文件或目录的权限。第一列的内容的信息解释如下:

 

文件的类型:

  • d:代表目录
  • -:代表文件
  • l:代表软链接(可以认为是 window 中的快捷方式)

Linux 中权限分为以下几种:

  • r:代表权限是可读,r 也可以用数字 4 表示
  • w:代表权限是可写,w 也可以用数字 2 表示
  • x:代表权限是可执行,x 也可以用数字 1 表示

         

        

        在 linux 中的每个用户必须属于一个组,不能独立于组外。在 linux 中每个文件都有:所有者、所在组、其它组的概念。

  • 所有者(u):一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用 ls ‐ahl 命令可以看到文件的所有者,也可以使用 chown 用户名 文件名 来修改文件的所有者 。
  • 文件所在组(g):当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组,用 ls ‐ahl命令可以看到文件的所有组,也可以使用 chgrp 组名 文件名 来修改文件所在的组。
  • 其它组(o):除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。
        chmod 命令修改文件/目录的权限。 
        示例:修改 aaa.txt 的权限为文件所有者有全部权限,文件所有者所在的组有读写权限,其他用户只有读的权限。
chmod u=rwx,g=rw,o=r aaa.txt

7. 用户管理

        Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

        用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

  • useradd [选项] 用户名:创建用户账号。保存在 /etc/passwd文本文件中。
  • userdel [选项] 用户名:删除用户帐号。
  • usermod [选项] 用户名:修改用户账号的属性和配置,比如用户名、用户 ID、家目录。
  • passwd [选项] 用户名: 设置用户的认证信息,包括用户密码、密码过期时间等。例如:passwd -S 用户名 ,显示用户账号密码信息。passwd -d 用户名: 清除用户密码,会导致用户无法登录。passwd 用户名,修改用户密码,随后系统会提示输入新密码并确认密码。
  • su [选项] 用户名:Switch User切换用户,在当前登录的用户和其他用户之间切换身份。

8. 用户组管理

        每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同 Linux 系统对用户组的规定有所不同,如 Linux 下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

        用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

  • groupadd [选项] 用户组 :增加一个新的用户组。
  • groupdel 用户组:要删除一个已有的用户组。
  • groupmod [选项] 用户组 : 修改用户组的属性。

9. 系统状态

  • top [选项]:用于实时查看系统的 CPU 使用率、内存使用率、进程信息等。
  • htop [选项]:类似于 top,但提供了更加交互式和友好的界面,可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。
  • uptime [选项]:用于查看系统总共运行了多长时间、系统的平均负载等信息。
  • vmstat [间隔时间] [重复次数]:vmstat (Virtual Memory Statistics) 的含义为显示虚拟内存状态,但是它可以报告关于进程、内存、I/O 等系统整体运行状态。
  • free [选项]:用于查看系统的内存使用情况,包括已用内存、可用内存、缓冲区和缓存等。
  • df [选项] [文件系统]:用于查看系统的磁盘空间使用情况,包括磁盘空间的总量、已使用量和可用量等,可以指定文件系统上。例如:df -a,查看全部文件系统。
  • du [选项] [文件]:用于查看指定目录或文件的磁盘空间使用情况,可以指定不同的选项来控制输出格式和单位。
  • sar [选项] [时间间隔] [重复次数]:用于收集、报告和分析系统的性能统计信息,包括系统的 CPU 使用、内存使用、磁盘 I/O、网络活动等详细信息。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。
  • ps [选项]:用于查看系统中的进程信息,包括进程的 ID、状态、资源使用情况等。ps -ef/ps -aux:这两个命令都是查看当前系统正在运行进程,两者的区别是展示格式不同。如果想要查看特定的进程可以使用这样的格式:ps aux|grep redis (查看包括 redis 字符串的进程),也可使用 pgrep redis -a
  • systemctl [命令] [服务名称]:用于管理系统的服务和单元,可以查看系统服务的状态、启动、停止、重启等。

10. 网络通信

  • ping [选项] 目标主机:测试与目标主机的网络连接。
  • ifconfigip:用于查看系统的网络接口信息,包括网络接口的 IP 地址、MAC 地址、状态等。
  • netstat [选项]:用于查看系统的网络连接状态和网络统计信息,可以查看当前的网络连接情况、监听端口、网络协议等。
  • ss [选项]:比 netstat 更好用,提供了更快速、更详细的网络连接信息。

11. 其他

  • sudo + 其他命令:以系统管理者root的身份执行指令
  • grep 要搜索的字符串 要搜索的文件 --color:搜索命令,--color 代表高亮显示。
  • kill -9 进程的pid:杀死进程(-9 表示强制终止)先用 ps 查找进程,然后用 kill 杀掉。
  • shutdownshutdown -h now 指定现在立即关机;shutdown +5 "System will shutdown after 5 minutes" 指定 5 分钟后关机,同时送出警告信息给登入用户。
  • reboot:重开机。reboot -w:做个重开机的模拟(只有纪录并不会真的重开机)。

三、Linux环境变量

        在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的主目录(HOME)。 

1. 分类

按照作用域来分,环境变量可以简单的分成:
  • 用户级别环境变量 : ~/.bashrc~/.bash_profile
  • 系统级别环境变量 : /etc/bashrc/etc/environment/etc/profile/etc/profile.d
上述配置文件执行先后顺序为:/etc/environment –> /etc/profile –> /etc/profile.d –> ~/.bash_profile –> /etc/bashrc –> ~/.bashrc
如果要修改系统级别环境变量文件,需要管理员具备对该文件的写入权限。
建议用户级别环境变量在 ~/.bash_profile中配置,系统级别环境变量在 /etc/profile.d 中配置。
按照生命周期来分,环境变量可以简单的分成:
  • 永久的:需要用户修改相关的配置文件,变量永久生效。
  • 临时的:用户利用 export 命令,在当前终端下声明环境变量,关闭 shell 终端失效。

2. 读取环境变量

export 命令可以输出当前系统定义的所有环境变量:
# 列出当前的环境变量值
export -p
echo 命令可以输出指定环境变量的值:
# 输出当前的PATH环境变量的值
echo $PATH
# 输出当前的HOME环境变量的值
echo $HOME

3. 修改环境变量 

export命令可以修改指定的环境变量。不过,这种方式修改环境变量仅仅对当前 shell 终端生效,关闭 shell 终端就会失效。修改完成之后,立即生效。
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
vim 命令修改环境变量配置文件。这种方式修改环境变量永久有效。如果修改的是系统级别环境变量则对所有用户生效,如果修改的是用户级别环境变量则仅对当前用户生效。修改完成之后,需要 source 命令让其生效或者关闭 shell 终端重新登录。
vim ~/.bash_profilesource /etc/profile

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/637807.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三、Flask模型基础

ORM 创建模型 # exts.py&#xff1a;插件管理 # 扩展的第三方插件 # 1.导入第三方插件 from flask_sqlalchemy import SQLAlchemy # ORM插件 from flask_migrate import Migrate # 2. 初始化 db SQLAlchemy() # ORM migrate Migrate() # 数据迁移 # 3. 和app对象绑定 def…

【JVM常见问题总结】

文章目录 jvm介绍jvm内存模型jvm内存分配参数jvm堆中存储对象&#xff1a;对象在堆中创建分配内存过程 jvm 堆垃圾收集器垃圾回收算法标记阶段引用计数算法可达性分析算法 清除阶段标记清除算法复制算法标记压缩算法 实际jvm参数实战jvm调优jvm常用命令常用工具 jvm介绍 Java虚…

WebSocket 快速入门 - springboo聊天功能

目录 一、概述 1、HTTP&#xff08;超文本传输协议&#xff09; 2、轮询和长轮询 3、WebSocket 二、WebSocket快速使用 1、基于Java注解实现WebSocket服务器端 2、JS前端测试 三、WebSocket进阶使用 1、如何获取当前用户信息 2、 后端聊天功能实现 一、概述 HTTP…

C语言语法进阶

条件运算符 条件运算符是 C 语言中唯一的一种三目运算符。三目运算符代表有三个操作数&#xff1b;双目 运算符代表有两个操作数&#xff0c;如逻辑与运算符就是双目运算符&#xff1b;单目运算符代表有一个操作数&#xff0c; 如逻辑非运算符就是单目运算符。运算符也称操作符…

react之组件与JSX

第一章 - 描述用户界面 概述&#xff1a;React是一个用于构建用户界面&#xff08;UI&#xff09;的JavaScript库&#xff0c;用户界面由按钮&#xff0c;文本和图像等小单元内容构建而成。React帮助你把它们组合成可重用&#xff0c;可嵌套的组件。从web端网站到移动端应用&a…

基于Linux共享内存的数据分发DDS——C语言实现

基于共享内存的数据分发DDS——C语言实现 一、软件功能介绍 在linux环境下用C语言开发的基于共享内存的数据分发DDS软件。采用了共享内存、多线程、读写锁以及互斥锁实现。 软件支持功能如下&#xff1a; 内部采用共享内存进行数据传输&#xff0c;支持多进程、多线程的数据…

【信号处理】基于CNN的心电(ECG)信号分类典型方法实现(tensorflow)

关于 本实验使用1维卷积神经网络实现心电信号的5分类。由于数据类别不均衡&#xff0c;这里使用典型的上采样方法&#xff0c;实现数据类别的均衡化处理。 工具 方法实现 数据加载 Read the CSV file datasets: NORMAL_LABEL0 , ABNORMAL_LABEL1,2,3,4,5 ptbdb_abnormalpd.…

Python | Leetcode Python题解之第42题接雨水

题目&#xff1a; 题解&#xff1a; class Solution:def trap(self, height: List[int]) -> int:if not height:return 0n len(height)leftMax [height[0]] [0] * (n - 1)for i in range(1, n):leftMax[i] max(leftMax[i - 1], height[i])rightMax [0] * (n - 1) [he…

ROS机器人入门第七课:参数服务器

文章目录 ROS机器人入门第七课&#xff1a;参数服务器一、参数服务器介绍二、参数操作1.参数服务器新增(修改)参数2.参数服务器获取参数3.参数服务器删除参数 ROS机器人入门第七课&#xff1a;参数服务器 一、参数服务器介绍 参数服务器在ROS中主要用于实现不同节点之间的数据…

ubuntu安装QEMU

qemu虚拟机的使用&#xff08;一&#xff09;——ubuntu20.4安装QEMU_ubuntu安装qemu-CSDN博客 遇到的问题&#xff1a; (1)本来使用git clone https://github.com/qemu/qemu.git fatal: 无法访问 https://github.com/qemu/qemu.git/&#xff1a;GnuTLS recv error (-110): …

李宏毅2022机器学习/深度学习 个人笔记(2)

本系列用于推导、记录该系列视频中本人不熟悉、或认为有价值的知识点 本篇记录第一讲&#xff08;选修&#xff09;&#xff1a;神奇宝贝分类&#xff08;续&#xff09; 讲解如何用高斯概率分布假设来推导类似于逻辑斯蒂分布的表达式 如图&#xff0c;boundary变为直线&…

Spark和Hadoop的安装

实验内容和要求 1&#xff0e;安装Hadoop和Spark 进入Linux系统&#xff0c;完成Hadoop伪分布式模式的安装。完成Hadoop的安装以后&#xff0c;再安装Spark&#xff08;Local模式&#xff09;。 2&#xff0e;HDFS常用操作 使用hadoop用户名登录进入Linux系统&#xff0c;启动…