社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python全栈 Linux基础之1.Linux初章

cupyter • 5 年前 • 426 次点击  

一、操作系统简介

操作系统 (Operation System,简称OS)
操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在 裸机 上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
裸机:
没有安装操作系统的计算机被称为裸机。
裸机的必要硬件:
CPU(中央处理器)、内存条、磁盘、声卡、显卡等。
操作系统是运行在CPU上的。
正常运行的必要软件:

  • 操作系统:调用硬件,使功能正常运行;
  • 一般软件:操作操作系统,间接调用硬件。

比喻:裸机是毛坯房,装上操作系统后就成了装修好的房子。

1.个人计算机PC(Personal Computer)操作系统–客户端

  • Windows系列:一般用户
  • MacOS:高等办公
  • Linux:程序开发

2.服务器操作系统

  • Linux:
    占有率高,免费,功能更齐全,为了解决多用户同时使用而诞生。
  • Windows:
    占有率低,收费。

3.嵌入式及移动移动设备操作系统

  • Linux(嵌入式)
  • iOS(基于Unix)
  • Android(基于Linux)

二、操作系统发展史

几个改变世界的人:
几个改变世界的人

1.简述:

Unix的诞生:
肯让自己开发的游戏运行
肯在完善Unix的时候,创造了C语言

公司介入:商业化,收费

比尔盖茨: IBM进军个人计算机 Dos系统 CPU生产:Intel 比尔盖茨与乔布斯交流之后推出Windows

Linux的出现与黑客组织有关 林纳斯读大学时,在Minux的基础上开发出Linux
雷蒙德:黑客,传播Linux,发起GNU,开发软件、开源

2.发展详述

Unix的诞生

大事件:

  • 1965年 ,人类为了研发一个多用途,多用户的操作系统。有三个著名的公司联合起来进行研发。贝尔实验室、通用电器公司(General Electrics;G.E.)及麻省理工学院(Massachusetts Institute of Technology;MIT)。
  • 1969年 由于项目渐渐迷失了方向(估计是 进度缓慢 然后 资金短缺) 最终 贝尔实验室(Bell Labs)退出了这个项目。
  • 1969年 肯.汤姆逊 为了他的游戏(Space Travel)星际旅游能够跑起来 找到了一台被淘汰的电脑 pdp-7 花了一个月的时间,写出了一个伟大的操作系统 Unix 的原型
  • 肯的另一个同事丹尼斯.里奇对Unix有着很大兴趣,他就在当时的一门高级语言 BCPL 的基础上开发了一种新的高级语言将Unix重新写了一遍.这个语言也就是后来大名鼎鼎的C语言
  • 1969年8月 芬兰一个叫做林纳斯 Linus.Torvalds的婴儿来到了这个世界。

尽管是为了一款游戏 . 但是事实就是如此 Unix和C诞生了,C与Unix很快成为全世界的主导开启了操作系统的新历史

由于Unix是开源的,这使得Unxi的功能和特性很快的被丰富。
贝尔实验室隶属于 AT&T公司(美国电话及电报公司).公司很快看到了商机.将Unix私有化,并注册Unix商标.这时的Unix价格非常的昂贵。
此时很多公司也都分分投靠 AT&T 并开发自己的Unxi版本.其中有著名的IBM公司。

Windows 和 MacOS 的恩恩怨怨

毫无疑问,Unix的诞生,对与计算机的发展起到了至关重要的作用。
时光来到了1975年,IBM的一个市场总监做了一个大胆的预测,他预测大概在20世纪末世界上个人计算机的数量将会普及。
那么这个预测就促使IBM开始进军个人电脑市场!那么就是因为这个大胆的假设和IBM的决定!!成就了世界两个巨无霸企业。
由于当时Unix价格昂贵,IBM一台个人电脑造价2w美元,操作系统都要花4w。所以IBM不得不放弃Unix。
但是操作系统与CPU又有着直接的关系,不同的cpu运行的操作系统是不一样的。而当时的主流CPU都是兼容Unix操作系统的.所以IBM只能选择一家小公司来生产cpu.这家公司就是Inter!!(没错,当时他还只是一个小公司)。

