第二天上課 llinux發展史

                         linux發展史


unix誕生

   1965年時,貝爾實驗室(Bell Labs)加入一項由通用電氣(General Electric)和麻省理工學院(MIT)合作的項目;該項目要建立一套多使用者、多任務、多層次(multi-user、multi-task、multi-level)的MULTICS操作系統。直到1969年,因MULTICS項目的工作進度太慢,該項目就被停了下來。當時,Ken Thompson已經有一個稱為"星際旅行"的程序在GE-635的機器上運行,但是反應非常的慢,正巧被他發現了一臺被閑置的PDP-7(Digital的主機),Ken Thompson和Dennis Ritchie就將"星際旅行"的程序移植到PDP-7上。而這部PDP-7就此在整個計算機歷史上留下了芳名

   1973年,Ken Thompson(肯·湯姆森)和Dennis Ritchie(丹尼斯·里奇)發明了C語言之后,著手將UNIX程序用高階的C語言改寫,這個時候已經是第4版了(C的前身叫B,也是他們兩個人發明的,為了改寫UNIX,他們將B語言做了一番改進,而成了C語言)。這個劃時代的動作讓UNIX能夠很輕易地被移植到各種不同的機器上。 

unix為什么成功

  健壯性

  功能豐富

  移植性

  開放性

 

GNU

   GNU是自由軟件之父Richard Stallman在1984年組織開發的一個完全基于自由軟件的軟件體系,與此相應的有一分通用公共許可證(General Public License,簡稱GPL)。Linux以及與他有關的大量軟件是在GPL的推動下開發和發布的。

自由軟件之父 – Richard Stallman 像一個神態莊嚴的傳教士一樣喋喋不休地到處傳播自由軟件的福音,闡述他創

立GNU的夢想:“自由的思想,而不是免費的午餐”。這位自由軟件的“頂級神甫”為自己的夢想付出了大半生的努

力,他不但自己創作了許多自由軟件,如:GCC、和GDB,在他的倡導下,目前人們熟悉的一些軟件如BIND、P

erl、Apache、TCP/IP等都成了自由軟件的經典之作。

如果說Richard Stallman創立并推動了自由軟件的發展,那么,Linus Torvalds毫不猶豫奉獻給GNU的Linux,則把

自由軟件的發展帶入到一個全新的境界。

 BSD

        386BSD因為法律問題直到1992年還不能發布,NetBSD和FreeBSD是386BSD的后裔,比Linux早。Linus Tor

valds說,當時如果有自由的基于386的Unix-like操作系統,他就可能不會創造Linux。盡管無法預料這給以后的軟

件業究竟造成了什么樣的影響(如果沒有這個法律糾紛,很有可能沒有今天的革命性的Linux),但有一點可以肯

定,Linux更加豐富了這塊土壤。


Minix

      Minix是一種基于微內核架構的類Unix計算機操作系統,由Andrew S. Tanenbaum發明。Minix最初發布于1987

年,開放全部源代碼給大學教學和研究工作。2000年重新改為BSD授權,成為自由和開放源碼軟件。

因為AT&T的政策改變,在Version 7 Unix推出之后,發布新的使用條款,將Unix源代碼私有化,在大學中不再能

使用Unix源代碼。教授為了能在課堂上教授學生操作系統運作的實務細節,決定在不使用任何AT&T的源代碼前

提、下,自行開發與Unix兼容的操作系統,以避免版權上的爭議。他以小型Unix(mini-Unix)之意,將它稱為Minix。

Minix沒有任何代碼抄襲Unix,所以它們之間并沒有任何繼承關系,Minix作為當時有史以來的第一個開源的操作系

統放到網上以后,短期之內得到了飛速發展,大量的人進行下載學習。

由于Minix是教授一人所寫,所以存在一些漏洞。這時候有使用者發現漏洞存在,想著去下載一些補丁或者自己寫

一些補丁來修補這些漏洞,修補之后發現效果不錯,然后就建議教授利用這些補丁完善下Minix,結果呢,教授比

較固執,意思是說:為了維持Minix的純潔性,不需要任何外來代碼。也就是說,根本不打算做商業發行,所以Mi

nux保持了其最原始的風范。

