# 本节要点 - 了解操作系统 - 了解Linux - 认识linux文件系统 - 理解linux和Window系统文件差异 - 各类命令 # 一、什么是操作系统 1、操作系统(OS),是管理计算机硬件和软件的资源的系统。 2、操作系统是人与计算机交互的接口 3、操作系统核心功能包括:管理CPU、内存(RAM)、存储设备 、输入输出设备、以及执行应用程序。 比如 :windows、 Linux、Unix、Mac、android... !\[image-20260402103203520\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/java/daiwei/20260622201353133.png) # 二、操作系统的分类 为了操作不同的设备和硬件,所有诞生了各种操作系统: 1、桌面操作系统:主要针对个人用户。如 Windows、Linux 发行版(Ubuntu 等,red hat,龙蜥)、mac - 这类操作系统主要针对个人计算机(PC)用户,提供图形用户界面(GUI),使得用户可以方便地管理文件、运行软件应用程序和访问互联网。常见的桌面操作系统包括 Microsoft Windows、macOS、Linux 发行版(如 Ubuntu、Fedora) 2、服务器操作系统: - 设计用于在服务器硬件上运行,支持多用户访问、大规模数据处理、网络服务和企业级应用。它们通常包括高级管理和安全功能。常用的服务器操作系统有 Linux 的各种版本(如 CentOS、Red Hat Enterprise Linux)、Windows Server、UNIX,各个厂商定制的类 linux 系统。 3、移动操作系统: - 专为移动设备,如智能手机和平板电脑设计,优化了触摸界面、电池续航和无线通信。主要的移动操作系统包括 Android、iOS。 4、嵌入式操作系统: - 用于控制各种嵌入式设备,如家电、汽车、工业控制系统等。这些操作系统通常是为了在资源受限的环境下高效运行而优化的。它们可以是基于 Linux 的,如 Yocto、Raspberry Pi OS,也可以是实时操作系统(RTOS),如 FreeRTOS、VxWorks,以及其他专用的嵌入式操作系统。 5、分布式操作系统: - 这类操作系统管理一组独立的计算机,使它们作为一个统一的系统工作。它们主要用于处理大量的计算任务,通过分布式计算提高效率。例子包括 Apache Mesos、Google's Borg。hadoop (云计算、大数据) # 三、linux介绍 ## 1、Linux(Unix)家族 POSIX - 一切皆文件 - 命令单一简单,复杂的功能由多个单一命令组成 达蒙8 dm8 !\[image-20260121171820104\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/daiwei/java/20260121171820159.png) - unix (1969年在贝尔实验室) 1、System v -\>solaris (付费) 2、Free BSD 开源免费 伯克立大学分校 3、BSD商业 --mac - linux在unix的基础上,按照POSIX开发出来(1991) 1、ubuntu (开源免费),维护收费 2、RHEL(商业版)收费 3、centos版本(开源免费)可以商用,维护社区或者大的厂商 4、kylin(ubuntu)升级,包装,国产linux操作系统 最核心的部分是 Linux 内核,首个版本由林纳斯・托瓦兹(Linus Torvalds)在 1991 年发布; C 作为核心开发语言。 Linux 内核(1w多行经典代码)负责系统的核心功能,如硬件管理、文件系统操作、网络通信和进程调度。 - \*\*基于 unix\*\*:Linux 继承了 unix 操作系统的设计理念和架构特点。unix 是 1970 年代由 AT\&T 的贝尔实验室开发,是一个多用户、多任务的操作系统,一般具有开源、一切皆文件、遵循 POSIX 标准等特点。但注意的是 Linux 并非由 unix 的代码而来,Linux 本身的设计是独立于 unix 的,只是设计的理念和架构来自于 unix。unix 项目团队成员丹尼斯・里奇为了开发 unix 而设计了 c 语言。linux 也大部分用 c 语言编写的。 - \*\*开源\*\*:源代码公开全社会可用。一般会带有开源许可证(比如 GNU 通用公共许可证(GPL)) - \*\*遵循 POSIX 标准\*\*:全称可移植操作系统接口。一套定义操作系统应该为应用程序提供哪些接口的规范 - \*\*一切皆文件\*\*:linux 把所有内容在系统都表示为一个文件,包括设备(比如打印机、usb 设备等),这个跟 window 有很大的不同。 \*\*注意\*\*:一般我们平时讨论的 linux 是指 linux 系统发行版,而发行版的最重要的就是 linux 内核。 ## 2、linux 内核和 linux 发行版 (1)linux 内核 linux 操作系统的核心部分,负责处理硬件和软件资源、内存管理、设备输入输出、以及保证不同的程序能够高效地执行等任务。内核是操作系统最基础和最关键的组成部分 (2)linux 发行版 基于 Linux 内核,加上了一套完整的用户界面、应用软件、管理工具和安装程序后形成的\*\*完整可用的操作系统\*\*。 每个 Linux 发行版都包括了内核,但还包含了许多其他的软件组件,让用户能够在计算机上进行日常的工作。不同的组织和团队基于内核和自己的需求构建不同风格的 Linux 发行版。比如 Ubuntu(英国私人公司)、redhat(美国)、centos)等 ------ 总结:Linux 内核是所有 Linux 发行版共有的核心,而每个\*\*发行版\*\*则是在这个通用核心上根据不同的需求进行扩展和定制的完整可运行的操作系统 ## 3、linux (发行版)系统的组成 - \*\*linux 内核\*\*:是整个系统的核心部分,负责管理系统的硬件资源,包括 CPU、内存、存储设备等,同时也提供了系统调用接口,使得应用程序可以通过这些接口执行各种操作。 - \*\*GNU 工具\*\*:是一个工具链,这些工具提供了系统管理、开发和文档编辑等功能,如 gedit、vi 等。 - \*\*GUI\*\*:图形界面(也可能没有)。 - \*\*系统服务和进程\*\*:Linux 发行版通常包含了多种系统服务和守护进程,例如网络服务、打印服务、日志服务等。 - \*\*包管理工具\*\*:比如 apt(或旧版本:apt-get)。用于远程下载各种第三方工具进行使用,比如 gcc、g++ 等。 - \*\*shell\*\*:Shell 是 Linux 系统的命令行界面,作为用户操作 linux 系统的标准入口。 - \*\*各种应用程序\*\*:比如火狐浏览器等。 终端和用户界面(Ubuntu 和 centos) !\[image-20260402111728795\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/java/daiwei/20260622201635797.png) # 四、什么是文件系统 - 操作系统中负责\*\*管理\*\*和\*\*存储\*\*文件信息的软件机构称为\*\*文件管理系统,简称文件系统。\*\* ## 1. window有文件系统吗? !\[image-20260408110616256\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/java/daiwei/20260622201726151.png) ## 2.linux下的文件系统 !\[image-20260408111103298\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/java/daiwei/20260622201726135.png) 1、ext4 是 Linux 的原生文件系统,而 NTFS 是 Windows 的原生文件系统。 2、ext4对文件的权限控制更加严格和粒度更细 3、ext4对小文件的性能更好 ## 3. 用户怎么理解文件系统? \`\`\` \*\*实就是目录\*\* \`\`\` window和linux目录: ![image-20260408111513791](https://woniumd.oss-cn-hangzhou.aliyuncs.com/java/daiwei/20260622201726169.png)![image-20260408111535446](https://woniumd.oss-cn-hangzhou.aliyuncs.com/daiwei/java/20260408111535484.png) 区别? \`\`\` \`\`\` ## 4.文件系统的好处 某所大学的学生可能在一两万人左右,通常将学生分配在以\*\*学院 - 系 - 班\*\*为单位的分层组织机构中。如何查找一名学生? - \*\*最笨的办法:\*\*依次问询大学中的每一个学生,直到找到为止。 - \*\*查询效率高的方法:\*\*按照从学院、到系、再到班的层次查询。 如果把学生看作文件\*\*,院 - 系 - 班\*\*的组织结构看作是一种文件目录结构,就可以有效地管理数量庞大的文件。 \*\*示例(蜗牛学苑目录结构):\*\* \`\`\` 蜗牛学苑 \|--Java方向 \| \|-- 107期(班) \| \|-- 108期 \|--网络安全方向 \| \|-- 23期 \| \|--张三 \| \|-- 24期 \|--张三 \|--嵌入式 \| \|-- 03期 \| \|--张三 \|--测试 \|-- 01期 \`\`\` 例子:那么我要找网安 23 期张三的学生,就可以用目录的形式来表达: / 蜗牛学苑 / 网络安全方向 / 23 期 / 张三 / 蜗牛学苑 / 嵌入式 / 03 期 / 张三 比如 '/home/imgs/zhangsan.jpg' 就是一种文件的目录路径。 \`\`\` 备注:windows与linux的文件系统的区别? \`\`\` # 五、目录结构 \`\`\` / ├── bin/ # 基本命令二进制文件 ,计算机可以去执行的指令 ├── boot/ # 引导加载程序文件 ├── dev/ # 设备文件 ├── etc/ # 系统配置文件 ├── home/ # 用户主目录 ├── lib/ # 系统库文件 系统启动、基础命令和内核模块所 ├── media/ # 可移动媒体挂载点 ├── mnt/ # 临时挂载文件系统 ├── opt/ # 可选应用软件包 ├── proc/ # 进程和内核信息 ├── root/ # root用户主目录 ├── sbin/ # 系统二进制文件 ├── tmp/ # 临时文件 ├── usr/ # 用户程序和数据 └── var/ # 可变数据文件 \`\`\` 重要的目录 \`\`\` /etc: 存放系统配置文件 /var: 存放经常变化的文件,如日志 /home: 普通用户的主目录 /root: 管理员root的主目录 \`\`\` 为什么要学习linux? - 稳定、性能好 - 服务器使用可以7x24不关机 - 应用服务器首选 # 六、常用命令 ## 1、目录命令 ### 1.1 进入目录(cd) 核心概念: - 绝对路径 说明:就是完整的全路径,直接定位到文件 \`\`\` window下: c:\\program\\QQ\\qq.exe linux: /home/daiwei/test.txt \`\`\` - 相对路径 说明:在当前所在的目录,作为起点。相对当前目录的路径进行下一步的操作。 \`\`\` 比如我已经在/home/daiwei/这个目录下,如果 /home/daiwei/还有一个games目录,那我就可以直接重当前目录直接定位进入 cd ./games //相对目录进入 cd /home/daiwei/games //绝对目录进入 \`\`\` - 第一个命令cd cd \[dirname\] \`\`\` cd /home/daiwei \`\`\` \`\`\` cd / 表示进入根目录 cd \~ 直接回到用户的home目录 cd .. 回退到上一级 cd ../../ 回退到上上级 \`\`\` 当前目录应该怎么表示? \`\`\` \`\`\` - 提示与补齐 时候目录名字太长又记不住? \`\`\` Tab 键按一下,不是敲Tab、不是敲Tab、不是敲Tab! \`\`\` ### 1.2查看当前目录的完整路径(pwd) \`\`\` pwd \`\`\` !\[image-20260408121209464\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/java/daiwei/20260622202627454.png) ### 1.3 查看当前目录下有哪些文件(ls、ll) ls 就是 list的意思:罗列某一个目录下的文件列表 \`\`\` ls 显示当前目录下的文件或者目录 \[参数\] ls /home 查看 /home目录下由哪些文件 \`\`\` ls 可以加参数 \`\`\` ls -a 显示所有文件,包括隐藏文件 ls -l 显示文件详细的信息 ls -r 逆向显示 ls -R 递归显示目录下所有的目录和文件 ls -la 组合参数 ,列表显示所有文件 \*\*\* \`\`\` ll 查看更详细的信息,用户组、权限、大小、隐藏文件等 ### 1.4 创建文件(touch) - touch 可以用于,创建一个文件 说明: 如果文件不存在,创建文件;如果文件存在,则修改该文件的时间戳为当前时间 - 命令语法: touch + 文件名 \`\`\` touch ./text1.txt //创建一个文件 \`\`\` - 同时创建三个文件:touch 3.txt 4.txt 5.txt \`\`\` touch ./1.txt ./2.txt ./3.txt //连续创建3个文件 \`\`\` 补充:如果要创建100个文件怎么办? \`\`\` touch {1..100}.txt \`\`\` - 练习 \`\`\` 1、在当前用户登录的主目录下,创建test文件夹。并在其内创建两个文件hello1.txt ,hello2.txt \`\`\` ### 1.5 删除文件(rm) 说明:删除目某一个文件的命令 rm + 文件名 \`\`\` rm \[-i \| -f \| -r \| -v\] 文件 \`\`\` 例如:删除test1.txt \`\`\` rm ./test1.txt \`\`\` 参数说明: \`\`\` rm 文件名 #不加参数 rm -r ./xxx.txt #可以删除目录下的所有文件 (递归) \*\*\* rm -f ./xxx.txt #强制删除不提示 \*\*\* rm -rf ./xxx.txt #递归强制删除目录以及目录下的文件 \*\*\* rm -v ./xxx.txt #显示详细过程 rm -i ./xxx.txt #会有一个提示,需要确认 rm ./\*.txt #删除txt结尾的 \*是通配符 \*\*\* rm ./woniu/1.txt #可以删除制定目录下面的文件 \`\`\` \*\*下面是危险命令!\*\* \`\`\` rm -rf / \`\`\` ### 1.6 创建目录(mkdir) 说明:用于创建文件夹 - 创建一个目录 \`\`\` mkdir ./dirname //相对路径 \`\`\` \`\`\` mkdir /home/daiwei/dirname //绝对路径 \`\`\` - 创建多个目录 \`\`\` mkdir ./dirname1 ./dirname2 \`\`\` \`\`\` mkdir dirname{1..100} \`\`\` ### 1.2 创建子目录(mkdir -p): -p是参数 ,代表可以直接创建主目录下面的子目录,如果不加-p只能一级一级的创建 \`\`\` mkdir -p ./a/b/c \`\`\` ### 1.3 删除目录(rmdir): \`\`\` rmdir ./dirname \`\`\` ### 1.4 递归删除(rm -rf): \`\`\` rm -rf ./a 用的最多递归删除 \`\`\` 说明:把当前目录下的,a目录下的所有内容都地删除 ### 1.5 目录复制(cp) cp=copy的意思 - cp 源文件 目标文件 \`\`\` cp ./1.txt ./aaa/ 把当面目录下的1.txt文件,复制到aaa目录里 \`\`\` - cp复制目录 cp -a 原目录 目标目录 \`\`\` # 复制目录 cp -a source_dir dest_dir # 递归复制目录 \*\*\* cp -a ./xxx1 ./xxx2 \`\`\` - 复制目录下的文件 \`\`\` 我当前在/home/daiwei目录下,所以用的相对路径 cp -a ./xxx1/. ./xxx2 仅仅只是复制xxx1目录下面的文件,到xxx2这个目录 \`\`\` - 绝对路径复制也可以 \`\`\` cp -a /home/daiwei/xxx1/. ./xxx2 //绝对路径 和 相对路径 混用也是可以的 \`\`\` 参数补充: \| 选项 \| 描述 \| \| ---- \| ------------------------------------------------------------ \| \| -a \| 该选项通常在拷贝目录时使用,保留链接、文件属性,并递归地拷贝目录,其作用等于 dpr 选项的组合 \| \| -d \| 拷贝时保留链接 \| \| -f \| 非交互模式的复制操作。覆盖已经存在的目标文件而不提示 \| \| -i \| 交互模式的复制操作,与 - f 选项相反。在覆盖目标文件之前将给出提示,要求用户确认,回答 "y" 表示目标文件将被覆盖 \| \| -p \| 除复制源文件内容外,还将其修改时间和访问权限也同时复制 \| \| -r \| 若源文件是一个目录,cp 命令将递归地复制该目录下的所有子目录和文件 \| \| -v \| 显示详细的复制过程 \| 练习: - 先创建目录 a, 并进入 - 在当前目录创建文件 1.txt - 当前目录里的 1.txt 复制为 2.txt - 当前目录下的 a 文件夹完全复制为 b, - 当前目录下的 b 文件夹复制到 a 文件夹中并时间、权限保持同步 ### 1.6 目录/文件移动重命名 (mv) 移动就相当于剪切功能,单词就是move mv 源目录/文件 目标目录/文件 \`\`\` # 移动/重命名目录 mv old_dir new_dir # 重命名目录 \*\*\* \`\`\` mv 原文件 目标目录 \`\`\` mv ./text1.txt ./woniu 把当前目录下的text1.txt 移动到当前目录下的woniu这个目录 \`\`\` 文件改名 \`\`\` mv ./text1.txt ./test2.txt \`\`\` 如果有覆盖是否提示 \`\`\` mv -f 不提示直接覆盖 mv -i 有提示(交互模式) \`\`\` ### 1.7、文件查找 查找名称是mysql.conf的文件,在根目录下去查询/ find / -name mysql.conf mysql.conf \`\`\` # 查找文件 find /home -name "\*.txt" # 按名称查找 \*\*\* find /var -type f -size +10M # 查找大于10M的文件 find . -mtime -7 # 查找7天内修改的文件 # 文件搜索 grep "pattern" filename # 在文件中搜索文本 \*\*\* grep -r "pattern" /path # 递归搜索目录 grep -i "pattern" filename # 忽略大小写搜索 grep "abcd" ./hello.txt \> log.txt #一般把日志文件进行特殊的字符过滤,放在单独的文件里面(文件更小,内容更精准) \`\`\` ### 1.8、写文件 把某一个文件的内容检索后写到一个新的文件 \`\`\` grep a ./file.txt \> newfile.txt \`\`\` 覆盖写文件的内容用 echo命令 把"hello"写入hello.txt文件里 \`\`\` echo "hello" \> hello.txt \`\`\` 追加写入 \`\`\` echo "hello" \>\> hello.txt \`\`\` ## 2、vi编辑器(vim) ### 1、vim是vi的增强版,\*\*功能更强大\*\* \`\`\` 1、高亮 2、多级撤销和重做 3、扩展了v模式,直接复制粘贴 4、跨平台与扩展性:vim 可以在 Linux、macOS、Windows 等系统上运行,支持插件 \`\`\` 如果没有vim这个命令就需要安装一下, 安装命令如下: \`\`\` sudo apt install vim \`\`\` !\[image-20260408151029810\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/java/daiwei/20260622202627448.png) ### 2、vim的工作模式 #### 2.1命令模式(Command Mode) 无法直接进行编辑内容,只能控制屏幕光标的移动,进行文本行的删除、复制等文字编辑工作(不使用【Del】键和【Backspace】键),以及进入插入模式(i),或者回到底行模式(:)。 #### 2.2插入模式(Insert Mode) 只有在插入模式下,才可以输入文字(编辑)。并且按【Esc】键可回到命令行模式。很多 vim 编辑器使用者希望一打开 vim 就可以输入内容,但这是不能成功的,因为刚打开 vim 编辑器时处于命令模式。 #### 2.3底行模式(Last Line Mode) 保存文件或退出 vim,同时也可以设置编辑环境和一些编译工作,如列出号、寻找字符串等。 !\[image-20260402173034753\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/java/daiwei/20260622202627461.png) 说明: 1、第一次进入的时候是 -\>命令模式 2、按 i 进如 插入模式 3、编辑完成了-\> 按 ESC 进入命令模式 4、保存-\> 按:然后输入wq! ### 3、vim的指令 #### 3.1命令模式 \`\`\` 备注:命令模式下无法对文件内容进行编辑;所以需要切换到插入模式 \`\`\` 如何进入命令模式? 按 \*\*\[ESC\]\*\* 键返回命令模式 ##### 3.1.1常规命令 \| 按键 / 命令 \| 功能说明 \| \| ----------- \| ------------------------------------------------ \| \| hjkl \| 上下左右 \| \| \`b\` \| 移动到当前单词开始 \| \| \`e\` \| 移动到当前单词结尾(单词最后一个字母之前的位置) \| \| \`w\` \| 移动到下一个单词(单词最前面) \| \| \`\^\` \| 行首 home \| \| \`$\` \| 行尾(注意:实际是行尾最后一个字符的前面) end \| \| \`gg\` \| 文件头 \| \| \`G\` \| 文件最后一行 \| \| \`G$\` \| 文件尾(文件最后一个字母之前的位置) end \| ##### 3.1.2复制粘贴 1. \*\*按行复制 / 剪切命令\*\* - 光标移动到文本文件的某一行,输入 \`yy/dd\`,表示按行复制 / 剪切; 2. \*\*对光标位置到该行的结尾进行复制 / 剪切\*\* - 命令 \`y$/d$\`,表示从当前光标复制 / 剪切到当前光标结尾 3. \*\*多行复制命令 \`yy\`\*\* - 将光标移动到某行,输入命令 \`nyy\` - 删除多行内容:\`ndd\` - 命令中的 \`n\` 是一个数字,比如 \`3yy\` 或 \`2dd\` 4. \*\*粘贴操作\*\* - 命令 \`p\` 表示粘贴,如果需要将复制的内容多次粘贴,则多次按 \`p\` 键就可以了。 5. \*\*错误撤销恢复\*\* - 命令 \`u\` 表示撤销上一步操作,如果需要多次撤销,则多次按 \`u\` 键就可以了 - 如果上一次的撤销错了,取消撤销,可以按 \`ctrl+r\` 恢复 6. \*\*其他操作\*\* - 快速跳转到某一行 \`\`\` :n \`\`\` \*\*7.显示行号\*\* \`\`\` set num #不行就用下面一个 set nu \`\`\` \*\*8.插入其他文件的内容到本文件里\*\* \`\`\` :r \`\`\` #### 3.2插入模式 \`\`\` 编辑文件时进入插入模式 一般按 i \`\`\` \*\*插入(insert,简写为 i)\*\* - \`i\`:从光标所在位置前面开始插入 - \`I\`:从光标行所在的第一个非空白字符前面开始插入 \*\*新增(append,简写为 a)\*\* - \`a\`:从光标所在位置后面开始新增 - \`A\`:从光标所在行最后的地方开始新增 \*\*开始(open,简写为 o)\*\* - \`o\`:在光标所在行的下一行新增一行并开始插入 - \`O\`:在光标所在行的上一行新增一行并开始插入 #### 3.3底行模式 \`\`\` 编辑结束,想保存 按 : \`\`\` - 按 \*\*":"\*\* 键可以进入底行模式 保存操作 1. 如果使用 vim 打开现有文件,可以使用命令 \`:w\` 直接保存到原始文件中 2. \`:w 路径和文件名\`,即可以指定名称保存到指定路径。 3. \`:wq\` 表示保存并退出命令 4. \`:q!\` 表示不保存并强制退出命令 查找操作 - 向下查找:\`/需要查找的字符\` - 向上查找:\`?需要查找的字符\` - 下一个查找结果 t 大写T是反向查找 #### 3.4常规操作流程 要想编辑文件,先按i,出现了INSERT文字代表当前是编辑模式 !\[image-20260402151448845\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/java/daiwei/20260622202627427.png) 操作完以后按Esc键后,按冒号(:) !\[image-20260402151554965\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/java/daiwei/20260622202627439.png) 就可以输入下面的指令,对文件进行保存了 \`\`\` :w # 保存文件 \*\*\* :wq # 保存并退出 \*\*\* :q! # 强制退出不保存 \*\*\* :x # 保存并退出 :wq! # 强制保存并退出 \*\*\*\*\*\* \`\`\` ### 4、vi编辑器(常用) 基本操作 \`\`\` vi filename # 打开文件 \*\*\* vi +n filename # 打开文件并定位到第n行 # 模式切换 i # 进入插入模式(在光标前) \*\*\* a # 进入插入模式(在光标后) \*\*\* o # 在当前行下方插入新行 ESC # 返回命令模式 \*\*\* : # 进入底行模式 \*\*\* # 搜索替换 /pattern # 向前搜索 \*\*\* ?pattern # 向后搜索 \*\*\* n # 下一个匹配项 \*\*\* N # 上一个匹配项 \*\*\* \`\`\` 保存操作 \`\`\` :w # 保存文件 \*\*\* :wq # 保存并退出 \*\*\* :q! # 强制退出不保存 \*\*\* :x # 保存并退出 :wq! # 强制保存并退出 \*\*\*\*\*\* \`\`\` 5、追踪文件 \`\`\` tail -f file.txt \*\*\* \`\`\` ## 4、打包与解压 ### 1、tar \`\`\`\\ # 打包和压缩 tar -cvf archive.tar dir/ # 打包目录 verbose \*\*\* tar -czvf archive.tar.gz dir/ # 打包并用gzip压缩 \*\*\* tar -cjvf archive.tar.bz2 dir/ # 打包并用bzip2压缩 # 解包和解压 tar -xvf archive.tar # 解包 \*\*\* tar -xzvf archive.tar.gz # 解压gzip包 \*\*\* tar -xjvf archive.tar.bz2 # 解压bzip2包 tar -xvf ./myfile.tar -C ./myfile #如何过解压到指定的目录,增加一个 可选命令 -C \*\*\* # 查看包内容 tar -tf archive.tar # 查看包内文件列表 \*\*\* \`\`\` ### 2、zip \`\`\` # 压缩 zip archive.zip file1 file2 # 压缩文件 \*\*\* zip -r archive.zip dir/ # 递归压缩目录 # 解压 unzip archive.zip # 解压到当前目录 \*\*\* unzip archive.zip -d /path # 解压到指定目录 unzip -l archive.zip # 查看压缩包内容 \`\`\` ### 3、gzip/gunzip命令 \`\`\` # 压缩 gzip filename # 压缩文件(生成.gz文件) gzip -9 filename # 最大压缩率 # 解压 gunzip filename.gz # 解压.gz文件 gzip -d filename.gz \`\`\` ## 5、权限命令 ### 1、用户相关 查看有哪些用户 \`\`\` cat /etc/passwd \`\`\` 增加用户 \`\`\` sudo useradd -m username 加用户 -m给用户创建目录 sudo passwd username 给用户设置密码 \`\`\` 如果是root用户可以添加用户 \`\`\` useradd -m userdw \`\`\` woniuXY2025 修改密码 \`\`\` sudo passwd username \`\`\` 删除用户 \`\`\` sudo userdel -r username //r递归删除这个用户相关的目录 \`\`\` 查看用户信息 \`\`\` id username eg. id root \`\`\` 给某一个目录权限,两种方法: - 登录到root直接执行 \`\`\` chmod 777 xxx \`\`\` - 登录到root直接执行 visudo \`\`\` 在文件中找到 root ALL=(ALL) ALL 这一行,在下面添加一行: daiwei ALL=(ALL) ALL \`\`\` ### 2、权限相关 查看文件看看权限 \`\`\` ls -la 看列表权限 ls -ld /data 看某一个目录(data目录) \`\`\` !\[image-20251014111933216\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/daiwei/java/20251203184421466.png) drwxr-xr-x 1、d代表的是否是目录 2、每一组3位 ,第一组表示所有者的权限;第二组是组权限;第三组是其他 3、rwx: r代表的read读 ,w代表写,x代表是执行 分配权限用chmod \`\`\` chmod 777 filename \*\*\* \`\`\` \`\`\` ls -l filename # 查看文件详细权限 所有者:rwx = 4+2+1 = 7 \*\*\* 所属组:r-x = 4+0+1 = 5 \*\*\* 其他用户:r-x = 4+0+1 = 5 \*\*\* # 修改文件权限 chmod 777 filename # 数字方式设置权限 \*\*\* chmod u+x filename # 给所有者添加执行权限 u代表所有者 chmod g-w filename # 删除所属组的写权限 g代表用户组 chmod o=r filename # 设置其他用户只读权限 o其他 # 修改文件所有者 chown user:group filename # 修改所有者和所属组 chown user filename # 只修改所有者 chgrp group filename # 只修改所属组 \`\`\` ## 6、系统相关 ### 1、查看系统cpu和内存的情况 \`\`\` top \`\`\` !\[image-20251203201353539\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/daiwei/java/20251203201353699.png) ### 2、查看内存的情况 \`\`\` free -h \`\`\` ### 3、查看磁盘的占用情况 \`\`\` df -h \`\`\` ### 4、查看当前目录占用情况 \`\`\` du -sh \* \`\`\` ### 5、系统服务后台启动 \`\`\` systemctl \`\`\` ### 6、系统进程查看(重要) grep主要用于过滤查看自己想要的进程 \`\`\` ps -ef ps -ef \| grep java or mysql \`\`\` !\[image-20251204122310519\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/daiwei/java/20251204122310590.png) ### 7、杀进程 \`\`\` kill -9 PID 进程号 上面图里的PID \`\`\` ### 8、端口查看 \`\`\` netstat -tulnp ss -tulnp \| grep :8080 \`\`\` ## 7、防火墙命令 ### 1、firewalld(CentOS 7/8, RHEL 7/8) \`\`\` # 服务管理 systemctl status firewalld # 查看防火墙状态 systemctl start firewalld # 启动防火墙 systemctl stop firewalld # 停止防火墙 systemctl enable firewalld # 开机自启 systemctl disable firewalld # 禁用开机自启 # 基本操作 firewall-cmd --state # 查看防火墙状态 firewall-cmd --reload # 重新加载配置 firewall-cmd --list-all # 查看所有规则 # 端口管理 firewall-cmd --add-port=80/tcp --permanent # 永久开放80端口 firewall-cmd --remove-port=80/tcp --permanent # 永久关闭80端口 firewall-cmd --add-service=http --permanent # 永久开放http服务 firewall-cmd --list-ports # 查看开放端口 # 区域管理 firewall-cmd --get-active-zones # 查看活动区域 firewall-cmd --zone=public --add-port=8080/tcp --permanent # 指定区域开放端口 \`\`\` ### 2、iptables(传统Linux防火墙) \`\`\` # 查看规则 iptables -L # 查看所有规则 iptables -L -n # 以数字形式显示 # 管理规则 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 允许SSH连接 iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许HTTP连接 iptables -A INPUT -j DROP # 拒绝所有其他连接 \`\`\` ### 3、ufw(Ubuntu防火墙) \`\`\` # 基本操作 ufw status # 查看防火墙状态 ufw enable # 启用防火墙 ufw disable # 禁用防火墙 # 规则管理 ufw allow 22/tcp # 允许SSH连接 ufw allow 80/tcp # 允许HTTP连接 ufw allow from 192.168.1.0/24 # 允许特定网段 ufw deny 23/tcp # 拒绝telnet连接 ufw delete allow 80/tcp # 删除允许80端口的规则 \`\`\` ### 4、常用服务端口 \`\`\` 22 # SSH服务 \*\*\* 80 # HTTP服务 \*\*\* 443 # HTTPS服务 \*\*\* 21 # FTP服务 25 # SMTP服务 53 # DNS服务 3306 # MySQL数据库 \*\*\* 5432 # PostgreSQL数据库 6379 # Redis服务 \*\*\* \`\`\` ### 5、IP相关 \`\`\` ifconfig //查看ip \`\`\` \`\`\` # 为网卡添加 IP 地址 sudo ip addr add 192.168.1.100/24 dev eth0 # 删除 IP 地址 sudo ip addr del 192.168.1.100/24 dev eth0 \`\`\` 测试网络是否畅通 \`\`\` ping www.baidu.com \`\`\` !\[image-20251127175314962\](https://woniumd.oss-cn-hangzhou.aliyuncs.com/daiwei/java/20251127175315016.png)