当IBM拥有了CPU之后,微软的创始人 比尔盖茨 花了5W美金 买下了他同学利用一个月的时间写的操作系统.对方欣喜若狂,简直快要疯了!!
比尔盖茨得到之后,将这个操作系统 命名为DOS .并且带上操作系统.找到了他妈妈 .当时是IBM董事会的成员.然后与IBM签订了合约!! 那么他的同学这时候就真的疯了!!
由于IBM需要廉价的计算机。微软可以提供廉价的DOS系统.所以顺水推舟 .但是聪明 的比尔盖茨 不是卖操作系统,而是卖操作系统的许可。每台IBM兼容机都捆绑一个DOS。比尔盖茨的招数就是捆绑,从dos到IE都是如出一辙,当然特别奏效。IBM认为硬件才是赚钱的根本,所以才会和年轻比尔盖茨合作.结果电脑进入市场,反响非常好,比尔盖茨也就成为了千万富豪!!

在市场的另一边 另外一小伙子在一个车库成立了一家公司! 他也在卖电脑 .这个人就是 乔布斯
当时乔布斯的苹果公司 采用的是unix 操作系统 后期发展为 MacOS .由于 乔布斯 对产品的卓越追求,让他不断的改进Apple的电脑,震撼了整个个人电脑市场,因此乔布斯身价过亿。
Apple蒸蒸日上,比尔盖茨不爽了! 不可否认乔布斯和比尔盖茨都很伟大,但是不同的是比尔盖茨更狡猾!! 有一天比尔盖茨找到了乔布斯,大加赞赏了他的伟大,然后卑微的祈求一份Apple的产品原型,并承诺微软的一切成果都是苹果的。不可一世的乔布斯答应了,比尔盖茨得到了产品原型机,马上组织团队研发,并在1990年5月份推出 Windows3.0 !!!从而开始了微软在操作系统上的垄断地位。
也是从这一刻开始,微软和苹果的 血海深仇 就此结下。

Linux的传奇

那么在 微软的Windows 和 苹果的 MacOS 大战的时候,Unix在干嘛呢?? Unix正忙着打官司,然后一直卖着它 昂贵的操作系统 也正是这些时间,错过了个人计算机 操作系统发展的黄金时间!
Minix:
那么时间 来到了 1991年 !! 还记得22年前在 芬兰出生的那个男孩吗?林纳斯 他现在正在读大学.学校有一门课程叫做 操作系统 ,但是由于 Unix的闭源,林纳斯的大学教授就没法讲课了. 但是那个年代的大牛就是这么牛逼,这个教授一狠心 就自己写了一个操作系统,用来上课. 这个操作系统具备了Unix的基本功能, 由于比较小巧,所以叫做 Minix。
Linux诞生:
但是Minix 和一开始的 Unix 一样.不具备移植性 在其他的机器上面 没法安装。
而 林纳斯 有一台自己的电脑,却不能将Minix运行在自己的电脑上,所以 林纳斯 也不得不走上了他无数前辈的道路,自己写一个操作系统!
仅仅两个月后 林纳斯 就完成了第一个版本的操作系统.并通过自己的名字命名.叫做Linux . 随后他将源码上传到网络.让大家一起来完善其功能.可是那时的Linux一直只流行在在大学的校园.
那么Linux是如何推广到全球,最终 成为 操作系统 的 王者的呢? 这里就不得不提到一个人!! ESR 埃里克·雷蒙德(Eric Raymond)
GNU和Linux的结合:
雷蒙德 是何许人也? 著名的黑客。有一部纪录片Revolution OS(操作系统革命) 这样描述的

在一次开发者大会上,雷蒙德 遇到一个微软工程师,他看到对方衣服上的标志 就问他是不是在微软工作.

那位工程师 略带一点 嘲讽和鄙视 就反问 雷蒙德 你是干什么的