linux的由來

       Linux是一套自由加開放源代碼的類Unix操作系統,誕生于1991年10月5日(第一次正式向外公布),由芬蘭 

學生Linus Torvalds和后來陸續加入的眾多愛好者共同開發完成。

Linux是一個基于POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟

件、應用程序和網絡協議,可支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定

的多用戶網絡操作系統。

Linux存在著許多不同的版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬件設備中,比如:手

機、平板電腦、路由器、視頻游戲控制臺、臺式計算機、大型機和超級計算機。

嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基于Linux內核,并且

使用GNU工程各種工具和數據庫的操作系統 

在后來的幾年內,由于計算機硬件工業的強力運作,以Intel主導的x86系統架構的個人計算機大行其道,所以個人

計算機算是相當流行的一個機器了。但在此時,人們使用的大多還是DOS操作系統。此時,芬蘭赫爾辛基大學有

個叫Linus Torvalds的學生做了件不尋常的事情。當時他正好有一臺386的計算機,由于并不喜歡自己電腦上的DO

S系統,所以就想:既然Minix這么棒、這么穩定,那我何不將它移植到個人計算機 (好在由于Stallman提倡的Op

en Source理念,他得以接觸到一些Source Code,而經由這樣的一個想法,O(∩_∩)O~他就很有心的讀取了Unix

核心,并且去除較為繁復的核心程序,將它改寫成可以適用于一般個人計算機的x86系統上面)。

到了1991年,他終于將0.02版的原始碼hobby放到網絡上面供大家下載,由于hobby受到大家的肯定,相當多的朋

友一起投入這個工作中。終于在1994年,將第一個完整的核心Version 1.0釋出,并且造成目前的大流行。。。由

于Linux kernel的發展是由虛擬團隊所達成的,大家都是透過網絡取得Linux的核心原始碼,經由自己精心改造后再

回傳給Linux社群,進而一步一步的發展完成完整的Linux系統,至于Linus Torvalds是這個集團中的發起者。由于

這個群策群力的緣故,Linus Torvalds將Linux定為同樣造福大家的GNU授權模式!

Linux是Linus Torvalds受到Minix的影響而作成的。但在設計哲學上,Linux則和Minix大相逕庭。Minix在內核設計上

采用微內核的原則,但Linux則和原始的Unix相同都采用宏內核的概念。在Linux發展之初,雙方還于1992年在新

聞組上有過一場精彩的理念爭論。Minix的作者和支持者認為Linux的單內核構造是“向七十年代的大倒退”,而Linux

的支持者認為Minix本身沒有實用性


linux的發行版 

Redhat : Redhat,應稱為Redhat系列,包括RHEL(Redhat Enterprise Linux,為收費版本)、Fedora Core(由Redhat桌面版本發展而來,免費)、CentOS(RHEL的社區克隆版本,免費)。Redhat可以說是在國內使用最多的Linux版本,甚至有人將Redhat等同于Linux。這個版本的特點就是使用人數多,資源多,而且網上的許多Linux教程也都以Redhat為例進行講解。

 Debian:  或者稱Debian系列,包括Debian和Ubuntu等。Debian是社區類Linux的典范,也最遵循GNU規范。Debian分為三個分支: stable, testing和unstable。

Ubuntu: 嚴格來說不能算一個獨立的發行版本,Ubuntu是基于Debian的unstable版本加強而來,可以說Ubuntu是一個擁有Debian所有的優點,以及自己所加強的優點的近乎完美的Linux桌面系統。根據選擇的桌面系統不同,有三個版本可供選擇,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特點是界面非常友好,容易上手,對硬件的支持非常全面,是最適合做桌面系統的Linux發行版本。

