1、1969-1970 年, 贝尔实验室的 Dennis Ritchie (左图) 和 Ken Tompson (右图) 开发了 Unix 操作系统
丹尼斯·里奇(1941年9月9日-2011年10月12日),C语言之父,UNIX之父。曾担任朗讯科技公司贝尔实验室下属的计算机科学研究中心系统软件研究部的主任一职。1978年与布莱恩·科尔尼干(Brian W. Kernighan)一起出版了名著《C程序设计语言(The C Programming Language)》。此书已翻译成多种语言,被誉为c语言的圣经。2011年10月12日(北京时间为10月13日),丹尼斯·里奇去世,享年70岁。
肯尼斯·蓝·汤普森(英语:Kenneth Lane Thompson,1943年2月4日-),小名为肯·汤普森(英语:Ken Thompson),生于美国新奥尔良。为美国计算机科学学者与软件工程师,任职于贝尔实验室Entrisphere, IncGoogle Inc。与丹尼斯·里奇同为1983年图灵奖得主。他与丹尼斯·里奇设计了B语言、C语言,创建了Unix和Plan 9操作系统,编程语言Go的共同作者。发展正规表示法,写作了早期的电脑文字编辑器QED与ed,定义UTF-8编码,以及发展电脑象棋。
这俩大佬本来是想开发一个操作系统,但是开发着开发着,发现现有的编程语言不太好使,于是俩人一合计,先整个编程语言出来吧,于是 C 语言 就诞生了
Dennis Ritchie 大佬 2011 年就去天堂写代码了,Ken Tompson 大佬后来在 google,又参与发明了 Go 语言
2、Unix 火了之后,衍生出很多的分支,其中有一只为 “Minix”,由荷兰的 Andrew S. Tanenbaum 教授开发,MINIX 含义为 “小型的 UNIX”,源代码开放给大学教学和研究工作
3、1991 年,还在上学,读研的芬兰人 Linus Benedict Torvalds (1969年12月28日出生,当时 22 岁),基于 Minix 的启发,开发出了 Linux 的第一个版本,发到论坛上了,然后就火了~~ Linux 官方认可的标准发音 李na科斯
Linux 就是世界上第一大操作系统!!
本来,Linux 已经足以让他名垂菁史,2000 年之后,大佬觉得已有的 代码管理工具,不太方便用来管理 Linux 源码,就自己开发了一个,也就是咱们今天使用的 git !!!
git 也成了当今最主流的版本管理工具~~
Linus 大佬现在 50 多岁了, 但是仍然在互联网上非常活跃,在 油管 经常会拍一些视频
操作系统:
除了第二种方面,Linux 都是 No.1
Linux 严格意义来说只是一个 “操作系统内核”
Linux内核+各种配套的应用程序 => 完整的操作系统(发行版)
其中有一个非常牛的发行版,叫做 android~~
由于 Linux 是一个完全开源免费的内核,因此有些公司 / 开源组织又基于 Linux 内核,提供了不同的配套程序,这就构成了不同的 “发行版”
企业中最主要使用的发行版是 RedHat (红帽),但是 RedHat 是一个收费的系统 (报价参考 Red Hat® Enterprise Linux® ,因此我们课堂上学习使用的是基于红帽系统的的社区免费版本 CentOS
CentOS 和 RedHat 的关系:
1、基础命令:
Linux 虽然也有图形化界面,但是在 服务器 / 嵌入式设备 上往往都是通过命令行的方式操作的,因此学习 Linux 命令就是使用 Linux 的重要基础
使用命令相比于使用图形界面主要有以下好处:
Windows 也有命令 (也就是 cmd ),只是对于普通用户来说很少使用
2、系统编程 & 网络编程
Linux 自身提供了一些 API,供程序猿调用来完成一些更复杂的编程任务 (比如文件操作,多线程编程,socket 编程等)
由于 Java 跨平台的特性,这部分功能已经被 Java 自身封装好了 (流对象,Thread 对象,Socket 对象等),所以这部分内容我们不必再学习了
C++标准库相比于 Java 弱很多
虽然 C++ 标准库里面已经有多线程了,但是网络编程至今仍然不支持~~ 因此他们要想进行相关的编程,就只能使用系统 API
C++ 那边学 Linux,指令+系统编程+网络编程。Java 这边学 Linux 指令
3、部署 JavaWeb 项目
咱们作为 Java 程序猿,在实际开发中,一般不需要使用系统原生的 API,但是经常会涉及到一些和 Linux 相关的部署,或者调试的工作
比如做了一个网站,后端就需要部署到服务器上 (才能被各个用户来访问到),这个部署的过程就需要涉及到一些基本的 Linux 操作了~~
要想学习 Linux,需要先有一个 Linux 的环境
主要有四种:
直接安装在物理机上,重装系统,但是由于 Linux 桌面使用起来非常不友好 [不推荐].
使用虚拟机软件,软件在你的机器上虚拟出一些硬件来,构成一个 “假的” 电脑,然后在虚拟的机器里 搭建 Linux,但是由于当前的虚拟机软件 (VMWare / Virtual Box…),存在一些 bug,会导致环境上出现各种莫名其妙的问题,比较折腾 [非常不推荐]
使用 WSL (Windows Subsystem for Linux),这个是 Windows 近几年开发的新功能,在 Windows 系统内集成了一个 Linux,但是目前这个技术还不够成熟 [暂时不推荐]
使用云服务器,可以直接在 腾讯云,阿里云或华为云 等服务器厂商处直接购买一个云服务器 [墙裂推荐]
云服务器,本质上还是虚拟机,只不过这个虚拟机不是在本地,在人家机房里,环境搭建简单,避免折腾
最大的区别,云服务器会同时给你一个外网IP !!
部署在云服务器上的项目可以直接被外网访问到,这个时候就和一个公司发布一个正式的网站没有任何区别,也就能让我们自己写的程序,真的去给别人去使用
能够在外网被访问是非常有意义的,这样我们以后面试的时候就可以提前部署好项目,现场给面试官演示了
其次的区别,云服务器非常稳定的,基本也没啥坑,不太需要折腾~~
1、选机器的详细配置,CPU,内存,硬盘,带宽是多少.…… 都挑最便宜的选
如 2 核就是 2 核心的 CPU,2G 就是内存是 2GB,4M 是指带宽是4Mbps
2、选机房的位置 (活动地域),北京/上海/成都… 无所谓,随便选~~
3、选系统镜像 (给你的云服务器装哪个系统)
主要选择 Centos 7 系列~~
在云服务器后台页面,会有一个 控制台,阿里云腾讯云华为云等等都是类似的
咱们买的服务器有两种情况:
买哪种都行,但是你得记得你买的是哪个~~
可以在控制台中找到自己买的服务器,点进去能够看到服务器的 IP 地址
蓝色方框为公网 ip 地址,稍后我们就会使用这个 ip 登陆服务器
首次使用,设置 root 密码:点击服务器-更多,点击重置密码 (这个环节可能需要手机短信验证),root 密码建议设置得稍微复杂一些,否则容易被黑客入侵,如果真的被入侵,重装系统即可
在这个环节我们最重要的是得到三个信息:
- 服务器的外网 IP
- 服务器的管理员账户 (固定为 root)
- 管理员账户密码 (在腾讯云网站上设置的)
这三个信息是我们登陆到 Linux 上的必要条件
使用 终端工具 来远程登录到服务器上,这是工作中操作 Linux 服务器的最常见方式~
——什么是终端软件:
终端软件是一个客户端程序,可以通过网络,和远程的服务器建立网络连接,客户端这边就可以通过命令对主机进行一些操作
常见的终端软件:
XShell
Putty
MobaXTerm
Iterm2
SecureCRT
…
——下载安装 XShell:
注意: XShell 只支持 windows,如果你是苹果电脑 (mac),需要使用其他的工具了
Xshell 提供了两种授权方式:
企业版:收费
家庭 / 教育版:免费
我们选择 家庭 / 教育 版即可,点下载,下载的时候需要填一下名字和邮箱,只需 Xshell
下载链接会被发送到填写的邮箱中
——使用 XShell 登陆主机:
新建会话——输入名称——粘贴主机号——连接
弹出窗口,输入用户名 root
,勾选记住,确认
弹出窗口,输入密码,勾选记住,确认
~
表示当前目录为 home 目录
#
表示管理员,也可能是 $
表示用户首次连接服务器,需要新建会话,后续使用,直接打开上次的会话就行 (用户名,P,密码,都不需要重复输入了)
打开会话,双击,即可进入服务器
当前是通过网络来登录到云服务器的,要想能登录,必须得有网!
后续和 Linux 服务器之间的交互,都是基于命令来完成的!! !和 windows 上这种基于图形化界面的交互方式是截然不同的
Linux 下有两种用户:超级用户(root)、普通用户。
我们的服务器买好了,默认是 root 用户。但是 root 用户权力比较大,一旦使用不当可能会造成严重后果 (例如 rm -rf /)。因此我们真正在公司中不会直接使用 root 用户来操作服务器
1). 创建用户
命令 useradd [用户名]
功能 创建新的用户
示例:
useradd test
2). 配置密码
命令 passwd [用户名]
功能 设置或修改用户密码
例:
passwd test
注意: 输入密码的时,在控制台中不会有提示,但实际上已经输入进去了
3). 切换用户
命令: su [用户名]
功能: 切换用户。
例如,要从 root 用户切换到普通用户 user,则使用 su user。
要从普通用户 user 切换到 root 用户则使用 su root(root可以省略),此时系统会提示输入 root 用户的口令
访问一个文件的人可能分成三种类别
命令 ll 显示了一个文件的详细信息,解读如下图:
a) 文件类型
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
b) 基本权限
功能: 设置文件的访问权限
格式: chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
chmod命令权限值的格式
① 用户表示符+/-=权限字符
实例:
\# chmod u+w /home/abc.txt
\# chmod o-x /home/abc.txt
\# chmod a=x /home/abc.txt
② 三位8进制数字
实例:
# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt
类似的还有 chgrp, chown 命令…