雷蒙德 微微一笑 留下了一句很牛逼的话:我 是你们可怕的恶梦。。。

当然雷蒙德 是微软的恶梦吗?不 他 不仅仅是 微软的噩梦 ,他 是一切收费软件公司的恶梦。微软靠卖软件大发特发。这让雷蒙德很不满。他认为所有软件都应该自由的让人们使用。

所以 1983年,雷蒙德 发起了“GNU(GNU’s Not Unix的递归缩写)”计划。GNU激发了软件界极大的热情,世界各地的软件奇才全部加入进来,开发出很多优秀的软件 比如 C语言编译器,gcc 等等。而且 很多免费软件的水平甚至都已经超过了相应的付费版本。

可是还有一个问题没有解决。GNU编写了很多自由免费的软件,可是这些免费软件却运行在收费 的Unix上。所以雷蒙德 这个时候就很郁闷… 然后承诺大家两年内重新写一个操作系统,但是 黑客是不愿意按部就班做事的。就这样五年时间过去了,操作系统还没出来!!。当然 历史总是如此的巧合!!雷蒙德 懊恼没有操作系统。而 芬兰那边,林纳斯 只有一个操作系统内核 Linux 而没有相应的应用软件。他们在各自的领域奋斗多年之后,命运终于安排他们走到了一起 最终 Linux 加入了 GNU 计划!!
然后,整个世界都变了!!今天在全球前500台超级计算机中,有413台选用Linux。这些计算机遍布世界各地的多个行业,大到航天科技,小到IC卡芯片,全都由Linux所主宰。在移动领域,Android 就是 Linux 内核。服务器也是Linux独领风骚!Linux就像病毒一样,在一群黑客手中,席卷全球!我,是你们可怕的噩梦! Linux已然完成对微软的复仇!
它是一个标志! 是一群黑客追求自由,共享所开启的一个新的时代!!

三、Linux操作系统

Linux系统分为Linux内核和发行版。

1.Linux内核(Kernel)

操作系统内核是指大多数操作系统的核心部分。
它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。
操作系统内核通常运行进程,并提供进程间的通信。
Linux内核版本又分为 稳定版 开发版 ,两种版本是相互关联、相互循环。
稳定版 :具有工业级强度,可以广泛地应用和部署;
开发版 :由于要试验各种解决方案,所以变化很快。
内核源码网址: http://www.kernel.org

2.Linux发行版

即我们常说的Linux操作系统,也是由Linux内核与各种常用软件的集合产品,类似Windows包含了桌面环境。
全球大约有数百款的Linux系统版本,每个系统版本都有自己的特性和目标人群。

四、Ubuntu简介及操作简单演示

1.简介