Gentoo:  Gentoo是Linux最年輕的發行版本,因此也吸取之前的發行版本的優點,這也是Gentoo被稱為最完美的Linux發行版本的原因之一。Gentoo最初由DanielRobbins(FreeBSD的開發者之一)創建,由于開發者對FreeBSD的熟識,所以Gentoo擁有媲美FreeBSD的廣受美譽的ports系統——Portage包管理系統。不同于APT和YUM等二進制文件分發的包管理系統,Portage是基于源代碼分發的,必須編譯后才能運行,對于大型軟件而言比較慢,不過正因為所有軟件都是在本地機器編譯的,在經過各種定制的編譯參數優化后,能將機器的硬件性能發揮到極致。Gentoo是所有Linux發行版本里安裝最復雜的,但是又是安裝完成后最便于管理的版本,也是在相同硬件環境下運行最快的版本

 FreeBSD : FreeBSD并不是一個Linux系統,但FreeBSD與Linux支持的硬件環境比較一致,采用的軟件也比較類似,用戶也有許多重合。所以可以將FreeBSD視為一個Linux版本來比較。FreeBSD擁有兩個分支:stable和current。其中,stable是穩定版,而current則是添加了新技術的測試版。

 CentOS:雖然社區企業操作系統(Community ENTerprise Operating System)是Linux服務器最有名最常用的發行版,但是它的桌面版本還在繼續不斷完善中。

Elementary OS:其開發人員標榜Elementary OS是“Windows和OS X快速又開放的替代品”,這款漂亮精致基于Ubuntu LTS的桌面Linux發行版,第一版發行于2011年,目前發行的是第三個穩定版本(代號“Freya”)

openSUSE :既 可作為一個滾動發布,又可當作是一個獨立的定期發布版本,openSUSE根據其開發人員的不同,是系統管理員、開發人員和桌面用戶Linux發行版的選 擇,無論你的經驗水平處于哪種級別(受到初學者和極客們的一致好評)。最重要的是,著名又屢獲殊榮的SUSE Linux Enterprise產品基于openSUSE

Linux Mint :Linux Mint的著名口號(“From freedom came elegance”),不只是說說而已。基于Ubuntu的Linux Mint,是一個穩定、功能強大、完整、易于使用的Linux發行版——我們還有很多很多的褒義詞可以用來形容Mint

linux的哲學思

1、一切皆文件

2、單一目的的小程序

3、組合小程序完成復雜任務

4、文本文件保存配置信息

5、盡量避免跟用戶交互

虛擬化

    在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,并且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率

命令適用

  ls用法:ls [選項]… [文件]…

          -L, --dereference         當顯示符號鏈接的文件信息時,顯示符號鏈接所指示

         -a, –all           不隱藏任何以. 開始的項目

   cd 目錄切換命令
  pwd 顯示當前目錄

  -L, --logical
         顯示當前目錄
  -P, --physical
         顯示當前目錄的實際物理地址
  --help  幫助
  --version  版本    
  mv [選項]... [-T] 源文件 目標文件  
      --backup[=CONTROL]       為每個已存在的目標文件創建備份
 -b                           類似--backup 但不接受參數
 -f, --force                  覆蓋前不詢問
 -i, --interactive            覆蓋前詢問
 -n, --no-clobber             不覆蓋已存在文件
