操作系统(Operating System,OS)是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的桥梁。
谈到操作系统就需要谈到Unix,UNIX系统是一个分时系统,在60年代末,Kenneth Thompson和Dennis Ritchie都曾参加过交互方式分时系统Multics的设计,由于中途贝尔实验室退出了Multics项目。Ken后来为满足他的游戏star travel需要,在此基础上,K.Thompson于1969年在小型计算机上开发UNIX系统,后于1970年投入运行。1971-1972 年,K的同事丹尼斯•里奇发明了传说中的C语言,这是一种适合编写系统软件的高级语言,它的诞生是 UNIX 系统发展过程中的一个重要里程碑。
随后出现了各种版本的 UNIX 系统,目前常见的有 Sun Solaris、FreeBSD、IBM AIX、HP-UX 等。
肯•汤普森和丹尼斯•里奇因在计算机领域做出的杰出贡献,于 1983 年获得了计算机科学的最高奖——图灵奖。
Linux 内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 UNIX 操作系统 Minix 太难用了,于是决定自己开发一个操作系统(其实在很大程度上Minix影响了linux)。第 1 版本于 1991 年 9 月发布,当时仅有 10000 行代码,linus当时主要是实现了内核的编写,后续linus将linux内核代码放到ftp上告知大家版本信息,慢慢有许多人加入到linux维护,慢慢将linux完善。当然也有人认为,尽管Linux的设计思想受到了MINIX的很大影响,但是这种影响并不是技术上的,更多的是理念上的,Linux并没有使用UNIX的一行代码,是Linux完全从头构建的操作系统。因此,Linux不是UNIX的衍生版,它是一个全新的操作系统。
Linux 在设计之初,就是基于 Intel x86 系列 CPU 架构计算机的,它是一个基于 POSIX 的多用户、多任务并且支持多线程和多 CPU 的操作系统,它是由世界各地成千上万的程序员设计和开发实现的,当初开发 Linux 系统的目的就是建立不受任何商业化软件版权制约的、全世界都能自由使用的类 Unix 操作系统兼容产品。
在过去的 20 年里,Linux 系统主要被应用于服务器端、嵌入式开发和 PC 桌面 3 大领域,其中服务器端领域是重中之重。例如,我们熟知的大型、超大型互联网企业(百度、腾讯、Sina、阿里等)都在使用 Linux 系统作为其服务器端的程序运行平台,全球及国内排名前 1000 的 90% 以上的网站使用的主流系统都是 Linux 系统。
软件产业在70年代成就了两位针锋相对的领袖人物,来自哈佛大学的比尔·盖茨和Richard M.Stallman。前者宣布了Copyright(版权)时代的到来,并构建了微软帝国的辉煌;后者于1984年创立自由软件体系GNU,拟定普遍公用版权协议(GeneralPublicLicense,简称GPL),今天Linux的成功就得益于GPL协议。
所有GPL协议下的自由软件都遵循着Richard M. Stallman的"Copyleft"(非版权)原则:即自由软件允许用户自由拷贝、修改和销售,但是对其源代码的任何修改都必须向所有用户公开。
GNU计划和自由软件基金会FSF(the Free Software Foundation)是由Richard M. Stallman 于1984 年一手创办的。旨在开发一个类似UNIX 并且是自由软件的完整操作系统:GNU系统(GNU 是"GNU’s Not Unix"的递归缩写)。
各种使用Linux作为核心的GNU 操作系统正在被广泛的使用。虽然这些系统通常被称作"Linux",但是Stallman 认为,严格地说,它们应该被称为GNU/Linux系统。
到上世纪90 年代初,GNU 项目已经开发出许多高质量的免费软件,其中包括有名的emacs 编辑系统、bash shell 程序、gcc 系列编译程序、gdb 调试程序等等。这些软件为Linux 操作系统的开发创造了一个合适的环境。这是Linux 能够诞生的基础之一,以至于目前许多人都将Linux 操作系统称为“GNU/Linux”操作系统。
Linux 其实就是一个操作系统最底层的核心及其提供的核心工具。他是 GNU GPL 授权模式,所以,任何人均可取得原始码与可执行这个核心程序,并且可以修改。此外,因为Linux 参考POSIX 设计规范,于是兼容于Unix 操作系统,故亦可称之为类Unix。
在 Linux 内核的发展过程中,各种 Linux 发行版本起了巨大的作用,正是它们推动了 Linux 的应用,从而让更多的人开始关注 Linux。因此,把 Red Hat、Ubuntu、SUSE 等直接说成 Linux 其实是不确切的,它们是 Linux 的发行版本,更确切地说,应该叫作“以Linux为核心的操作系统软件包”。
Linux 的各个发行版本使用的是同一个 Linux 内核,因此在内核层不存在什么兼容性问题,每个版本有不一样的感觉,只是在发行版本的最外层(由发行商整合开发的应用)才有所体现。
Linux 的发行版本可以大体分为两类:
商业公司维护的发行版本,以著名的 Red Hat 为代表;
社区组织维护的发行版本,以 Debian 为代表。
常见Linux发行版本:
Debian是包括Ubuntu在内许多发行版本的上游。Debian是社区类Linux的典范,迄今为止最遵循GNU规范的Linux系统。Debian分为三个版本分支:stable,testing,unstable。unstable为最新测试版本,包含最新的软件包,但是有相对较多bug,不是很稳定适合桌面用户;testing版本是经过unstable测试过相对较为稳定同时也支持新技术。stable一般用于服务器,软件包比较稳定安全;testingDebian最具特色的是apt-get/dpkg包管理方式。RedHat的Yum也是模仿Debian的APT方式,在二进制文件发行方式中,APT应该是最好的了。
Ubuntu 基于知名的 Debian Linux 发展而来,界面友好,容易上手,对硬件的支持非常全面,是目前最适合做桌面系统的 Linux 发行版本,而且 Ubuntu 的所有发行版本都免费提供。其界面友好,容易上手,是最适合做桌面系统的Linux发行版本。
Red Hat(红帽公司)创建于 1993 年,是目前世界上资深的 Linux 厂商,也是最获认可的 Linux 品牌。
Red Hat 公司的产品主要包括 RHEL(Red Hat Enterprise Linux,收费版本)和 CentOS(RHEL 的社区克隆版本,免费版本)多用于活动,演示和实验,对最终用户免费、Fedora Core(由 Red Hat 桌面版发展而来,免费版本)
SuSE Linux 以 Slackware Linux 为基础,原来是德国的 SuSE Linux AG 公司发布的 Linux 版本,1994 年发行了第一版,早期只有商业版本,2004 年被 Novell 公司收购后,成立了 OpenSUSE 社区,推出了自己的社区版本 OpenSUSE。
版本名称 | 网 址 | 特 点 | 软件包管理器 |
---|---|---|---|
Debian Linux | www.debian.org | 开放的开发模式,且易于进行软件包升级 | apt |
CentOS | www.centos.org | CentOS 是一种对 RHEL(Red Hat Enterprise Linux)源代码再编译的产物,由于 Linux 是开发源代码的操作系统,并不排斥样基于源代码的再分发,CentOS 就是将商业的 Linux 操作系统 RHEL 进行源代码再编译后分发,并在 RHEL 的基础上修正了不少已知的漏洞 | rpm |
SUSE Linux | www.suse.com | 专业的操作系统,易用的 YaST 软件包管理系统 | YaST(rpm),第三方 apt (rpm)软件库(repository) |
Ubuntu | www.ubuntu.com | 优秀已用的桌面环境,基于 Debian 构建 | apt |
目前国内使用CentOS企业越来越多,几乎和RHEL一样,完全免费,也可作为学习测试环境时的优选。下面就以CentOS7示例进行安装。
通过VMware来进行CentOS安装,对硬盘200G大概规划: /100G /boot1G /data50G 内存2G swap4G
linux系统提供两种交互窗口:
Shell是Linux系统的用户界面,提供了用户与内核交互操作的接口。用户通过shell输入命令送入内核执行,也称为命令解释器,是一种高级程序设计语言。Shell种类又分为多个不同的shell,bash是GNU计划中重要的工具软件之一,也是linux的标准shell,与sh兼容。CentOS默认使用的就是bash shell。
常见的shell有:
#如何查看当前shell类型?
[root@centos7 ~]# echo $SHELL
/bin/bash
#查看当前系统支持的shell类型
[root@centos7 ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
#查看当前提示符格式
[root@centos7 ~]# echo $PS1
[\u@\h \W]\$
\u表示当前用户
\h表示主机命简称即主机的第一个名字
\W表示当前工作目录即用basename命令取得工作目录的名称
$表示提示符(普通用户显示为$,root用户显示为# )
另外其他符号表示如下:
\H表示完整的主机名
\w表示完整的工作目标,用户的家目录为~
\t表示24小时时间格式为时:分:秒
\T表示12小时时间格式为时:分:秒
\A表示24小时时间格式为时:分
\!表示命令历史数
\#表示开机命令历史数
\d表示日期,格式为星期 月 日
\v表示BASH的版本信息
这样我们就可以参数对我们的环境变量提示进行样式调整,例如将当前用户环境变量调整前景色为青色,字体为粗体,及当前时间。
[root@centos7 ~]#PS1="\[\e[1;36m\][\t \e[1;36m\u@\h \W]\\$\[\e[0m\]"
[08:06:46 root@centos7 ~]#
上面通过在shell中执行命令实现了各种功能,命令是如何执行实现的呢?后面会对Linux命令的执行过程及使用基础进行陈述。
Do one thing at a time,and do well.
一次只做一件事做到最好。 2020年11月28日
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。