Ubuntu(乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,主要依赖Canonical有限公司的支持,同时也有很多来自Linux社区的热心人士提供协助。
作为Linux发行版之一,Canonical 的Ubuntu 胜过其他所有的 Linux 服务器发行版 ,它简单易用同时又相当稳定,而且具有庞大的社区力量,用户可以方便地从社区获得帮助。
Ubuntu在服务器领域是妥妥的赢家。

※在Windows下安装虚拟机+Ubuntu的详细过程可参考 https://www.jianshu.com/p/2883f9af89db

2.Ubuntu的目录结构

如图
Ubuntu的主要目录

Ubuntu的主要目录

  • /:根目录,一般根目录下只存放目录,在 linux 下有且只有一个根目录,所有的东西都是从这里开始

  • /bin、/usr/bin:可执行二进制文件的目录,如常用的命令 ls、tar、mv、cat 等

  • /boot:放置 linux 系统启动时用到的一些文件,如 linux 的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub

  • /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt

  • /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有

    • /etc/inittab
    • /etc/fstab
    • /etc/init.d
    • /etc/X11
    • /etc/sysconfig
    • /etc/xinetd.d
  • /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下

    • ~ 表示当前用户的家目录
    • ~edu 表示用户 edu 的家目录
  • /lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助

  • /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下

  • /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载

  • /opt:给主机额外安装软件所摆放的目录

  • /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的文件有:/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等

  • /root:系统管理员root的家目录

  • /sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如 fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root 使用的命令,一般用户只能"查看"而不能设置和使用

  • /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下

  • /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内

  • /usr:应用程序存放目录

    • /usr/bin:存放应用程序
    • /usr/share:存放共享数据
    • /usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
    • /usr/local:存放软件升级包
    • /usr/share/doc:系统说明文件存放目录
    • /usr/share/man:程序说明文件存放目录
  • /var:放置系统执行过程中经常变化的文件

    • /var/log:随时更改的日志文件
    • /var/spool/mail:邮件存放的目录
    • /var/run:程序或服务启动后,其 PID 存放在该目录下

3.Ubuntu的常见快捷键

可以在 System Setting -> Keyboard -> Shortcuts 中查看各种快捷键。

  • 终端: Ctrl+Alt+T
  • 终端新建标签页: Ctrl+Shift+T
  • 终端复制粘贴: Ctrl+Shift+C , Ctrl+Shift+V
  • 显示常用快捷键: 按住**Super(Win)**不动
  • 截活动窗口图: Alt+Print
  • 区域截图: Shift+Print
  • 源切换: Super(Win)+Space
  • 安装: sudo apt-get install
  • 卸载: sudo apt-get remove
  • 移除没用的包: sudo apt-get autoremove

4.Ubuntu的常见设置

语言设置

  • 通过右上角的 设置按钮 找到 System Settings
  • 然后选中 Language Support
  • Ubuntu的语言选项有多种语言,将第一语言设置为中文(因为如果中文显示不了的,会使用英文显示)
  • 设置完成后.选择 Apply System-wide (应用到整个系统)这时,输入管理员密码以确认,最后点击 Close 按钮关闭对话框,重启电脑。

语言设置

注意:

  • 不是点击,是拖动,分为第一语言、第二语言…;
  • 重启成功后,会让你选择文件夹名称显示.如果是为了学习.我建议大家保持原来的文件夹名称,这样便于后期在学习中熟悉Linux目录结构. 选择 Keep Old Names
    Keep Old Names

Launcher(菜单栏)设置

在系统设置中,找不到菜单栏的位置设置.所以只能通过 终端命令 进行设置。
命令:

gsettings set 软件包名
  • 1

软件包名必须 唯一 标识,如com.baidu.guanjia。
举例:

gsettings set com.baidu.guanjia xxx
  • 1
  • 菜单栏靠左



    
$ gsettings set com.canonical.Unity.Launcher launcher-position Left
  • 1
  • 菜单栏靠下
$ gsettings set com.canonical.Unity.Launcher launcher-position Bottom
  • 1

注意参数首字母大写

Ubuntu常用软件及安装

  • 设置软件源:
    默认的软件源是官方的, 服务器在国外,速度慢的令人发指,国内提供镜像源,访问更快,将主服务器内容COPY。 所以需要先设置一个速度较快的软件源, System Settings -> Software & Updates -> Ubuntu Software -> Download from 选择Others, 然后自动选择一个网速比较快的服务器(多半是某个大学的)即可。

apt(Advanced Packaging Tool)
安装/卸载软件;
CTRL+ALT+T
快速打开终端。

  • 安装软件:
$ sudo apt install 软件包
  • 1
  • 卸载软件
$ sudo apt remove 软件名
  • 1
  • 更新已安装的包
$ sudo apt upgrade  或者 sudo apt-get upgrade
  • 1
  • 升级
 sudo apt-get update
  • 1

由于有些Ubuntu中没有自带 vim 而是 vi 这个古老的编辑器,所以我们需要安装vim

sudo apt-get install vim
  • 1

※注意:在安装过程中有可能出现下列错误:

vim : 依赖: vim-common (= 2:7.4.826-1ubuntu1) 但是 2:7.4.1689-3ubuntu1.1
正要被安装 E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
解决办法:

sudo apt-get remove vim-common
sudo apt-get install vim
  • 1
  • 2
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53463
 
426 次点击