├── README.md ├── hsp_files ├── 图解.xlsx ├── 尚硅谷_韩顺平_Linux课程(兼顾 大数据 JavaEE Python程序员).pdf └── 尚硅谷大数据技术之Linux下安装CentOS和网络配置.doc ├── images ├── Snipaste_2022-02-19_18-59-25.png ├── Snipaste_2022-02-19_19-03-55.png ├── Snipaste_2022-02-19_19-32-38.png ├── Snipaste_2022-02-20_11-21-47.png ├── Snipaste_2022-02-20_11-45-16.png ├── Snipaste_2022-02-20_12-03-54.png ├── Snipaste_2022-02-20_12-22-59.png ├── Snipaste_2022-02-20_12-32-53.png ├── Snipaste_2022-02-20_14-43-55.png ├── Snipaste_2022-02-20_15-32-10.png ├── Snipaste_2022-02-20_15-49-06.png ├── Snipaste_2022-02-20_17-24-00.png ├── Snipaste_2022-02-20_17-26-49.png ├── Snipaste_2022-02-20_17-30-23.png ├── Snipaste_2022-02-20_17-35-13.png ├── Snipaste_2022-02-20_18-08-59.png ├── Snipaste_2022-02-20_18-15-08.png ├── Snipaste_2022-02-20_18-34-46.png ├── Snipaste_2022-02-20_18-35-39.png ├── Snipaste_2022-02-20_18-36-30.png ├── Snipaste_2022-02-20_19-46-30.png ├── Snipaste_2022-02-20_20-08-58.png ├── Snipaste_2022-02-21_11-49-52.png ├── Snipaste_2022-02-21_11-58-06.png ├── Snipaste_2022-02-21_12-33-17.png ├── Snipaste_2022-02-21_14-20-24.png ├── Snipaste_2022-02-21_14-21-47.png ├── Snipaste_2022-02-21_14-49-32.png ├── Snipaste_2022-02-21_15-12-41.png ├── Snipaste_2022-02-21_15-26-23.png ├── Snipaste_2022-02-21_16-08-05.png ├── Snipaste_2022-02-21_16-21-34.png ├── Snipaste_2022-02-21_16-24-54.png ├── Snipaste_2022-02-21_18-36-01.png ├── Snipaste_2022-02-21_18-41-49.png ├── Snipaste_2022-02-21_18-48-49.png ├── Snipaste_2022-02-21_19-01-34.png ├── Snipaste_2022-02-21_19-07-57.png ├── Snipaste_2022-02-21_19-17-16.png ├── Snipaste_2022-02-21_19-52-55.png ├── Snipaste_2022-02-21_19-59-09.png ├── Snipaste_2022-02-22_18-41-59.png ├── Snipaste_2022-02-22_18-43-47.png ├── Snipaste_2022-02-22_18-47-54.png ├── Snipaste_2022-02-22_18-52-35.png ├── Snipaste_2022-02-22_19-01-56.png ├── Snipaste_2022-02-22_19-25-34.png ├── Snipaste_2022-02-22_19-45-18.png ├── Snipaste_2022-02-22_19-46-22.png ├── Snipaste_2022-02-22_19-55-42.png ├── Snipaste_2022-02-22_19-57-07.png ├── Snipaste_2022-02-22_19-58-27.png ├── Snipaste_2022-02-22_20-00-45.png ├── Snipaste_2022-02-22_20-03-39.png ├── Snipaste_2022-02-22_20-06-55.png ├── Snipaste_2022-02-22_20-11-39.png ├── Snipaste_2022-02-22_20-13-33.png ├── Snipaste_2022-02-22_20-20-46.png ├── Snipaste_2022-02-22_20-33-59.png ├── Snipaste_2022-02-22_20-34-39.png ├── Snipaste_2022-02-22_20-48-17.png ├── Snipaste_2022-02-22_21-24-59.png ├── Snipaste_2022-02-22_21-25-30.png ├── Snipaste_2022-02-22_21-30-50.png ├── Snipaste_2022-02-22_21-32-10.png ├── Snipaste_2022-02-22_21-32-25.png ├── Snipaste_2022-02-22_21-34-40.png ├── Snipaste_2022-02-22_21-44-38.png ├── Snipaste_2022-02-23_21-18-55.png ├── Snipaste_2022-02-23_21-19-27.png ├── Snipaste_2022-02-23_21-19-56.png ├── Snipaste_2022-02-23_21-23-09.png ├── Snipaste_2022-02-23_21-28-26.png ├── Snipaste_2022-02-23_21-37-12.png ├── Snipaste_2022-02-23_21-49-48.png ├── Snipaste_2022-02-23_21-50-38.png ├── Snipaste_2022-02-23_21-51-00.png ├── Snipaste_2022-02-23_21-52-18.png ├── Snipaste_2022-02-23_21-54-20.png ├── Snipaste_2022-02-23_21-54-40.png ├── Snipaste_2022-02-23_21-55-58.png ├── Snipaste_2022-02-23_21-57-14.png ├── Snipaste_2022-02-23_21-58-13.png ├── Snipaste_2022-02-23_22-45-54.png ├── Snipaste_2022-02-24_14-43-10.png ├── Snipaste_2022-02-24_14-46-57.png ├── Snipaste_2022-02-24_14-48-33.png ├── Snipaste_2022-02-24_15-09-38.png ├── Snipaste_2022-02-24_15-09-59.png ├── Snipaste_2022-02-24_15-12-34.png ├── Snipaste_2022-02-24_15-16-58.png ├── Snipaste_2022-02-24_15-19-28.png ├── Snipaste_2022-02-24_15-32-13.png ├── Snipaste_2022-02-24_15-37-09.png ├── Snipaste_2022-02-24_15-59-11.png ├── Snipaste_2022-02-24_16-04-30.png ├── Snipaste_2022-02-24_16-05-27.png ├── Snipaste_2022-02-24_16-09-16.png ├── Snipaste_2022-02-24_16-25-05.png ├── Snipaste_2022-02-24_16-36-02.png ├── Snipaste_2022-02-24_16-38-09.png ├── Snipaste_2022-02-24_16-51-42.png ├── Snipaste_2022-02-24_16-52-32.png ├── Snipaste_2022-02-24_17-00-42.png ├── Snipaste_2022-02-24_17-05-23.png ├── Snipaste_2022-02-24_17-06-01.png ├── Snipaste_2022-02-24_17-10-32.png ├── Snipaste_2022-02-24_19-03-41.png ├── Snipaste_2022-02-24_19-10-07.png ├── Snipaste_2022-02-24_19-13-27.png ├── Snipaste_2022-02-24_19-16-11.png ├── Snipaste_2022-02-24_19-20-36.png ├── Snipaste_2022-02-24_19-25-47.png ├── Snipaste_2022-02-24_19-52-16.png ├── Snipaste_2022-02-24_19-54-16.png ├── Snipaste_2022-02-24_19-58-12.png ├── Snipaste_2022-02-24_20-02-39.png ├── Snipaste_2022-02-24_20-07-27.png ├── Snipaste_2022-02-24_20-07-41.png ├── Snipaste_2022-02-24_20-09-43.png ├── Snipaste_2022-02-24_20-11-11.png ├── Snipaste_2022-02-24_20-56-36.png ├── Snipaste_2022-02-24_21-02-34.png ├── Snipaste_2022-02-25_10-55-07.png ├── Snipaste_2022-02-25_10-55-21.png ├── Snipaste_2022-02-25_12-46-50.png ├── Snipaste_2022-02-25_13-56-56.png ├── Snipaste_2022-02-25_14-05-54.png ├── Snipaste_2022-02-25_14-24-36.png ├── Snipaste_2022-02-25_14-58-02.png ├── Snipaste_2022-02-25_14-58-19.png ├── Snipaste_2022-02-25_15-00-02.png ├── Snipaste_2022-02-25_15-23-32.png ├── Snipaste_2022-02-25_15-35-12.png ├── Snipaste_2022-02-25_16-24-18.png ├── Snipaste_2022-02-25_16-41-20.png ├── Snipaste_2022-02-25_16-52-37.png ├── Snipaste_2022-02-25_16-53-31.png ├── Snipaste_2022-02-25_16-57-55.png ├── Snipaste_2022-02-25_17-18-19.png └── Snipaste_2022-02-25_17-32-30.png └── linux学习笔记.pdf /README.md: -------------------------------------------------------------------------------- 1 | # 1. 概述 2 | 3 | - B站韩顺平2021图解linux 4 | 5 | ![](./images/Snipaste_2022-02-19_18-59-25.png) 6 | 7 | - python专业开发平台——Ubuntu 8 | 9 | - linux定制python开发平台 10 | - Ubuntu配置python环境 11 | - Apt软件管理和远程登录 12 | 13 | - Linux的三大应用 14 | 15 | ![](./images/Snipaste_2022-02-19_19-03-55.png) 16 | - 服务器领域——应用最强c/c++/php/python/java/go 17 | - 嵌入式领域——物联网 18 | - 个人桌面领域 19 | 20 | - 主要发行版 21 | 22 | - Ubuntu 23 | - RedHat 24 | - CentOs 25 | 26 | - VM虚拟机的网络设置 27 | 28 | ![](./images/Snipaste_2022-02-19_19-32-38.png) 29 | 30 | - VM虚拟机的vmtools的安装使用 31 | 32 | 33 | 34 | 35 | 36 | # 2. Linux的基本内容 37 | 38 | - linux的文件系统是采用层级式的树状目录结构,在此结构的最上层是根目录“`/`”,然后再此目录下再创建其他的目录。 39 | - 在linux的世界里,一切皆文件。cpu、磁盘、硬盘等等都会当成文件对待。 40 | - linux的目录是规定好的,和windows可以随意设置盘符名称不一样,而且不同的目录的作用也各有安排,不可更改。 41 | - 学习linux一定要熟记各个目录。 42 | 43 | ## 2.1 目录结构 44 | 45 | - `/`: [**常用**]根目录。 46 | - `/bin`: [**常用**]是binary的缩写,这个目录存放最经常使用的命令。所有用户都可以访问并执行的可执行程序。包括超级用户及一般用户。 47 | - `/usr/bin` 是系统安装时自带的一些可执行程序。即系统程序,轻易不要去动里面的东西,容易入坑。 48 | - `/usr/local/bin` 是用户自行编译安装时默认的可执行程序的安装位置,这个不小心误删点什么,不会影响大局。 49 | - `/sbin`:s就是super user的意思,这里存放的是系统管理员使用的系统管理程序。 50 | - `/home`: [**常用**]存放普通用户的主目录,在Linux中每个用户都有自己的目录,一般该里面的子目录名都以用户的账号命名。 51 | - `/root`: [**常用**]该目录是系统管理员,也称为超级权限者的用户主目录。 52 | - `/ect`: [**常用**]这个目录里面是所有的系统管理所需要的配置文件和子目录,比如my.conf。 53 | - `/usr`: [**常用**]这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与Windows下的program files目录。 54 | - `/boot`: [**常用**]存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件。 55 | - `/media`: [**常用**]Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别到的设备挂载到这个目录下。 56 | - `/mnt`: [**常用**]系统提供该目录是为了让用户临时挂载别的文件操作系统,我们可以将外部的存储挂载到`/mnt`上,然后进入这个目录就可以看到外部的存储内容了。注:vmtools可以共享windows的文件就在此目录下。 57 | - `/opt`: [**常用**]这是给主机额外安装软件的安装包源码所摆放的位置,例如安装Oracle数据库的源码就一般约定俗成放到这个目录下,默认为空。 58 | - `/usr/local`: [**常用**]这是给主机额外安装软件所安装的目录,是软件安装包的目标安装目录,一般通过编译源码的方式安装软件。 59 | - `/var`: [**常用**]这个目录中存放着在不断扩充的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件。 60 | - `/proc`: [**别动**]这个目录是一个虚拟的目录,它是系统内存的映射 ,访问这个目录可以获取系统信息。 61 | - `/srv`: [**别动**]这是service的缩写,该目录存放一些服务启动之后需要提取的数据。 62 | - `/sys`: [**别动**]这是Linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统**sysfs**。 63 | - `/tmp`: 这个目录是用来存放一些临时文件的。 64 | - `/lib`: 系统开机所需要的最基本的动态链接共享库,其作用类似Windows的dll文件,几乎所有的应用程序都需要用到这些共享库。 65 | - `/lost+found`:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 66 | - `/dev`: 该目录类似Windows的设备管理器,把所有的硬件(例如磁盘、cpu、串口等)用文件的形式存储起来。 67 | - `/selinux`: 该目录是security-enhanced linux的缩写,是一种安全子系统,类似windows上的360,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置。 68 | 69 | 70 | 71 | ## 2.2 远程登录并传输文件到Linux 72 | 73 | - [下载链接](https://www.xshell.com/zh/free-for-home-school/) 74 | - ![](./images/Snipaste_2022-02-20_11-45-16.png) 75 | 76 | - 使用Xshell远程登录 77 | 78 | ![](./images/Snipaste_2022-02-20_11-21-47.png) 79 | 80 | - 使用Xftp进行远程传输 81 | - Xftp可能存在中文乱码的情况 82 | - 解决办法——更改软件编码 83 | - ![](./images/Snipaste_2022-02-20_12-03-54.png) 84 | 85 | 86 | 87 | 88 | 89 | # 3. vi和vim快速入门 90 | 91 | - Linux系统会内置vi文本编辑器。 92 | 93 | - vim具有程序编辑的能力,可以看成是vi的增强版本,可以主动地以字体颜色辨别语法的正确性,方便程序设计,同时具备代码补全、编译和错误跳转等功能,因此被广泛程序员使用。 94 | 95 | - 常用的三种模式 96 | 97 | ![](./images/Snipaste_2022-02-20_12-22-59.png) 98 | 99 | - 三种模式的相互转换 100 | 101 | - `!`表示强制,比如还有`wq!`。 102 | 103 | ![](./images/Snipaste_2022-02-20_12-32-53.png) 104 | 105 | - 快捷键图 106 | 107 | ![](./images/Snipaste_2022-02-20_15-32-10.png) 108 | 109 | ## 3.1 正常模式下的快捷键 110 | 111 | - 拷贝当前行`yy`; 112 | - 拷贝n行`nyy`;注意小键盘数字不行,用自带的数字。 113 | - 粘贴`p`; 114 | - 删除这一行`dd`; 115 | - 删除n行`ndd`; 116 | - 跳转到第一行`gg`; 117 | - 跳转到末尾行`G`; 118 | - 撤销刚才的操作`u`; 119 | - 跳转到第i行 `i+shift+g`; 120 | 121 | ## 3.2 命令模式下的快捷键 122 | 123 | - 在命令模式下查找关键单词 124 | - 1.输入`/name`,name是你要查找的单词名 125 | - 2.按n查找下一个 126 | 127 | - 在命令模式下设置行号`:set nu`; 128 | - 在命令模式下删除行号`:set nonu`; 129 | 130 | 131 | 132 | 133 | 134 | # 4. Linux开机、重启和用户登录注销 135 | 136 | - 关机和重启 137 | 138 | - 注意,不管是重启系统还是关机,最好都执行一次sync指令,再重启或关机 139 | 140 | ~~~shell 141 | shutdown -h now #现在立即关机,h代表halt关机的意思 142 | shutdown -h 1 #1分钟后关机 143 | shutdown -r now #现在立即重启,r代表reboot 144 | halt #关机,作用和上面指令一样 145 | reboot #重启计算机 146 | sync #把内存数据同步到磁盘 147 | ~~~ 148 | 149 | - 用户注销 150 | 151 | ![](./images/Snipaste_2022-02-20_15-49-06.png) 152 | 153 | 154 | 155 | 156 | 157 | # 5. 用户管理 158 | 159 | ## 5.1 创建删除设置用户 160 | 161 | - Linux系统是一个多用户多任务的操作系统,任何一个想要使用系统资源的用户,都必须首先向系统管理员root申请一个账号,然后再以这个账号的身份进入系统。 162 | 163 | - 添加用户默认该用户的家目录在`/home/username`,username是用户的名称,也可以指定目录,但没必要 164 | 165 | - ~~~bash 166 | useradd milan #添加milan这个用户 167 | passwd milan #更改milan这个用户的密码 168 | userdel milan #删除用户milan,但是保留home家目录 169 | userdel -r milan #删除用户milan的所有信息,包括家目录 170 | ~~~ 171 | 172 | - 关于保留家目录的讨论 173 | 174 | - 建议保留 175 | - 除非不再需要该用户的任何贡献代码、记录 176 | 177 | - `pwd`:该命令显示当前所在目录全程 178 | 179 | ## 5.2 查询切换用户 180 | 181 | - 查询基本语法——`id 用户名`;当不存在改用户时,返回无此用户。 182 | 183 | - ~~~shell 184 | [root@iZbp1978lespq45h0qv20aZ home]# id jack 185 | id: jack: no such user 186 | [root@iZbp1978lespq45h0qv20aZ home]# id root 187 | uid=0(root) gid=0(root) groups=0(root) 188 | [root@iZbp1978lespq45h0qv20aZ home]# id milan 189 | uid=1000(milan) gid=1000(milan) groups=1000(milan) 190 | [root@iZbp1978lespq45h0qv20aZ home]# 191 | ~~~ 192 | 193 | - 切换基本语法——`su 用户名`;`exit`返回原用户;从权限高的用户切换到权限低的用户,不需要密码;反之需要。 194 | 195 | - 查看当前登录用户语法——`whoami`或者`who am i`。值得注意的是`whoami`返回当前使用的用户,`who am i`返回第一次登录服务器的信息。 196 | 197 | - ~~~bash 198 | [root@iZbp1978lespq45h0qv20aZ home]# ls 199 | milan 200 | [root@iZbp1978lespq45h0qv20aZ home]# su milan 201 | [milan@iZbp1978lespq45h0qv20aZ home]$ whoami 202 | milan 203 | [milan@iZbp1978lespq45h0qv20aZ home]$ exit 204 | exit 205 | [root@iZbp1978lespq45h0qv20aZ home]# whoami 206 | root 207 | [root@iZbp1978lespq45h0qv20aZ home]# who am i 208 | root pts/0 2022-02-20 16:45 (43.227.139.42) 209 | [root@iZbp1978lespq45h0qv20aZ home]# su milan 210 | [milan@iZbp1978lespq45h0qv20aZ home]$ who am i 211 | root pts/0 2022-02-20 16:45 (43.227.139.42) 212 | [milan@iZbp1978lespq45h0qv20aZ home]$ whoami 213 | milan 214 | [milan@iZbp1978lespq45h0qv20aZ home]$ exit 215 | exit 216 | [root@iZbp1978lespq45h0qv20aZ home]# 217 | ~~~ 218 | 219 | ## 5.3 用户组 220 | 221 | - 增加组、删除组、创建特定组的用户 222 | 223 | - ![](./images/Snipaste_2022-02-20_17-24-00.png) 224 | 225 | - 移动用户到另外的组 226 | 227 | - ![](./images/Snipaste_2022-02-20_17-26-49.png) 228 | 229 | - 示例 230 | 231 | ~~~bash 232 | [root@iZbp1978lespq45h0qv20aZ home]# groupadd wudang 233 | [root@iZbp1978lespq45h0qv20aZ home]# groupdel wudang 234 | [root@iZbp1978lespq45h0qv20aZ home]# ls 235 | milan 236 | [root@iZbp1978lespq45h0qv20aZ home]# groupadd wudang 237 | [root@iZbp1978lespq45h0qv20aZ home]# useradd -g wudang zwj 238 | [root@iZbp1978lespq45h0qv20aZ home]# ls 239 | milan zwj 240 | [root@iZbp1978lespq45h0qv20aZ home]# id zwj 241 | uid=1001(zwj) gid=1001(wudang) groups=1001(wudang) 242 | [root@iZbp1978lespq45h0qv20aZ home]# groupadd mojiao 243 | [root@iZbp1978lespq45h0qv20aZ home]# usermod -g mojiao zwj 244 | [root@iZbp1978lespq45h0qv20aZ home]# id zwj 245 | uid=1001(zwj) gid=1002(mojiao) groups=1002(mojiao) 246 | [root@iZbp1978lespq45h0qv20aZ home]# 247 | 248 | ~~~ 249 | 250 | - 用户和组的相关文件 251 | 252 | - `cat /etc/group`:查看所有的组,一般大于1000是自定义; 253 | - `cat /etc/passwd`:查看所有的用户及其相关信息。 254 | 255 | ![](./images/Snipaste_2022-02-20_17-30-23.png) 256 | 257 | - 登录shell的含义 258 | - shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。也称shell为外壳。 259 | - shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilities and application programs)所调用。 260 | - bash是shell的一种,是大多数Linux发行版默认的shell,除bash shell外还有c shell等其它类型的shell。 261 | - ![](./images/Snipaste_2022-02-20_17-35-13.png) 262 | 263 | 264 | 265 | 266 | 267 | # 6. 实用指令 268 | 269 | ## 6.1 指定运行级别 270 | 271 | - 运行级别一共有7种 272 | - 0:关机 273 | - 1:单用户,可以帮助找回丢失的密码 274 | - 2:多用户状态没有网络服务 275 | - 3:多用户状态有网络服务 276 | - 4:系统未使用保留给用户 277 | - 5:图形界面 278 | - 6:系统重启 279 | - 常用运行级别是3和5,也可以指定默认运行级别。 280 | - 切换运行级别 281 | 282 | - ![](./images/Snipaste_2022-02-20_18-08-59.png) 283 | 284 | - 修改默认运行级别 285 | 286 | - 在CentOs7以前,需要在`/ect/inittab`文件中修改。 287 | 288 | - CentOs7之后 289 | 290 | - ![](./images/Snipaste_2022-02-20_18-15-08.png) 291 | 292 | - ~~~bash 293 | [root@iZbp1978lespq45h0qv20aZ home]# cd / 294 | [root@iZbp1978lespq45h0qv20aZ /]# runlevel 295 | N 3 296 | [root@iZbp1978lespq45h0qv20aZ /]# systemctl get-default 297 | multi-user.target 298 | [root@iZbp1978lespq45h0qv20aZ /]# systemctl set-default multi-user.target 299 | Removed symlink /etc/systemd/system/default.target. 300 | Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target. 301 | [root@iZbp1978lespq45h0qv20aZ /]# systemctl get-default 302 | multi-user.target 303 | [root@iZbp1978lespq45h0qv20aZ /]# runlevel 304 | N 3 305 | ~~~ 306 | 307 | - 即使用`runlevel` 查看当前运行级别,`systemctl get-default` 查看默认设置运行级别,`systemctl set-default multi-user.target` 设置默认运行级别的3。 308 | 309 | ## 6.2 找回root密码 310 | 311 | - 思路:进入到单用户模式,就可以修改root密码 312 | - ![](./images/Snipaste_2022-02-20_18-34-46.png) 313 | 314 | - ![](./images/Snipaste_2022-02-20_18-35-39.png) 315 | 316 | - ![](./images/Snipaste_2022-02-20_18-36-30.png) 317 | 318 | ## 6.3 帮助指令 319 | 320 | - `man 命令或配置信息` 321 | - `help 命令` 322 | 323 | - ![](./images/Snipaste_2022-02-20_19-46-30.png) 324 | 325 | ## 6.4 文件操作指令 326 | 327 | ### 6.4.1 文件目录 328 | 329 | - `pwd`:显示当前工作目录的绝对路径。 330 | 331 | - `ls -a`或者`ls -l`:-a显示当前目录的所有文件和目录,包括隐藏的;-l表示以列表的方式显示信息;注意可以组合。 332 | 333 | - `cd`:切换目录,后面可以是绝对路径或者相对路径,如果是`/`开头,表示绝对路径;否则为相对路径。 334 | 335 | - `cd ~`:回到自己的家目录; 336 | - `cd ..`:回到当前目录的上一级目录; 337 | - ![](./images/Snipaste_2022-02-20_20-08-58.png) 338 | 339 | - ~~~bash 340 | [root@iZbp1978lespq45h0qv20aZ /]# ls 341 | bin dev home lib64 media opt root sbin sys usr 342 | boot etc lib lost+found mnt proc run srv tmp var 343 | [root@iZbp1978lespq45h0qv20aZ /]# cd home/ 344 | [root@iZbp1978lespq45h0qv20aZ home]# ls 345 | tom 346 | [root@iZbp1978lespq45h0qv20aZ home]# cd tom/ 347 | [root@iZbp1978lespq45h0qv20aZ tom]# ls 348 | helo.txt 349 | [root@iZbp1978lespq45h0qv20aZ tom]# pwd 350 | /home/tom 351 | [root@iZbp1978lespq45h0qv20aZ tom]# cd ../../root 352 | [root@iZbp1978lespq45h0qv20aZ ~]# pwd 353 | /root 354 | [root@iZbp1978lespq45h0qv20aZ ~]# cd .. 355 | [root@iZbp1978lespq45h0qv20aZ /]# pwd 356 | / 357 | [root@iZbp1978lespq45h0qv20aZ /]# cd ~ 358 | [root@iZbp1978lespq45h0qv20aZ ~]# pwd 359 | /root 360 | ~~~ 361 | 362 | ### 6.4.2 文件创建删除 363 | 364 | - `mkdir`:创建目录,默认创建一级目录,如果要创建多级,要加`-p`; 365 | 366 | - ~~~bash 367 | # 创建一个目录 368 | mkdir /home/dog 369 | #创建多级目录 370 | mkdir -p /home/animal/tiger 371 | ~~~ 372 | 373 | - `rmdir`:默认删除空目录,如果目录下有内容无法删除 374 | 375 | - `rm -rf`:递归强制删除,可删除有内容的目录 376 | 377 | - ~~~bash 378 | [root@iZbp1978lespq45h0qv20aZ home]# ls 379 | animal dog tom 380 | [root@iZbp1978lespq45h0qv20aZ home]# rmdir dog/ 381 | [root@iZbp1978lespq45h0qv20aZ home]# ls 382 | animal tom 383 | [root@iZbp1978lespq45h0qv20aZ home]# rm -rf animal/ 384 | [root@iZbp1978lespq45h0qv20aZ home]# ls 385 | tom 386 | ~~~ 387 | 388 | - `touch`:创建一个空文件 389 | 390 | - ~~~bash 391 | touch hello.txt 392 | ~~~ 393 | 394 | ### 6.4.3 文件拷贝删除移动查看 395 | 396 | - `cp 文件 拷贝路径`:拷贝文件到指定路径 397 | 398 | - `cp -r 文件夹 拷贝路径`:递归拷贝文件夹到指定路径 399 | 400 | - `\cp`:强制覆盖不提示拷贝 401 | 402 | - ~~~bash 403 | [root@iZbp1978lespq45h0qv20aZ home]# ls 404 | hello1.txt test tom 405 | [root@iZbp1978lespq45h0qv20aZ home]# cp hello1.txt test/ 406 | [root@iZbp1978lespq45h0qv20aZ home]# ls 407 | hello1.txt test tom 408 | [root@iZbp1978lespq45h0qv20aZ home]# cd test/ 409 | [root@iZbp1978lespq45h0qv20aZ test]# ls 410 | hello1.txt 411 | [root@iZbp1978lespq45h0qv20aZ test]# cp -r /home/test/ /opt/ 412 | ~~~ 413 | 414 | - ![](./images/Snipaste_2022-02-21_11-49-52.png) 415 | 416 | - `rm 文件或目录`:删除文件 417 | 418 | - `rm -r 文件夹`:递归删除整个文件夹 419 | 420 | - `rm -f`:强制删除不显示 421 | 422 | - ~~~bash 423 | [root@iZbp1978lespq45h0qv20aZ test]# ls 424 | hello1.txt hello2.txt 425 | [root@iZbp1978lespq45h0qv20aZ test]# rm hello1.txt 426 | rm: remove regular empty file ‘hello1.txt’? y 427 | [root@iZbp1978lespq45h0qv20aZ test]# rm -f hello2.txt 428 | [root@iZbp1978lespq45h0qv20aZ test]# ls 429 | [root@iZbp1978lespq45h0qv20aZ test]# cd ~ 430 | [root@iZbp1978lespq45h0qv20aZ ~]# ls 431 | Hello.cpp 432 | [root@iZbp1978lespq45h0qv20aZ ~]# cd /opt 433 | [root@iZbp1978lespq45h0qv20aZ opt]# ls 434 | test 435 | [root@iZbp1978lespq45h0qv20aZ opt]# rm -r test/ 436 | rm: remove directory ‘test/’? y 437 | [root@iZbp1978lespq45h0qv20aZ opt]# ls 438 | [root@iZbp1978lespq45h0qv20aZ opt]# cd /home 439 | [root@iZbp1978lespq45h0qv20aZ home]# ls 440 | hello1.txt test tom 441 | [root@iZbp1978lespq45h0qv20aZ home]# rm -f hello1.txt 442 | [root@iZbp1978lespq45h0qv20aZ home]# rm -r test/ 443 | rm: descend into directory ‘test/’? y 444 | rm: remove regular empty file ‘test/hello2.txt’? y 445 | rm: remove regular empty file ‘test/hello1.txt’? y 446 | rm: remove directory ‘test/’? y 447 | [root@iZbp1978lespq45h0qv20aZ home]# ls 448 | tom 449 | ~~~ 450 | 451 | - ![](./images/Snipaste_2022-02-21_11-58-06.png) 452 | 453 | - `mv src tar`:移动文件或者重命名文件 454 | 455 | - ~~~bash 456 | mv cat.txt pig.txt #重命名文件 457 | mv pig.txt /home/cat.txt #移动文件并且重命名 458 | mv /opt/bbb/ /home/ #移动bbb这个文件夹 459 | mv /opt/bbb/ /home/ccc #移动bbb这个文件夹并且重命名 460 | ~~~ 461 | 462 | - ![](./images/Snipaste_2022-02-21_12-33-17.png) 463 | 464 | - `cat`:查看文件内容 465 | 466 | - 其实`vim` 也可以查看文件内容,但不同的是,vim是可编辑的,cat只能浏览,相对来说更安全。 467 | - 一般cat会带上管道命令`| more`以方便浏览,管道命令是指上一个指令得到的结果交给下一个指令结果,类似两个指令的结合。 468 | 469 | - `cat -n /etc/profile | more`:-n表示显示行号。 470 | - ![](./images/Snipaste_2022-02-21_14-20-24.png) 471 | 472 | - `more`:例如`more /etc/profile`。以全屏按页显示文本文件内容。 473 | 474 | - ![](./images/Snipaste_2022-02-21_14-21-47.png) 475 | 476 | - `less`:用来分屏查看文件内容,和`more`功能类似,但比more功能更强大。 477 | 478 | - ![](./images/Snipaste_2022-02-21_14-49-32.png) 479 | 480 | - `echo`:输出内容到控制台 481 | 482 | - `echo $HOSTNAME`:输出主机名 483 | 484 | - `echo $PATH`:输出环境变量 485 | 486 | - ~~~bash 487 | [root@iZbp1978lespq45h0qv20aZ ~]# echo $HOSTNAME 488 | iZbp1978lespq45h0qv20aZ 489 | [root@iZbp1978lespq45h0qv20aZ ~]# echo $PATH 490 | /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 491 | ~~~ 492 | 493 | - `head`:用于显示文件的开头部分内容,默认情况显示前10行 494 | 495 | - `head -n 5 /etc/profile`:查看文件前5行 496 | 497 | - `tail`:用于显示文件的尾部内容,默认显示最后10行 498 | 499 | - `tail -n 5 /etc/profile`:查看文件后5行 500 | - `tail -f 文件名`:实时追踪文档的所有更新,退出按`ctrl+C`,适用于网络抓包、服务器网络监视 501 | - ![](./images/Snipaste_2022-02-21_15-12-41.png) 502 | 503 | - `>` 输出重定向(覆盖原文件)和 `>>` 追加 504 | 505 | - ~~~bash 506 | [root@iZbp1978lespq45h0qv20aZ ~]# ls -l /home 507 | total 4 508 | -rw-r--r-- 1 root root 0 Feb 21 12:28 cat.txt 509 | drwx------ 2 tom tom 4096 Feb 21 14:35 tom 510 | [root@iZbp1978lespq45h0qv20aZ ~]# ls -l /home >/home/info.txt 511 | [root@iZbp1978lespq45h0qv20aZ ~]# cd /home/ 512 | [root@iZbp1978lespq45h0qv20aZ home]# ls 513 | cat.txt info.txt tom 514 | [root@iZbp1978lespq45h0qv20aZ home]# cat info.txt 515 | total 4 516 | -rw-r--r-- 1 root root 0 Feb 21 12:28 cat.txt 517 | -rw-r--r-- 1 root root 0 Feb 21 16:04 info.txt 518 | drwx------ 2 tom tom 4096 Feb 21 14:35 tom 519 | [root@iZbp1978lespq45h0qv20aZ home]# ls 520 | cat.txt info.txt tom 521 | [root@iZbp1978lespq45h0qv20aZ home]# cal >> info.txt 522 | [root@iZbp1978lespq45h0qv20aZ home]# cat info.txt 523 | total 4 524 | -rw-r--r-- 1 root root 0 Feb 21 12:28 cat.txt 525 | -rw-r--r-- 1 root root 0 Feb 21 16:04 info.txt 526 | drwx------ 2 tom tom 4096 Feb 21 14:35 tom 527 | February 2022 528 | Su Mo Tu We Th Fr Sa 529 | 1 2 3 4 5 530 | 6 7 8 9 10 11 12 531 | 13 14 15 16 17 18 19 532 | 20 21 22 23 24 25 26 533 | 27 28 534 | 535 | [root@iZbp1978lespq45h0qv20aZ home]# 536 | ~~~ 537 | 538 | - ![](./images/Snipaste_2022-02-21_16-08-05.png) 539 | 540 | - `ln`:表示link的意思,软链接,也称为符号链接,类似Windows里面的快捷方式,主要存放了链接其他文件的路径。 541 | 542 | - 删除不能加`/`,把他当成一个文件,而不是目录; 543 | 544 | - `pwd`显示的是当前的路径,而不是链接的路径,但是显示的内容是链接的内容。 545 | 546 | - ~~~bash 547 | [root@iZbp1978lespq45h0qv20aZ home]# ls 548 | cat.txt tom 549 | [root@iZbp1978lespq45h0qv20aZ home]# ln -s /root/ myroot 550 | [root@iZbp1978lespq45h0qv20aZ home]# ls -l 551 | total 4 552 | -rw-r--r-- 1 root root 0 Feb 21 12:28 cat.txt 553 | lrwxrwxrwx 1 root root 6 Feb 21 16:16 myroot -> /root/ 554 | drwx------ 2 tom tom 4096 Feb 21 14:35 tom 555 | [root@iZbp1978lespq45h0qv20aZ home]# cd myroot/ 556 | [root@iZbp1978lespq45h0qv20aZ myroot]# pwd 557 | /home/myroot 558 | [root@iZbp1978lespq45h0qv20aZ myroot]# ls 559 | Hello.cpp 560 | [root@iZbp1978lespq45h0qv20aZ myroot]# cd /home/ 561 | [root@iZbp1978lespq45h0qv20aZ home]# ls -l 562 | total 4 563 | -rw-r--r-- 1 root root 0 Feb 21 12:28 cat.txt 564 | lrwxrwxrwx 1 root root 6 Feb 21 16:16 myroot -> /root/ 565 | drwx------ 2 tom tom 4096 Feb 21 14:35 tom 566 | [root@iZbp1978lespq45h0qv20aZ home]# rm myroot/ 567 | rm: cannot remove ‘myroot/’: Is a directory 568 | [root@iZbp1978lespq45h0qv20aZ home]# rm myroot 569 | rm: remove symbolic link ‘myroot’? y 570 | [root@iZbp1978lespq45h0qv20aZ home]# ls -l 571 | total 4 572 | -rw-r--r-- 1 root root 0 Feb 21 12:28 cat.txt 573 | drwx------ 2 tom tom 4096 Feb 21 14:35 tom 574 | ~~~ 575 | 576 | - ![](./images/Snipaste_2022-02-21_16-21-34.png) 577 | 578 | - `history`:查看已经执行过的历史命令 579 | 580 | - `!n`:执行编号为n的历史命令。 581 | 582 | - ~~~bash 583 | ![Snipaste_2022-02-21_16-24-54](C:\Users\86153\Desktop\Linux学习笔记\images\Snipaste_2022-02-21_16-24-54.png)[root@iZbp1978lespq45h0qv20aZ home]# history 10 584 | 295 cd myroot/ 585 | 296 pwd 586 | 297 ls 587 | 298 cd /home/ 588 | 299 ls -l 589 | 300 rm myroot/ 590 | 301 rm myroot 591 | 302 ls -l 592 | 303 history 593 | 304 history 10 594 | [root@iZbp1978lespq45h0qv20aZ home]# !302 595 | ls -l 596 | total 4 597 | -rw-r--r-- 1 root root 0 Feb 21 12:28 cat.txt 598 | drwx------ 2 tom tom 4096 Feb 21 14:35 tom 599 | [root@iZbp1978lespq45h0qv20aZ home]# 600 | ~~~ 601 | 602 | - ![](./images/Snipaste_2022-02-21_16-24-54.png) 603 | 604 | 605 | 606 | ## 6.5 时间日期指令 607 | 608 | - `date`:显示当前日期 609 | 610 | - ~~~bash 611 | [root@Tyc ~]# date 612 | Mon Feb 21 18:32:52 CST 2022 613 | [root@Tyc ~]# date "+%Y-%m-%d" 614 | 2022-02-21 615 | [root@Tyc ~]# date "+%Y-%m-%d %H:%M:%S" 616 | 2022-02-21 18:34:03 617 | ~~~ 618 | 619 | - ![](./images/Snipaste_2022-02-21_18-36-01.png) 620 | 621 | - `date -s "2021-11-03 20:02:03"`:设置系统时间 622 | 623 | - `cal`:显示本月月历 624 | 625 | - `cal 2020`:显示2020年的所有月历 626 | - ![](./images/Snipaste_2022-02-21_18-41-49.png) 627 | 628 | ## 6.6 查找指令 629 | 630 | - `find 搜索范围 选项`:从指定目录向下递归的遍历子目录,将满足的文件或目录显示在终端 631 | 632 | - ![](./images/Snipaste_2022-02-21_18-48-49.png) 633 | 634 | - `locate`:可以利用数据库快速实现文件搜索,但有的linux没有安装,先安装`yum install mlocate`,然后再使用之前更新数据库`updatedb`,才能使用locate。 635 | 636 | - ~~~bash 637 | [root@Tyc /]# updatedb 638 | [root@Tyc /]# locate Hello.cpp 639 | /root/Hello.cpp 640 | ~~~ 641 | 642 | - ![](./images/Snipaste_2022-02-21_19-01-34.png) 643 | 644 | - `which`:可以查看某个指令在哪个目录下。 645 | 646 | - ~~~bash 647 | [root@Tyc /]# which ls 648 | alias ls='ls --color=auto' 649 | /usr/bin/ls 650 | [root@Tyc /]# which man 651 | /usr/bin/man 652 | [root@Tyc /]# which cd 653 | /usr/bin/cd 654 | ~~~ 655 | 656 | - `grep`:过滤查找,通常和管道符号`|` 一起使用。 657 | 658 | - 基本语法`grep -n "内容" 文件`;-n表示显示匹配的行号。 659 | 660 | - 基本语法`grep -i "内容" 文件`;-i表示忽略字母大小写。 661 | 662 | - ~~~bash 663 | [root@Tyc home]# cat test.txt 664 | hello 665 | yes 666 | dp 667 | home 668 | dp 669 | yes 670 | yes 671 | hale 672 | kkk 673 | yes 674 | test 675 | [root@Tyc home]# cat test.txt | grep -n "yes" 676 | 2:yes 677 | 6:yes 678 | 7:yes 679 | 10:yes 680 | [root@Tyc home]# grep -n "yes" test.txt 681 | 2:yes 682 | 6:yes 683 | 7:yes 684 | 10:yes 685 | [root@Tyc home]# 686 | ~~~ 687 | 688 | - ![](./images/Snipaste_2022-02-21_19-07-57.png) 689 | 690 | ## 6.7 压缩和解压指令 691 | 692 | - `gzip`和`gunzip`:对单个文件进行压缩和解压,格式是`.gz`。 693 | 694 | - ~~~bash 695 | [root@Tyc home]# ls 696 | cat.txt test.txt tom 697 | [root@Tyc home]# gzip test.txt 698 | [root@Tyc home]# ls 699 | cat.txt test.txt.gz tom 700 | [root@Tyc home]# gunzip test.txt.gz 701 | [root@Tyc home]# ls 702 | cat.txt test.txt tom 703 | ~~~ 704 | 705 | - ![](./images/Snipaste_2022-02-21_19-17-16.png) 706 | 707 | - `zip`和`unzip`:对文件夹压缩和解压,格式是`.zip`。 708 | 709 | - `zip -r myhome.zip /home/`:压缩home文件夹以及其里面的文件和子文件夹成为myhome.zip 710 | 711 | - `unzip -d /opt/temp /home/myhome.zip` :-d表示指定的解压目录 712 | 713 | - ~~~bash 714 | [root@Tyc home]# ls 715 | cat.txt test.txt tom 716 | [root@Tyc home]# zip -r myhome.zip /home/ 717 | adding: home/ (stored 0%) 718 | adding: home/cat.txt (stored 0%) 719 | adding: home/tom/ (stored 0%) 720 | adding: home/tom/.bashrc (deflated 23%) 721 | adding: home/tom/helo.txt (stored 0%) 722 | adding: home/tom/.bash_profile (deflated 21%) 723 | adding: home/tom/.bash_logout (stored 0%) 724 | adding: home/test.txt (deflated 19%) 725 | [root@Tyc home]# ls 726 | cat.txt myhome.zip test.txt tom 727 | [root@Tyc home]# unzip -d /opt/temp myhome.zip 728 | Archive: myhome.zip 729 | creating: /opt/temp/home/ 730 | extracting: /opt/temp/home/cat.txt 731 | creating: /opt/temp/home/tom/ 732 | inflating: /opt/temp/home/tom/.bashrc 733 | extracting: /opt/temp/home/tom/helo.txt 734 | inflating: /opt/temp/home/tom/.bash_profile 735 | extracting: /opt/temp/home/tom/.bash_logout 736 | inflating: /opt/temp/home/test.txt 737 | [root@Tyc home]# cd /ope/te 738 | -bash: cd: /ope/te: No such file or directory 739 | [root@Tyc home]# cd /opt/temp/ 740 | [root@Tyc temp]# ls 741 | home 742 | ~~~ 743 | 744 | - ![](./images/Snipaste_2022-02-21_19-52-55.png) 745 | 746 | - `tar`:既可以压缩,也可以解压,打包得到的文件格式是`.tar.gz` 。 747 | 748 | - `tar -zcvf xxx.tar.gz 打包内容`:将内容进行打包 749 | 750 | - `tar -zxvf xxx.tar.gz -C 解压目标目录`:将压缩文件解压到特点位置 751 | 752 | - ![](./images/Snipaste_2022-02-21_19-59-09.png) 753 | 754 | - ~~~bash 755 | [root@Tyc home]# ls 756 | cat.txt pig.txt test.txt tiger.txt tom 757 | [root@Tyc home]# tar -zcvf pt.tar.gz pig.txt tiger.txt 758 | pig.txt 759 | tiger.txt 760 | [root@Tyc home]# ls 761 | cat.txt pig.txt pt.tar.gz test.txt tiger.txt tom 762 | [root@Tyc home]# mkdir /opt/temp2 763 | [root@Tyc home]# tar -zxvf pt.tar.gz -C /opt/temp2/ 764 | pig.txt 765 | tiger.txt 766 | [root@Tyc home]# cd /opt/temp2/ 767 | [root@Tyc temp2]# ls 768 | pig.txt tiger.txt 769 | [root@Tyc temp2]# tar -zcvf myhome.tar.gz /home 770 | tar: Removing leading `/' from member names 771 | /home/ 772 | /home/cat.txt 773 | /home/pt.tar.gz 774 | /home/tom/ 775 | /home/tom/.bashrc 776 | /home/tom/helo.txt 777 | /home/tom/.bash_profile 778 | /home/tom/.bash_logout 779 | /home/tiger.txt 780 | /home/pig.txt 781 | /home/test.txt 782 | [root@Tyc temp2]# ls 783 | myhome.tar.gz pig.txt tiger.txt 784 | [root@Tyc temp2]# tar -zxvf myhome.tar.gz 785 | home/ 786 | home/cat.txt 787 | home/pt.tar.gz 788 | home/tom/ 789 | home/tom/.bashrc 790 | home/tom/helo.txt 791 | home/tom/.bash_profile 792 | home/tom/.bash_logout 793 | home/tiger.txt 794 | home/pig.txt 795 | home/test.txt 796 | [root@Tyc temp2]# ls 797 | home myhome.tar.gz pig.txt tiger.txt 798 | [root@Tyc temp2]# 799 | ~~~ 800 | 801 | 802 | 803 | # 7. 组管理和权限管理 804 | 805 | ## 7.1 用户和文件的组概念 806 | 807 | - Linux每个用户都必须属于一个组,就像每个人都有自己的国家一样。 808 | 809 | - Linux每个文件都有**所有者**、**所在组**、**其他组**这三个概念。 810 | 811 | ![](./images/Snipaste_2022-02-22_18-41-59.png) 812 | 813 | ![](./images/Snipaste_2022-02-22_18-43-47.png) 814 | 815 | - 修改权限一般要`root`权限。 816 | 817 | ## 7.2 文件和目录的所有者 818 | 819 | - `chown -R` :change owner,修改所有者。-R表示递归修改。 820 | - ![](./images/Snipaste_2022-02-22_20-03-39.png) 821 | 822 | - ![](./images/Snipaste_2022-02-22_18-47-54.png) 823 | 824 | - ~~~bash 825 | [root@Tyc home]# ls -ahl 826 | total 16K 827 | drwxr-xr-x. 3 root root 4.0K Feb 22 18:46 . 828 | dr-xr-xr-x. 18 root root 4.0K Feb 19 20:40 .. 829 | -rw-r--r-- 1 root root 0 Feb 22 18:46 apple.txt 830 | -rw-r--r-- 1 root root 0 Feb 21 12:28 cat.txt 831 | -rw-r--r-- 1 root root 0 Feb 21 19:59 pig.txt 832 | -rw-r--r-- 1 root root 48 Feb 21 19:11 test.txt 833 | -rw-r--r-- 1 root root 0 Feb 21 19:59 tiger.txt 834 | drwx------ 2 tom tom 4.0K Feb 21 14:35 tom 835 | [root@Tyc home]# chown tom apple.txt 836 | [root@Tyc home]# ls -ahl 837 | total 16K 838 | drwxr-xr-x. 3 root root 4.0K Feb 22 18:46 . 839 | dr-xr-xr-x. 18 root root 4.0K Feb 19 20:40 .. 840 | -rw-r--r-- 1 tom root 0 Feb 22 18:46 apple.txt 841 | -rw-r--r-- 1 root root 0 Feb 21 12:28 cat.txt 842 | -rw-r--r-- 1 root root 0 Feb 21 19:59 pig.txt 843 | -rw-r--r-- 1 root root 48 Feb 21 19:11 test.txt 844 | -rw-r--r-- 1 root root 0 Feb 21 19:59 tiger.txt 845 | drwx------ 2 tom tom 4.0K Feb 21 14:35 tom 846 | [root@Tyc home]# 847 | ~~~ 848 | 849 | ## 7.3 组的创建 850 | 851 | - ~~~bash 852 | groupadd master # 创建一个组master 853 | useradd -g master fox #创建一个用户放到master组下面 854 | ~~~ 855 | 856 | ## 7.4 文件和目录的所在组 857 | 858 | - `chgrp -R`:change group,修改所在组。-R表示递归修改。 859 | - ![](./images/Snipaste_2022-02-22_20-06-55.png) 860 | - ![](./images/Snipaste_2022-02-22_19-01-56.png) 861 | 862 | - ~~~bash 863 | [root@Tyc tom]# ls -ahl 864 | total 24K 865 | drwx------ 2 tom tom 4.0K Feb 22 19:00 . 866 | drwxr-xr-x. 3 root root 4.0K Feb 22 18:46 .. 867 | -rw------- 1 tom tom 123 Feb 22 19:00 .bash_history 868 | -rw-r--r-- 1 tom tom 18 Apr 1 2020 .bash_logout 869 | -rw-r--r-- 1 tom tom 193 Apr 1 2020 .bash_profile 870 | -rw-r--r-- 1 tom tom 231 Apr 1 2020 .bashrc 871 | -rw-rw-r-- 1 tom tom 0 Feb 22 18:55 tom1.txt 872 | [root@Tyc tom]# chgrp master tom1.txt 873 | [root@Tyc tom]# ls -ahl 874 | total 24K 875 | drwx------ 2 tom tom 4.0K Feb 22 19:00 . 876 | drwxr-xr-x. 3 root root 4.0K Feb 22 18:46 .. 877 | -rw------- 1 tom tom 123 Feb 22 19:00 .bash_history 878 | -rw-r--r-- 1 tom tom 18 Apr 1 2020 .bash_logout 879 | -rw-r--r-- 1 tom tom 193 Apr 1 2020 .bash_profile 880 | -rw-r--r-- 1 tom tom 231 Apr 1 2020 .bashrc 881 | -rw-rw-r-- 1 tom master 0 Feb 22 18:55 tom1.txt 882 | [root@Tyc tom]# 883 | ~~~ 884 | 885 | ## 7.5 其他组 886 | 887 | - ~~~bash 888 | [root@Tyc tom]# usermod -g wudang tom 889 | [root@Tyc tom]# id tom 890 | uid=1000(tom) gid=1001(wudang) groups=1001(wudang) 891 | [root@Tyc tom]# 892 | ~~~ 893 | 894 | - ![](./images/Snipaste_2022-02-22_19-25-34.png) 895 | 896 | ## 7.6 权限的基本介绍 897 | 898 | - 使用`ls -l`得出的信息,开头10个字符表示文件权限 899 | - 第0位确定文件类型(`d,-,l,c,b`) 900 | - `d` 表示目录; 901 | - `-` 表示普通文件; 902 | - `c` 表示字符设备文件,如鼠标、键盘等; 903 | - `b` 表示块设备,比如硬盘等,blog。 904 | - 第1-3位确定所有者所拥有的权限; 905 | - `rwx` 三种权限,对于文件和目录的作用分别不用。 906 | - 第4-6位确定所在组的权限; 907 | - 第7-9位确定其他用户所拥有的权限。 908 | - ![](./images/Snipaste_2022-02-22_19-45-18.png) 909 | 910 | - ![](./images/Snipaste_2022-02-22_19-46-22.png) 911 | 912 | - 可删除文件的前提要对文件所在目录有`w`权限,同时对文件有`w`权限。 913 | - 示例 914 | - ![](./images/Snipaste_2022-02-22_19-55-42.png) 915 | 916 | ## 7.7 修改权限 917 | 918 | - `chmod`:修改文件或目录的文件。 919 | - ![](./images/Snipaste_2022-02-22_19-58-27.png) 920 | 921 | - 也可以通过数字更改权限,1-7 包含的所有的组合方式。 922 | 923 | ![](./images/Snipaste_2022-02-22_20-00-45.png) 924 | 925 | 926 | 927 | # 8. 定时任务调度 928 | 929 | ## 8.1 crond 任务调度 930 | 931 | - 为什么要定时调度 932 | 933 | ![](./images/Snipaste_2022-02-22_20-11-39.png) 934 | 935 | - ![](./images/Snipaste_2022-02-22_20-13-33.png) 936 | 937 | - ![](./images/Snipaste_2022-02-22_20-20-46.png) 938 | 939 | - 注意星号之间要有间隔 940 | 941 | - ~~~bash 942 | */1 * * * * ls -l /etc/ > /tmp/to.txt 943 | ~~~ 944 | 945 | - ![](./images/Snipaste_2022-02-22_20-33-59.png) 946 | 947 | - ![](./images/Snipaste_2022-02-22_20-34-39.png) 948 | 949 | ### crontab使用脚本应用实例 950 | 951 | - 第一步:添加mywork.sh 脚本 952 | 953 | - 第二步:添加sh脚本的执行权限 954 | 955 | - 第三步:添加定时任务 956 | 957 | ~~~bash 958 | [root@Tyc home]# vim mywork.sh 959 | [root@Tyc home]# chmod u+x mywork.sh 960 | [root@Tyc home]# ll 961 | total 12 962 | -rw-r--r-- 1 tom root 0 Feb 22 18:46 apple.txt 963 | -rw-r--r-- 1 root root 0 Feb 21 12:28 cat.txt 964 | -rwxr--r-- 1 root root 39 Feb 22 20:42 mywork.sh 965 | -rw-r--r-- 1 root root 0 Feb 21 19:59 pig.txt 966 | -rw-r--r-- 1 root root 48 Feb 21 19:11 test.txt 967 | -rw-r--r-- 1 root root 0 Feb 21 19:59 tiger.txt 968 | drwx------ 2 tom wudang 4096 Feb 22 19:00 tom 969 | [root@Tyc home]# crontab -e 970 | no crontab for root - using an empty one 971 | crontab: installing new crontab 972 | [root@Tyc home]# crontab -l 973 | */1 * * * * /home/mywork.sh 974 | [root@Tyc home]# ll 975 | total 16 976 | -rw-r--r-- 1 tom root 0 Feb 22 18:46 apple.txt 977 | -rw-r--r-- 1 root root 0 Feb 21 12:28 cat.txt 978 | -rw-r--r-- 1 root root 162 Feb 22 20:45 mycal 979 | -rwxr--r-- 1 root root 39 Feb 22 20:42 mywork.sh 980 | -rw-r--r-- 1 root root 0 Feb 21 19:59 pig.txt 981 | -rw-r--r-- 1 root root 48 Feb 21 19:11 test.txt 982 | -rw-r--r-- 1 root root 0 Feb 21 19:59 tiger.txt 983 | drwx------ 2 tom wudang 4096 Feb 22 19:00 tom 984 | ~~~ 985 | 986 | - ![](./images/Snipaste_2022-02-22_20-48-17.png) 987 | 988 | 989 | 990 | ## 8.2 at 定时任务 991 | 992 | - crond是定时、反复执行的。 993 | 994 | - at命令是一次性定时计划任务。 995 | 996 | - 启动的前提是看at的守护进程atd是否在运行 997 | 998 | - 查看指令是`ps -ef | grep atd `。 999 | 1000 | - ~~~bash 1001 | [root@Tyc home]# ps -ef | grep atd 1002 | root 1089 1 0 Feb21 ? 00:00:00 /usr/sbin/atd -f 1003 | ~~~ 1004 | 1005 | - ![](./images/Snipaste_2022-02-22_21-25-30.png) 1006 | 1007 | - ![](./images/Snipaste_2022-02-22_21-24-59.png) 1008 | 1009 | - ~~~bash 1010 | [root@Tyc home]# atq 1011 | [root@Tyc home]# at 5pm tomorrow 1012 | at> date > /home/test.log 1013 | job 1 at Wed Feb 23 17:00:00 2022 1014 | [root@Tyc home]# atq 1015 | 1 Wed Feb 23 17:00:00 2022 a root 1016 | [root@Tyc home]# 1017 | ~~~ 1018 | 1019 | - `at+选项+时间`之后输入`回车`,然后输入指令,最后按两次`ctrl+D` 结束输入。 1020 | 1021 | - 可以采用`atq` 查看设置的定时任务。 1022 | 1023 | - `atrm +编号`:删除该编号的定时任务。 1024 | 1025 | - `at [选项] [时间]`。 1026 | 1027 | - ![](./images/Snipaste_2022-02-22_21-30-50.png) 1028 | 1029 | - ![](./images/Snipaste_2022-02-22_21-32-25.png) 1030 | 1031 | - ![](./images/Snipaste_2022-02-22_21-44-38.png) 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | # 9 Linux 磁盘分区和挂载 1038 | 1039 | ## 9.1 Linux分区 1040 | 1041 | - ![](./images/Snipaste_2022-02-23_21-19-27.png) 1042 | 1043 | - ![](./images/Snipaste_2022-02-23_21-18-55.png) 1044 | 1045 | - ![](./images/Snipaste_2022-02-23_21-19-56.png) 1046 | 1047 | - 现在使用的硬盘基本是SCIC硬盘。所以是`sda`。 1048 | - ![](./images/Snipaste_2022-02-23_21-23-09.png) 1049 | 1050 | - `lsblk -f`:显示的UUID是分区的40位的唯一标识符。 1051 | - ![](./images/Snipaste_2022-02-23_21-28-26.png) 1052 | 1053 | ## 9.2 增加磁盘应用实例 1054 | 1055 | - 需求:在根目录下添加一个目录`/newdisk`,挂载新的磁盘`sdb`。 1056 | - ![](./images/Snipaste_2022-02-23_21-37-12.png) 1057 | 1058 | - 基本操作 1059 | - 1.新建磁盘sdb。 1060 | - 2.给新磁盘分区。 1061 | - 3.格式化分区。——格式化之后会增加UUID号 1062 | - 4.挂载到目标目录。`mount` 1063 | - 5.可以卸载目标目录。`umount` 1064 | - 6.命令行挂载只是临时的,想永久挂载要写入到配置文件`/etc/fstab` 文件。 1065 | - ![](./images/Snipaste_2022-02-23_21-49-48.png) 1066 | 1067 | - ![](./images/Snipaste_2022-02-23_21-50-38.png) 1068 | 1069 | - ![](./images/Snipaste_2022-02-23_21-51-00.png) 1070 | 1071 | - ![](./images/Snipaste_2022-02-23_21-52-18.png) 1072 | 1073 | ## 9.3 磁盘情况查询 1074 | 1075 | - `df -h`:查询磁盘整体使用情况指令。 1076 | - `du -hac 指定目录`:查询指定目录的使用情况指令。 1077 | 1078 | - ![](./images/Snipaste_2022-02-23_21-54-20.png) 1079 | 1080 | - ![](./images/Snipaste_2022-02-23_21-58-13.png) 1081 | 1082 | ## 9.4 磁盘情况的实用指令 1083 | 1084 | - 以树状结构得到显示目录结构 1085 | 1086 | - `yum install tree`:没有就按照tree 1087 | 1088 | - `tree 目录`:显示指令 1089 | 1090 | - ~~~bash 1091 | [root@Tyc home]# tree 1092 | . 1093 | ├── apple.txt 1094 | ├── cat.txt 1095 | ├── mycal 1096 | ├── mywork.sh 1097 | ├── pig.txt 1098 | ├── test.txt 1099 | ├── tiger.txt 1100 | └── tom 1101 | └── tom1.txt 1102 | 1103 | 1 directory, 8 files 1104 | [root@Tyc home]# 1105 | ~~~ 1106 | 1107 | - ![](./images/Snipaste_2022-02-23_22-45-54.png) 1108 | 1109 | 1110 | 1111 | # 10. Linux网络配置 1112 | 1113 | - NAT网络模式 1114 | 1115 | ![](./images/Snipaste_2022-02-24_14-43-10.png) 1116 | 1117 | - 查看网络配置的指令 1118 | 1119 | ![](./images/Snipaste_2022-02-24_14-46-57.png) 1120 | 1121 | - 测试主机直接的连通性 1122 | 1123 | ![](./images/Snipaste_2022-02-24_14-48-33.png) 1124 | 1125 | - 内网IP静态配置 1126 | 1127 | - DHCP自动分配:每次启动的ip地址一般不一样。 1128 | 1129 | - 指定固定的ip地址 1130 | 1131 | ![](./images/Snipaste_2022-02-24_15-09-38.png) 1132 | 1133 | ![](./images/Snipaste_2022-02-24_15-09-59.png) 1134 | 1135 | - 设置主机名 1136 | 1137 | ![](./images/Snipaste_2022-02-24_15-12-34.png) 1138 | 1139 | - 设置主机映射 1140 | 1141 | ![](./images/Snipaste_2022-02-24_15-16-58.png) 1142 | 1143 | - 主机名解析机制 1144 | 1145 | ![](./images/Snipaste_2022-02-24_15-19-28.png) 1146 | 1147 | ![](./images/Snipaste_2022-02-24_15-32-13.png) 1148 | 1149 | 1150 | 1151 | # 11. 进程管理 1152 | 1153 | ## 11.1 基本介绍 1154 | 1155 | - ![](./images/Snipaste_2022-02-24_15-37-09.png) 1156 | 1157 | ## 11.2 查看进程 1158 | 1159 | - `ps 选项`:显示系统执行的进程 1160 | 1161 | - `ps -aux | more` :翻页查看 1162 | - `ps -aux | grep "xxx"`:过滤查看 1163 | - ![](./images/Snipaste_2022-02-24_15-59-11.png) 1164 | 1165 | - ![](./images/Snipaste_2022-02-24_16-04-30.png) 1166 | 1167 | ![](./images/Snipaste_2022-02-24_16-05-27.png) 1168 | 1169 | - `ps -ef`:全格式显示所有进程,可以查看父进程 1170 | 1171 | - `ps -ef | grep xxx` 1172 | 1173 | - ![](./images/Snipaste_2022-02-24_16-09-16.png) 1174 | 1175 | ![](./images/Snipaste_2022-02-24_16-25-05.png) 1176 | 1177 | ## 11.3 终止进程 1178 | 1179 | - `kill 选项 pid`:杀死某个进程。 1180 | - `killall 进程名称`:杀死进程及其子进程。 1181 | - `kill -9 pid`:强制关闭pid进程。 1182 | - ![](./images/Snipaste_2022-02-24_16-36-02.png) 1183 | 1184 | ## 11.4 显示进程树 1185 | 1186 | - ![](./images/Snipaste_2022-02-24_16-38-09.png) 1187 | 1188 | ## 11.5 服务管理 1189 | 1190 | - 关键词`service`和`systemctl`。 1191 | 1192 | - ![](./images/Snipaste_2022-02-24_16-51-42.png) 1193 | 1194 | - ![](./images/Snipaste_2022-02-24_16-52-32.png) 1195 | 1196 | - ~~~bash 1197 | [root@Tyc init.d]# service network status 1198 | Configured devices: 1199 | lo eth0 1200 | Currently active devices: 1201 | lo eth0 1202 | [root@Tyc init.d]# 1203 | ~~~ 1204 | 1205 | - 查看service服务名 1206 | 1207 | ![](./images/Snipaste_2022-02-24_17-00-42.png) 1208 | 1209 | - 运行级别 1210 | 1211 | - `runlevel`:当前运行级别 1212 | 1213 | - `systemctl get-default`:默认运行级别 1214 | 1215 | - ~~~bash 1216 | [root@Tyc init.d]# runlevel 1217 | N 3 1218 | [root@Tyc init.d]# systemctl get-default 1219 | multi-user.target 1220 | [root@Tyc init.d]# 1221 | ~~~ 1222 | 1223 | - ![](./images/Snipaste_2022-02-24_17-05-23.png) 1224 | 1225 | - ![](./images/Snipaste_2022-02-24_17-06-01.png) 1226 | 1227 | - `chkconfig`:给服务的各个运行级别设置自启动/关闭。 1228 | 1229 | - `chkconfig --list | grep xxx`:查看过滤后的服务service 1230 | - `chkconfig --level 3 服务名 off`:设置服务名的3级别自启动关闭。 1231 | - ![](./images/Snipaste_2022-02-24_17-10-32.png) 1232 | 1233 | - `systemctl`:管理服务指令 1234 | 1235 | - ![](./images/Snipaste_2022-02-24_19-03-41.png) 1236 | 1237 | - `ls -l /usr/lib/systemd/system/ | more`:显示systemctl管理的服务名称。 1238 | - `systemctl list-unit-files | grep firewalld`:查看防火墙开启还是关闭。 1239 | 1240 | - 关于防火墙的管理指令 1241 | 1242 | - 目的,打开防火墙的同时允许防火墙通过某些端口。 1243 | 1244 | ![](./images/Snipaste_2022-02-24_19-10-07.png) 1245 | 1246 | - ![](./images/Snipaste_2022-02-24_19-13-27.png) 1247 | 1248 | 1249 | 1250 | ## 11.6 动态监控进程 1251 | 1252 | - `top`:主要查看cpu和内存men占用量,以及是否有僵尸进程zombie。 1253 | - ![](./images/Snipaste_2022-02-24_19-16-11.png) 1254 | 1255 | - ![](./images/Snipaste_2022-02-24_19-20-36.png) 1256 | 1257 | - `top` 指令的交互 1258 | - ![](./images/Snipaste_2022-02-24_19-25-47.png) 1259 | 1260 | ## 11.7 监控网络状态 1261 | 1262 | - `netstat` : 1263 | 1264 | - `netstat -anp | grep sshd` 1265 | - `netstat -anp | more ` 1266 | - ![](./images/Snipaste_2022-02-24_19-52-16.png) 1267 | 1268 | - ![](./images/Snipaste_2022-02-24_19-54-16.png) 1269 | 1270 | - `ping`:测试主机连接 1271 | 1272 | 1273 | 1274 | # 12. RPM和YUM软件管理 1275 | 1276 | ## 12.1 RPM 1277 | 1278 | - 是`Redhat Package Manager` 首字母的缩写。 1279 | - ![](./images/Snipaste_2022-02-24_19-58-12.png) 1280 | 1281 | - 查看指令 1282 | 1283 | ![](./images/Snipaste_2022-02-24_20-02-39.png) 1284 | 1285 | - 卸载 1286 | 1287 | ![](./images/Snipaste_2022-02-24_20-07-27.png) 1288 | 1289 | - 安装——RPM安装的前提是本地有rmp包的具体文件路径 1290 | 1291 | ![](./images/Snipaste_2022-02-24_20-07-41.png) 1292 | 1293 | ## 12.2 YUM 1294 | 1295 | - yum是基于服务器库的线上安装命令,类似sudo apt。 1296 | - ![](./images/Snipaste_2022-02-24_20-11-11.png) 1297 | 1298 | - yum只能安装,卸载还是用`rpm -e RPM包的名称`。 1299 | 1300 | 1301 | 1302 | 1303 | 1304 | # 13. Shell编程 1305 | 1306 | ## 13.1 概述 1307 | 1308 | - ![](./images/Snipaste_2022-02-24_20-56-36.png) 1309 | 1310 | - ![](./images/Snipaste_2022-02-24_21-02-34.png) 1311 | 1312 | - ~~~bash 1313 | [root@Tyc home]# vim hello.sh 1314 | [root@Tyc home]# cat hello.sh 1315 | #!/bin/bash 1316 | echo "Hello World!" 1317 | [root@Tyc home]# ll 1318 | total 8 1319 | -rw-r--r-- 1 root root 32 Feb 24 21:00 hello.sh 1320 | -rwxr--r-- 1 root root 39 Feb 22 20:42 mywork.sh 1321 | [root@Tyc home]# chmod u+x hello.sh 1322 | [root@Tyc home]# ll 1323 | total 8 1324 | -rwxr--r-- 1 root root 32 Feb 24 21:00 hello.sh 1325 | -rwxr--r-- 1 root root 39 Feb 22 20:42 mywork.sh 1326 | #第一种方式执行脚本 1327 | [root@Tyc home]# ./hello.sh 1328 | Hello World! 1329 | 1330 | #第二种方式执行脚本 1331 | [root@Tyc home]# chmod u-x hello.sh 1332 | [root@Tyc home]# ll 1333 | total 8 1334 | -rw-r--r-- 1 root root 32 Feb 24 21:00 hello.sh 1335 | -rwxr--r-- 1 root root 39 Feb 22 20:42 mywork.sh 1336 | [root@Tyc home]# sh hello.sh 1337 | Hello World! 1338 | ~~~ 1339 | 1340 | 1341 | 1342 | ## 13.2 Shell的变量 1343 | 1344 | ### 13.2.1 变量定义 1345 | 1346 | - Shell的变量等号左右不能加空格,注意!!!这和其他语言不一样。 1347 | - ![](./images/Snipaste_2022-02-25_10-55-07.png) 1348 | - ![](./images/Snipaste_2022-02-25_10-55-21.png) 1349 | 1350 | - ~~~bash 1351 | [root@Tyc home]# cat var.sh 1352 | #!/bin/bash 1353 | #案例1:定义变量A 1354 | A=100 1355 | #输出变量时加上$ 1356 | echo A=$A 1357 | echo "A=$A" 1358 | 1359 | #案例2:撤销变量A 1360 | unset A 1361 | echo "撤销之后A=$A" 1362 | 1363 | #案例3:声明静态变量B=2,不能撤销 1364 | readonly B=2 1365 | echo "B=$B" 1366 | 1367 | #案例4:将指令返回的结果赋给变量 1368 | C=`date` 1369 | D=$(date) 1370 | echo "C=$C" 1371 | echo "D=$D" 1372 | 1373 | [root@Tyc home]# ./var.sh 1374 | A=100 1375 | A=100 1376 | 撤销之后A= 1377 | B=2 1378 | C=Fri Feb 25 11:16:01 CST 2022 1379 | D=Fri Feb 25 11:16:01 CST 2022 1380 | ~~~ 1381 | 1382 | ### 13.2.2 设置环境变量/全局变量 1383 | 1384 | - Linux的环境变量也称为全局变量。 1385 | 1386 | - 步骤 1387 | 1388 | - 1.在`/etc/profile`末尾里面声明变量,`export name=xxx `; 1389 | 1390 | ~~~bash 1391 | #定义一个环境变量 1392 | export TOM_HOME=/opt/tomcat 1393 | ~~~ 1394 | 1395 | - 2.更新配置信息,`source /etc/profile`; 1396 | 1397 | - 3.然后就可以在.sh脚本使用name变量。 1398 | 1399 | ~~~bash 1400 | [root@Tyc home]# echo $TOM_HOME 1401 | /opt/tomcat 1402 | ~~~ 1403 | 1404 | - ![](./images/Snipaste_2022-02-25_12-46-50.png) 1405 | 1406 | - 多行注释`:<