如果您指定了-i、-f、-n 中的多個,僅最后一個生效。
     --strip-trailing-slashes  去掉每個源文件參數尾部的斜線
 -S, --suffix=SUFFIX           替換常用的備份文件后綴
 -t, --target-directory=DIRECTORY      將所有參數指定的源文件或目錄
                                       移動至 指定目錄
 -T, --no-target-directory     將目標文件視作普通文件處理
 -u, --update                  只在源文件文件比目標文件新,或目標文件
                               不存在時才進行移動
 -v, --verbose         詳細顯示進行的步驟
     --help            顯示此幫助信息并退出
     --version         顯示版本信息并退出
  cp 用法:cp [選項]... [-T] 源文件 目標文件
     長選項必須使用的參數對于短選項時也是必需使用的。
 -a, --archive 等于-dR --preserve=all
     --backup[=CONTROL 為每個已存在的目標文件創建備份
 -b 類似--backup 但不接受參數
     --copy-contents 在遞歸處理是復制特殊文件內容
 -d 等于--no-dereference --preserve=links
 -f, --force 如果目標文件無法打開則將其移除并重試(當 -n 選項
存在時則不需再選此項)
 -i, --interactive 覆蓋前詢問(使前面的 -n 選項失效)
 -H 跟隨源文件中的命令行符號鏈接
 -l, --link 鏈接文件而不復制
 -L, --dereference 總是跟隨符號鏈接
 -n, --no-clobber 不要覆蓋已存在的文件(使前面的 -i 選項失效)
 -P, --no-dereference 不跟隨源文件中的符號鏈接
 -p 等于--preserve=模式,所有權,時間戳
     --preserve[=屬性列表 保持指定的屬性(默認:模式,所有權,時間戳),如果
可能保持附加屬性:環境、鏈接、xattr 等
 -c                           same as --preserve=context
     --sno-preserve=屬性列表 不保留指定的文件屬性
     --parents 復制前在目標目錄創建來源文件路徑中的所有目錄
 -R, -r, --recursive 遞歸復制目錄及其子目錄內的所有內容
     --reflink[=WHEN] 控制克隆/CoW 副本。請查看下面的內如。
     --remove-destination 嘗試打開目標文件前先刪除已存在的目的地
文件 (相對于 --force 選項)
     --sparse=WHEN 控制創建稀疏文件的方式
     --strip-trailing-slashes 刪除參數中所有源文件/目錄末端的斜杠
 -s, --symbolic-link 只創建符號鏈接而不復制文件
 -S, --suffix=后綴 自行指定備份文件的后綴
 -t,  --target-directory=目錄 將所有參數指定的源文件/目錄
                                          復制至目標目錄
 -T, --no-target-directory 將目標目錄視作普通文件
 -u, --update                 copy only when the SOURCE file is newer
                                than the destination file or when the
                                destination file is missing
 -v, --verbose                explain what is being done
 -x, --one-file-system        stay on this file system
 -Z, --context=CONTEXT        set security context of copy to CONTEXT
     --help 顯示此幫助信息并退出
     --version 顯示版本信息并退出
   wget  用法: wget [選項]... [URL]...
    下載:
 -t,  --tries=NUMBER            設置重試次數為 NUMBER (0 代表無限制)。
      --retry-connrefused       即使拒絕連接也是重試。
 -O,  --output-document=FILE    將文檔寫入 FILE。
 -nc, --no-clobber              skip downloads that would download to
                                existing files (overwriting them).
 -c,  --continue                斷點續傳下載文件。
      --progress=TYPE           選擇進度條類型。
 -N,  --timestamping            只獲取比本地文件新的文件。
   yum whatprovides  查看命令的工具包名稱
  yum install telnet tree htop  安裝
  systemctl restart NetworkManager.service  重啟網卡服務  
  dhclient 命令使用動態主機配置協議動態的配置網絡接口的網絡參數
  vi
文字編輯器
      h :光標左移一個字符
      l :光標右移一個字符
      space:光標右移一個字符
      Backspace:光標左移一個字符
      k或Ctrl+p:光標上移一行
      j或Ctrl+n :光標下移一行
      Enter :光標下移一行
      w或W :光標右移一個字至字首
      b或B :光標左移一個字至字首
      e或E :光標右移一個字至字尾
      ) :光標移至句尾
     ( :光標移至句首
     }:光標移至段落開頭
    {:光標移至段落結尾
    nG:光標移至第n行首
    n+:光標下移n行
    n-:光標上移n行
    n$:光標移至第n行尾
    H :光標移至屏幕頂行
    M :光標移至屏幕中間行
    L :光標移至屏幕最后行
    0:(注意是數字零)光標移至當前行首
    $:光標移至當前行尾
  su :   用法 su-用戶名  【切換用戶】
   usradd :用法 useradd - 【帳 號 建 立 或 更 新 新 使 用 者 的 資 訊】
  basename:(獲取基名)用法:basename 名稱 [后綴] 或:basename 選項
   去掉前導的目錄部分后打印“名稱”。
如果指定的話,還會去掉尾隨的“后綴”。
     --help     顯示此幫助信息并退出
     --version  輸出版本信息并退出
   mkdir: 用法:mkdir [選項]... 目錄...
       -m, --mode=模式       設置權限模式(類似chmod),而不是rwxrwxrwx 減umask
       -p, --parents         需要時創建目標目錄的上層目錄,但即使這些目錄已存在也不當作錯誤處理
       -v, --verbose         每次創建新目錄都顯示信息
       -Z, --context=CTX     將每個創建的目錄的SELinux 安全環境設置為CTX
       --help            顯示此幫助信息并退出
       --version         顯示版本信息并退出
   uname:(查看內核版本號)
-a(顯示所有信息)
-r(只顯示內核版本號)
     who: 用法:who [選項]... [ 文件 | 參數1 參數2 ]
         -a, --all             等于-b -d --login -p -r -t -T -u 選項的組合
         -b, --boot            上次系統啟動時間
         -d, --dead            顯示已死的進程
         -H, --heading 輸出頭部的標題列
         --ips         print ips instead of hostnames. with --lookup,
                   canonicalizes based on stored IP, if available,
                   rather than stored hostname
              -l,--login           顯示系統登錄進程
            --lookup          嘗試通過 DNS 規范化主機名
             -m                    只針對和標準輸入有直接交互的主機和用戶
             -p, --process 顯示由 init 進程衍生的活動進程
              -q, --count           列出所有已登錄用戶的登錄名與用戶數量
            -r, --runlevel        顯示當前的運行級別
            -s, --short           只顯示名稱、線路和時間(默認)
            -T, -w, --mesg        用+,- 或 ? 標注用戶消息狀態
            -u, --users           列出已登錄的用戶
          --message 等于-T
          --writable        等于-T
          --help            顯示此幫助信息并退出
         --version         顯示版本信息并退出

     whoami:   用法 whoani【選項】    

           --help     顯示此幫助信息并退出
      --version  輸出版本信息并退出

     tty  :    用法 tty【選項】

           -s, --silent, --quiet 什么也不顯示,只返回退出狀態值
      --help            顯示此幫助信息并退出
      --version         顯示版本信息并退出

  

原創文章,作者:mxl,如若轉載,請注明出處:http://www.www58058.com/51691

(0)
mxlmxl
上一篇 2016-10-18
下一篇 2016-10-18

相關推薦

  • python分支循環和列表

    if語句 if condition: 代碼塊 condition必須是一個bool類型,這個地方有一個隱式轉換bool(condition) if 1<2: print(‘1 less than 2’)   循環——while語句 while condition: block 當條件滿足即condition為True,…

    2018-03-27
  • 互聯網安全之sudo使用指南

    一、前言 sudo是什么? sudo是系統管理指令;由于root用戶權限過大,在實際生產過程中很少使用root用戶直接登錄系統,而是使用普通用戶登錄系統;但是如果普通用戶要對系統進行日常維護操作時需要su到root用戶,為了提高安全性,可以使用sudo授權某一用戶在某一主機以某一用戶身份運行某些命令;從而減少root用戶密碼知曉人,提高系統安全性。 &nbs…

    2015-06-23
  • Linux程序包管理yum

    yum客戶端: 配置文件: /etc/yum.conf:為所有倉庫提供公共配置 /etc/yum.repos.d/*.repo:為倉庫的指向提供配置 倉庫指向的定義: [repositoryID] name=Some name for this repository baseurl=url://path/to/repository/ enabled={1|0…

    Linux干貨 2015-11-23
  • 磁盤配額配置

     實現磁盤配額 1、啟用home家目錄下的磁盤配額掛載選項vim /etc/fstab #在vim下可通過r!blkid /dev/sdb1調取UUIDUUID=aqvKA0-bL5B-MsuF-PIzQ-fl3P-G7E0-j3UlOI    /home   ext4  &nb…

    Linux干貨 2016-08-30
  • ldirectord 結合ipvsadm 配置nat,dr模型

    ldirectord 結合ipvsadm 配置nat,dr模型  一、nat模型 1、 drector # wget ftp://172.16.0.1/pub/Sources/7.x86_64/crmsh/ldirectord-3.9.6-0rc1.1.1.x86_64.rpm # yum -y install nginx (同…

    Linux干貨 2016-11-24
  • 推薦-HA專題: 編譯安裝并配置DRBD

    HA專題: 編譯安裝并配置DRBD 前言 實驗環境 DRBD介紹 安裝前準備工作 獲取并編譯安裝DRBD 配置DRBD 分區 配置文件 啟動并設置DRBD 格式化并掛載 驗證冗余性 總結 前言 上篇我們講到使用corosync+pacemaker實現MySQL高可用, 但是NFS容易成為單點故障從而導致數據丟失等嚴重問題, 我們可以使用drbd來實現MySQ…

    Linux干貨 2016-04-12
欧美性久久久久