11---
2- title : 后端程序员必备的 Linux 基础知识总结
2+ title : Linux 基础知识总结
33category : 计算机基础
44tag :
55 - 操作系统
1010
1111_ 如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!笔芯!_
1212
13- ## 1. 从认识操作系统开始
13+ ## 从认识操作系统开始
1414
1515![ ] ( https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/image-20200807161118901.png )
1616
1717正式开始 Linux 之前,简单花一点点篇幅科普一下操作系统相关的内容。
1818
19- ### 1.1. 操作系统简介
19+ ### 操作系统简介
2020
2121我通过以下四点介绍什么是操作系统:
2222
@@ -29,25 +29,25 @@ _如果文章有任何需要改善和完善的地方,欢迎在评论区指出
2929
3030![ Kernel_Layout] ( https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/Kernel_Layout.png )
3131
32- ### 1.2. 操作系统简单分类
32+ ### 操作系统简单分类
3333
34- #### 1.2.1. Windows
34+ #### Windows
3535
3636目前最流行的个人桌面操作系统 ,不做多的介绍,大家都清楚。界面简单易操作,软件生态非常好。
3737
3838_ 玩玩电脑游戏还是必须要有 Windows 的,所以我现在是一台 Windows 用于玩游戏,一台 Mac 用于平时日常开发和学习使用。_
3939
4040![ windows] ( ./images/windows.png )
4141
42- #### 1.2.2. Unix
42+ #### Unix
4343
4444最早的多用户、多任务操作系统 。后面崛起的 Linux 在很多方面都参考了 Unix。
4545
4646目前这款操作系统已经逐渐逐渐退出操作系统的舞台。
4747
4848![ unix] ( ./images/unix.png )
4949
50- #### 1.2.3. Linux
50+ #### Linux
5151
5252** Linux 是一套免费使用、开源的类 Unix 操作系统。** Linux 存在着许多不同的发行版本,但它们都使用了 ** Linux 内核** 。
5353
@@ -57,13 +57,13 @@ _玩玩电脑游戏还是必须要有 Windows 的,所以我现在是一台 Win
5757
5858![ linux] ( ./images/linux.png )
5959
60- #### 1.2.4. Mac OS
60+ #### Mac OS
6161
6262苹果自家的操作系统,编程体验和 Linux 相当,但是界面、软件生态以及用户体验各方面都要比 Linux 操作系统更好。
6363
6464![ macos] ( ./images/macos.png )
6565
66- ### 1.3. 操作系统的内核(Kernel)
66+ ### 操作系统的内核(Kernel)
6767
6868我们先来看看维基百科对于内核的解释,我觉得总结的非常好!
6969
@@ -76,15 +76,15 @@ _玩玩电脑游戏还是必须要有 Windows 的,所以我现在是一台 Win
76761 . ** 操作系统的内核(Kernel)是操作系统的核心部分,它负责系统的内存管理,硬件设备的管理,文件系统的管理以及应用程序的管理。**
77772 . ** 操作系统的内核是连接应用程序和硬件的桥梁,决定着操作系统的性能和稳定性。**
7878
79- ### 1.4. 中央处理器(CPU,Central Processing Unit)
79+ ### 中央处理器(CPU,Central Processing Unit)
8080
8181关于 CPU 简单概括三点:
8282
83831 . ** CPU 是一台计算机的运算核心(Core)+控制核心( Control Unit),可以称得上是计算机的大脑。**
84842 . ** CPU 主要包括两个部分:控制器+运算器。**
85853 . ** CPU 的根本任务就是执行指令,对计算机来说最终都是一串由“0”和“1”组成的序列。**
8686
87- ### 1.5. CPU vs Kernel(内核)
87+ ### CPU vs Kernel(内核)
8888
8989很多人容易无法区分操作系统的内核(Kernel)和中央处理器(CPU),你可以简单从下面两点来区别:
9090
@@ -95,7 +95,7 @@ _玩玩电脑游戏还是必须要有 Windows 的,所以我现在是一台 Win
9595
9696![ Kernel_Layout] ( https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/Kernel_Layout.png )
9797
98- ### 1.6. 系统调用
98+ ### 系统调用
9999
100100介绍系统调用之前,我们先来了解一下用户态和系统态。
101101
@@ -122,9 +122,9 @@ _玩玩电脑游戏还是必须要有 Windows 的,所以我现在是一台 Win
122122
123123![ ] ( https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/L181kk2Eou-compress.jpg )
124124
125- ## 2. 初探 Linux
125+ ## 初探 Linux
126126
127- ### 2.1. Linux 简介
127+ ### Linux 简介
128128
129129我们上面已经简单了 Linux,这里只强调三点。
130130
@@ -134,7 +134,7 @@ _玩玩电脑游戏还是必须要有 Windows 的,所以我现在是一台 Win
134134
135135![ Linux] ( ./images/Linux之父.png )
136136
137- ### 2.2. Linux 诞生
137+ ### Linux 诞生
138138
1391391989 年,Linus Torvalds 进入芬兰陆军新地区旅,服 11 个月的国家义务兵役,军衔为少尉,主要服务于计算机部门,任务是弹道计算。服役期间,购买了安德鲁·斯图尔特·塔能鲍姆所著的教科书及 minix 源代码,开始研究操作系统。1990 年,他退伍后回到大学,开始接触 Unix。
140140
@@ -144,7 +144,7 @@ _玩玩电脑游戏还是必须要有 Windows 的,所以我现在是一台 Win
144144
145145![ OPINION: Make the switch to a Linux operating system | Opinion ...] ( ./images/Linux-Logo.png )
146146
147- ### 2.3. 常见 Linux 发行版本有哪些?
147+ ### 常见 Linux 发行版本有哪些?
148148
149149Linus Torvalds 开源的只是 Linux 内核,我们上面也提到了操作系统内核的作用。一些组织或厂商将 Linux 内核与各种软件和文档包装起来,并提供系统安装界面和系统配置、设定与管理工具,就构成了 Linux 的发行版本。
150150
@@ -157,15 +157,15 @@ Linux 的发行版本可以大体分为两类:
157157
158158对于初学者学习 Linux ,推荐选择 CentOS 。
159159
160- ## 3. Linux 文件系统概览
160+ ## Linux 文件系统概览
161161
162- ### 3.1. Linux 文件系统简介
162+ ### Linux 文件系统简介
163163
164164** 在 Linux 操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。** 也就是说在 Linux 系统中有一个重要的概念:** 一切都是文件** 。
165165
166166其实这是 UNIX 哲学的一个体现,在 UNIX 系统中,把一切资源都看作是文件,Linux 的文件系统也是借鉴 UNIX 文件系统而来。
167167
168- ### 3.2. inode 介绍
168+ ### inode 介绍
169169
170170** inode 是 linux/unix 文件系统的基础。那么,inode 是什么?有什么作用呢?**
171171
@@ -184,7 +184,7 @@ Linux 的发行版本可以大体分为两类:
184184
185185![ 文件inode信息] ( ./images/文件inode信息.png )
186186
187- ### 3.3. Linux 文件类型
187+ ### Linux 文件类型
188188
189189Linux 支持很多文件类型,其中非常重要的文件类型有: ** 普通文件** ,** 目录文件** ,** 链接文件** ,** 设备文件** ,** 管道文件** ,** Socket 套接字文件** 等。
190190
@@ -196,7 +196,7 @@ Linux 支持很多文件类型,其中非常重要的文件类型有: **普通
196196- ** 管道文件(p,pipe)** : 一种特殊类型的文件,用于进程之间的通信。
197197- ** 套接字(s,socket)** :用于进程间的网络通信,也可以用于本机之间的非网络通信。
198198
199- ### 3.4. Linux 目录树
199+ ### Linux 目录树
200200
201201所有可操作的计算机资源都存在于目录树这个结构中,对计算资源的访问,可以看做是对这棵目录树的访问。
202202
@@ -223,23 +223,23 @@ Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层
223223- ** /var:** 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
224224- ** /lost+found:** 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows 下叫什么.chk)就在这里。
225225
226- ## 4. Linux 基本命令
226+ ## Linux 基本命令
227227
228228下面只是给出了一些比较常用的命令。
229229
230230推荐一个 Linux 命令快查网站,非常不错,大家如果遗忘某些命令或者对某些命令不理解都可以在这里得到解决。Linux 命令在线速查手册:https://www.w3xue.com/manual/linux/ 。
231231
232232另外,[ shell.how] ( https://www.shell.how/ ) 这个网站可以用来解释常见命令的意思,对你学习 Linux 基本命令以及其他常用命令(如 Git、NPM)。
233233
234- ### 4.1. 目录切换命令
234+ ### 目录切换命令
235235
236236- ** ` cd usr ` :** 切换到该目录下 usr 目录
237237- ** ` cd ..(或cd../) ` :** 切换到上一层目录
238238- ** ` cd / ` :** 切换到系统根目录
239239- ** ` cd ~ ` :** 切换到用户主目录
240240- ** ` cd - ` :** 切换到上一个操作所在目录
241241
242- ### 4.2. 目录的操作命令(增删改查)
242+ ### 目录的操作命令(增删改查)
243243
244244- ** ` mkdir 目录名称 ` :** 增加目录。
245245- ** ` ls/ll ` ** (ll 是 ls -l 的别名,ll 命令可以看到该目录下的所有目录和文件的详细信息):查看目录信息。
@@ -249,14 +249,14 @@ Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层
249249- ** ` cp -r 目录名称 目录拷贝的目标位置 ` :** 拷贝目录(改),-r 代表递归拷贝 。注意:cp 命令不仅可以拷贝目录还可以拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r 递归。
250250- ** ` rm [-rf] 目录 ` :** 删除目录(删)。注意:rm 不仅可以删除目录,也可以删除其他文件或压缩包,为了增强大家的记忆, 无论删除任何目录或文件,都直接使用` rm -rf ` 目录/文件/压缩包。
251251
252- ### 4.3. 文件的操作命令(增删改查)
252+ ### 文件的操作命令(增删改查)
253253
254254- ** ` touch 文件名称 ` :** 文件的创建(增)。
255255- ** ` cat/more/less/tail 文件名称 ` ** :文件的查看(查) 。命令 ` tail -f 文件 ` 可以对某个文件进行动态监控,例如 tomcat 的日志文件, 会随着程序的运行,日志会变化,可以使用 ` tail -f catalina-2016-11-11.log ` 监控 文 件的变化 。
256256- ** ` vim 文件 ` :** 修改文件的内容(改)。vim 编辑器是 Linux 中的强大组件,是 vi 编辑器的加强版,vim 编辑器的命令和快捷方式有很多,但此处不一一阐述,大家也无需研究的很透彻,使用 vim 编辑修改文件的方式基本会使用就可以了。在实际开发中,使用 vim 编辑器主要作用就是修改配置文件,下面是一般步骤: ` vim 文件------>进入文件----->命令模式------>按i进入编辑模式----->编辑文件 ------->按Esc进入底行模式----->输入:wq/q! ` (输入 wq 代表写入内容并退出,即保存;输入 q!代表强制退出不保存)。
257257- ** ` rm -rf 文件 ` :** 删除文件(删)。
258258
259- ### 4.4. 压缩文件的操作命令
259+ ### 压缩文件的操作命令
260260
261261** 1)打包并压缩文件:**
262262
@@ -281,7 +281,7 @@ Linux 中的打包文件一般是以.tar 结尾的,压缩的命令一般是以
281281- 将 /test 下的 test.tar.gz 解压到当前目录下可以使用命令:** ` tar -xvf test.tar.gz ` **
282282- 将 /test 下的 test.tar.gz 解压到根目录/usr 下:** ` tar -xvf test.tar.gz -C /usr ` ** (- C 代表指定解压的位置)
283283
284- ### 4.5. Linux 的权限命令
284+ ### Linux 的权限命令
285285
286286操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在 Linux 中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。
287287
@@ -356,7 +356,7 @@ Linux 中的打包文件一般是以.tar 结尾的,压缩的命令一般是以
3563563 . 把 zookeeper 这个脚本添加到开机启动项里面,命令是:` chkconfig --add zookeeper `
3573574 . 如果想看看是否添加成功,命令是:` chkconfig --list `
358358
359- ### 4.6. Linux 用户管理
359+ ### Linux 用户管理
360360
361361Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
362362
@@ -375,7 +375,7 @@ Linux 系统是一个多用户多任务的分时操作系统,任何一个要
375375
376376` passwd ` 命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
377377
378- ### 4.7. Linux 系统用户组的管理
378+ ### Linux 系统用户组的管理
379379
380380每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同 Linux 系统对用户组的规定有所不同,如 Linux 下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
381381
@@ -387,7 +387,7 @@ Linux 系统是一个多用户多任务的分时操作系统,任何一个要
387387- ` groupdel 用户组 ` :要删除一个已有的用户组
388388- ` groupmod 选项 用户组 ` : 修改用户组的属性
389389
390- ### 4.8. 其他常用命令
390+ ### 其他常用命令
391391
392392- ** ` pwd ` :** 显示当前所在位置
393393
@@ -412,3 +412,67 @@ Linux 系统是一个多用户多任务的分时操作系统,任何一个要
412412- ** ` shutdown ` :** ` shutdown -h now ` : 指定现在立即关机;` shutdown +5 "System will shutdown after 5 minutes" ` :指定 5 分钟后关机,同时送出警告信息给登入用户。
413413
414414- ** ` reboot ` :** ** ` reboot ` :** 重开机。** ` reboot -w ` :** 做个重开机的模拟(只有纪录并不会真的重开机)。
415+
416+ ## Linux 环境变量
417+
418+ 在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的主目录(HOME)。
419+
420+ ### 环境变量分类
421+
422+ 按照作用域来分,环境变量可以简单的分成:
423+
424+ - 用户级别环境变量 : ` ~/.bashrc ` 、` ~/.bash_profile ` 。
425+ - 系统级别环境变量 : ` /etc/bashrc ` 、` /etc/environment ` 、` /etc/profile ` 、` /etc/profile.d ` 。
426+
427+ 上述配置文件执行先后顺序为:` /etc/enviroment ` –> ` /etc/profile ` –> ` /etc/profile.d ` –> ` ~/.bash_profile ` –> ` /etc/bashrc ` –> ` ~/.bashrc `
428+
429+ 如果要修改系统级别环境变量文件,需要管理员具备对该文件的写入权限。
430+
431+ 建议用户级别环境变量在 ` ~/.bash_profile ` 中配置,系统级别环境变量在 ` /etc/profile.d ` 中配置。
432+
433+ 按照生命周期来分,环境变量可以简单的分成:
434+
435+ - 永久的:需要用户修改相关的配置文件,变量永久生效。
436+ - 临时的:用户利用 ` export ` 命令,在当前终端下声明环境变量,关闭 shell 终端失效。
437+
438+ ### 读取环境变量
439+
440+ 通过 ` export ` 命令可以输出当前系统定义的所有环境变量。
441+
442+ ``` bash
443+ # 列出当前的环境变量值
444+ export -p
445+ ```
446+
447+ 除了 ` export ` 命令之外, ` env ` 命令也可以列出所有环境变量。
448+
449+ ` echo ` 命令可以输出指定环境变量的值。
450+
451+ ``` bash
452+ # 输出当前的PATH环境变量的值
453+ echo $PATH
454+ # 输出当前的HOME环境变量的值
455+ echo $HOME
456+ ```
457+
458+ ### 环境变量修改
459+
460+ 通过 ` export ` 命令可以修改指定的环境变量。不过,这种方式修改环境变量仅仅对当前 shell 终端生效,关闭 shell 终端就会失效。修改完成之后,立即生效。
461+
462+ ``` bash
463+ export CLASSPATH=./JAVA_HOME/lib; $JAVA_HOME /jre/lib
464+ ```
465+
466+ 通过 ` vim ` 命令修改环境变量配置文件。这种方式修改环境变量永久有效。
467+
468+ ``` bash
469+ vim ~ /.bash_profile
470+ ```
471+
472+ 如果修改的是系统级别环境变量则对所有用户生效,如果修改的是用户级别环境变量则仅对当前用户生效。
473+
474+ 修改完成之后,需要 ` source ` 命令让其生效或者关闭 shell 终端重新登录。
475+
476+ ``` bash
477+ source /etc/profile
478+ ```
0 commit comments