初始Linux操作系统
一、操作系统
1、操作系统概述
操作系统(operation system,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。
没由安装操作系统的计算机,被称为 裸机。
- 如果在 裸机 上运行自己所编写的程序,就必须用计算机语言书写程序。
- 如果计算机上安装了操作系统,就可以在操作系统上安装支持的高级语言环境,用高级语言开发程序。
2、操作系统分类
(1)桌面操作系统
- Windows系列用户群体大
- macOS适合于开发人员
- Linux应用软件少
(2)服务器操作系统
Linux
- 安全、稳定、免费
- 占有率高
Windows server - 付费
- 占有率低
(3)嵌入式操作系统
- Linux
(4)移动设备操作系统
- iOS
- 安卓Android(基于Linux)
3、虚拟机
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
- 虚拟系统通过生成现有操作系统的全新虚拟镜像,具有真实操作系统完全一样的功能
- 进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响
- 而且能够在现有系统与虚拟镜像之间灵活切换的一类操作系统
二、操作系统的发展史
1、unix
1965年之前的时候,电脑并不像现在一样普遍,它可不是一般人能碰的起的,除非是军事或者学院的研究机构,而且当时大型主机至多能提供30台终端(30个键盘、显示器),连接一台电脑。
为了解决数量不够用的问题
- 1965年左后由贝尔实验室加入了麻省理工学院以及通用电气合作的计划–该计划要建立一套多使用者(multi-user)、多任务(multi-processor)、多层次(multi-level)的MULTICS操作系统,想让大型主机支持300台终端
- 1969年前后这个项目进度缓慢,资金短缺,贝尔实验室退出了研究
- 1969年从这个项目中退出的 Ken Thompson 当时在实验室无聊时,为了让一台空闲的电脑上能够运行"星际旅行(Space Travel) "游戏,在8月份左右趁着其妻子探亲的时间,用了1个月的时间,使用汇编写出了Unix操作系统的原型
- 1970年,美国贝尔实验室的 Ken Thompson,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母) ,并且他用B语言写了第一个UNIX操作系统
- 1971年,同样酷爱·星际旅行(Space Travel) 的Dennis M.Ritchie为了能早点儿玩上游戏,加入了Thompson 的开发项目,合作开发UNIX,他的主要工作是改造B语言,因为B语言的跨平台性较差
- 1972年,Dennis M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言
- 1973年初,C语言的主体完成,,Thompson 和Ritchie 迫不及待地开始用它完全重写了现在大名鼎鼎的Unix操作系统
2、C语言
- 在把UNIX移植到其他类型的计算机上使用时,C语言强大的移植性(Portability)在此显现
- 机器语言和汇编语言都不具有移植性,为x86开发的程序,不可能在Alpha、SPARC和ARM等机器上运行
- 而c语言程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后格C源代码编译、连接成目标二进制文件之后即可运行
3、minix
- 因为AT&T (通用电气) 的政策改变,在Version 7 Unix 推出之后,发布新的使用条款,将UNIX源代码私有化,在大学中不再能使用UNIX源代码
- Andrew S.Tanenbaum (塔能鲍姆)教授为了能在课堂上教授学生操作系统运作的细节,决定在不使用任何AT&T的源代码前提下,自行开发与UNIX兼容的操作系统,以避免版权上的争议以小型UNIX (mini-UNIX)之意,格它称为MINIX
4、Linux
- 1991年林纳斯(Linus)就读于赫尔辛基大学期间,对Unix产生浓厚兴趣,尝试着在Minix上做一些开发工作
- 因为Minix只是教学使用,因此功能并不强,林纳斯经常要用他的终端仿真器(Terminal Emulator)去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了Linux第一个内核的雏形,当时,他年仅21岁!
- 林纳斯利用GNU的bash当做开发环境, qcc当做编译工具,编写了Linux内核,一开始Linux并不能兼容Unix
- 即Unix上跑的应用程序不能在Linux上跑,即应用程序与内核之间的接口不一致
- 一开始Linux只适用于386,后来经过全世界的网友的帮助,最终能够兼容多种硬件
三、Linux内核及发行版本
1、Linux内核版本
- 内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层
- Linux内核版本又分为稳定版和开发版,两种版本是相互关联,相互循环
- 稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动程序
- 开发版:由于要试验各种解决方案,所以变化很快
- 内核源码网址: http//www.kernel.org.
2、Linux发行版本
- Linux发行版(也被叫做GNU/Linux发行版)通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件
- 常见的发行版本如下
- Ubuntu
- Redhat
- Fedora
- opensUSE
- Linux Mint
- Debian
- Manjaro
- Mageia
- Centos
- Arch
四、Linux常见命令
1、命令行提示字符
[root@localhost ~]#
[当前登录系统的用户@主机名称 当前所在的目录]#
# 表示为管理员登录
$ 表示为普通用户登录
2、切换用户
su 用户名 #切换后所在目录不变
su - 用户名 #切换后所在目录变成用户家目录
3、查看当前主机的完整名称
hostname
4、设置主机名
-------临时设置主机名--------
hostname 主机名
--------永久设置主机名---------
hostnamectl set-hostname 主机名
或
vi /etc/hostname(设置完后需重启系统才生效)
按i键先删除旧主机名,再输入新主机名(只有第一行有效)
按ESC键,再按SHIFT + “:” 组合键,输入 wq ,再按回车键退出
5、查看当前系统和内核版本
---------查看当前系统版本信息-----------
cat /etc/redhat-release
或
cat /etc/*release
----------查看当前内核版本-----------
uname -r
6、修改网卡IP
----------临时修改网卡IP---------
ifconfig ens33 192.168.80.3/24
或
ifconfig ens33 192.168.80.3 netmask 255.255.255.0
----------永久修改网卡IP-----------
vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet #设置网卡类型,“Ethernet”表示以太网
DEVICE=ens33 #设置网卡的名称
ONBOOT=yes #设置网卡是否在 Linux 操作系统启动时激活
BOOTPROTO=static #设置网卡的配置方式,“static”表示使用静态IP地址,“dhcp”时表示动态获取地址
IPADDR=192.168.80.3 #设置网卡的 IP 地址
NETMASK=255.255.255.0 #设置网卡的子网掩码
GATEWAY=192.168.80.2 #设置网卡的默认网关地址
DNS1=192.168.80.2 #设置DNS服务器的 IP 地址
7、重启网卡
----------重启网卡----------
systemctl restart network #重启所有的网卡
ifdown ens33 ; ifup ens33
ifdown ens33 #关闭某个网卡
ifup ens33 #启动某个网卡
ifconfig ens33 down #临时禁用某个网卡
ifconfig ens33 up #重新激活某个网卡(不会更新IP地址)
8、查看网卡地址
ifconfig
或
ip a
9、添加静态路由条目
临时添加路由(重启network服务失效)
----------临时添加路由(重启network服务失效)----------
方法一:
route add -net 192.168.3.0/24 gw 192.168.8.2 [dev ens33]
-net:指定目标网段的地址
gw:指定下一跳路由器的 IP 地址
dev: 为路由指定的输出接口
-----------查看路由表条目--------
route -n
------------删除静态路由条目----------
route del -net 192.168.3.0/24
方法二:
ip route add 192.168.15.0/24 via 192.168.80.2 [dev ens33]
永久添加路由(重启network服务生效)
--------永久添加路由(重启network服务生效)---------
方法一:
vi /etc/sysconfig/static-routes
any net any gw 192.168.80.2
any net 192.168.3.0/24 gw 192.168.80.2
any net 10.0.0.0 netmask 255.0.0.0 gw 192.168.80.2
any host 192.168.100.100 gw 192.168.80.2
systemctl restart network
方法二:
vim /etc/sysconfig/network-scripts/route-ens33
default via 192.168.80.2 dev ens33 #默认路由,另一种格式 0.0.0.0/0 192.168.14.254 dev ens33
10.211.6.0/24 via 192.168.80.2 dev ens33
192.168.100.200 via 192.168.14.254 dev ens33
systemctl restart network
10、测试网络连接
ping
traceroute (静态跟踪)
mtr (动态跟踪)
11、重启系统
reboot
init 6
shutdown -r now
12、关机
poweroff
init 0
shutdown -h now
shutdown -c
13、小知识:给命令行提示字符加颜色
PS1="\[\e[1;34m\][\u@\h \W]\\$\[\e[0m\] "
PS1="\[\e[1;35m\][\[\e[1;34m\]\u\[\e[1;36m\]@\[\e[1;34m\]\h \[\e[1;31m\]\w\[\e[1;35m\]]\[\e[1;36m\]\\$\[\e[0m\] "
\[\e[1;35m\][ ====> 定义左边的"["
\[\e[1;34m\]\u ====> 定义用户名
\[\e[1;36m\]@ ====> 定义"@"
\[\e[1;34m\]\h ====> 定义第一个点(.)之前的主机名
\[\e[1;31m]\w ====> 定义目录完整路径
\[\e[1;35m]] ====> 定义"]"
\[\e[1;36m\]\\$ ====> 定义"#"或"$"
\[\e[0m\] ====> 一段不显示字串的结束
14、补充:设置DNS服务器的IP地址及DNS域名
/etc/resolv.conf
是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名。最多可以指定3个不同的DNS服务器地址,优先使用第一个 DNS 服务器。对该文件所做的修改将会立刻生效。
nameserver 192.168.80.2 #定义DNS服务器的IP地址
注意:此配置文件与网卡配置文件的DNS1参数作用相同,哪个最后修改或重启,系统就使用哪个配置。