馬哥教育21期網絡班—第一周課程+練習

計算機的組成及功能

根據馮·諾依曼原理

現在計算機有五部分組成

分別是:運算器、控制器、存儲器、輸入設備和輸出設備

現在把運算器和控制器做到一塊就是所謂的CPU

CPU = 運算器+控制器

存儲器:memory 用于存儲信息的記憶設備,存儲器分為ROM和RAM

編址存儲設備

ROM:只讀存儲器,尋址地址空間的組成部分

RAM:隨機存儲器

輸入和輸出設備:

輸入設備:向計算機輸入信息的設備

輸出設備:向人提供運行結果的設備

QQ截圖20160625113610.png

bus:總線

總線的作用:將電氣信號轉換為數字信號

總線劃分:數據總線、地址總線、控制總線

南橋:低速

北橋:高速

地址總線是實現尋址的

計算機工作流程圖:

QQ截圖20160625133422.png

程序:

指令+數據

指令:只讀

數據:讀寫

運行程序格式:

Windows: EXE, dll(dynamic link library)  動態鏈接庫

Linux: ELF, so(shared object)  共享對象

程序:算法+數據結構

庫調用,系統調用:允許被調用的程序;不提供數據,只提供指令

編程語言:

語言:

解釋型語言

編譯型語言

編譯方式: 

首先將源程序翻譯成等價的目標程序,然后再執行此程序,運行速度較快。如:C 、FORTRAN

解釋方式:

是把源程序逐句翻譯,翻譯一句執行一句,邊翻譯邊執行,運行速度較慢。解釋程序不產生將被執行的目標程序,而是借助解釋程序直接執行源程序本身。如:BASIC 、 LISP

編程語言:

匯編語言:微碼編程

系統中某些與硬件相關的特有代碼、驅動程序開發;

高級語言C, C++:

系統級應用、驅動程序

高級應用java, python, php:

應用程序

malloc()   申請, free()  釋放     節約內存資源

通用軟件:

向上提供接口統一接口,負責硬件的翻譯

OS: Operating System

將底層的細節隱藏起來,并提供一個統一的規范的,簡介的接口提供出來,這就是操作系統的用途

       軟件程序

       通用目的

           硬件驅動

           進程管理

           內存管理

           網絡管理

           安全管理

System Call

           Syscall:系統調用

編程層次:

           面向硬件編程稱為:

硬件規格:hardware specifiacation

系統調用:任何只有內核才能執行的操作,通過接口的形式表現出來,這些接口稱之為系統調用:操作系統之上再抽象一次

           庫調用:library call

把系統調用封裝成更復雜的程序,以供別人使用,稱之為庫,又稱重復造輪子

系統啟動=內核+外殼

軟件開發相關的概念介紹:

UI:前端,用戶接口

       GUI: Graphic User Interface    圖形界面

       CLI: Command Line Interface  命令行

    ABI: Application Binary Interface   應用二進制接口   編譯以后

    API:Application Programming Interface  開發以后  應用編程接口

   ANSI:協議

glibc:C的標準庫 Linux庫

生命周期:進程切換(上下文切換)

集成開發環境(IDE):包括文本編寫,gcc編譯,庫鏈接等

GCC:預處理、編譯、匯編、鏈接 GNU C Complier

內核通過任務結構管理進程

進程:由父進程fork自身而來(由父進程申請,內核完成)

多任務:process

進程:程序實例,程序子集

POS: Portable Operating System

POSIX:可移植操作系統規范

POSIX 定義        API: 編程接口

CPU的架構類型:

x86

x64

arm

摩托羅拉:m68000, m68k

IBM:第一個多核CPU power

蘋果、IBM、摩托羅拉聯合設計:powerpc,簡裝版power

sun:ultrasparc

HP:alpha

安騰

操作系統介紹:

Windows

dos 

windowsNT

Windows2012 

Unix

System (Bell Lab)

AIX (IBM)

Solaris (SUN)

HP-UX (HP)

BSD: (BSRG)Berkeley System Distribution

NetBSD

OpenBSD

FreeBSD 在pc機上運行

Linux

Linus –> Linux

GNU/Linux

荷蘭安德魯教授仿造unix弄了一個Minix

Linus Torvalds 寫了Linux內核 

Linus:1991,8月份

1994年linux1.0內核發布

麻省理工學院MIT:Richard Stallman 激進分子     80年代中期

Free,軟件行業自由運動

GUN:GUN is Not Unix(遞歸縮寫)

GPL:通用公共許可證:General Public License

以下軟件

emacs,gcc, bash vi

Linux內核是有Linus Torvalds,而相關的軟件是由GNU軟件組織提供。

Linux開發版介紹:
Slackware系列:

slackware

suse  SLES:suse的企業版

opensuse

debian系列:

debian:不是商業組織,最接近原汁原味的Linux

ubuntu

mint

redhat系列:

rhel: redhat enterprise linux

每18個月發行一個新版本

CentOS:兼容rhel的格式

fedora:2003 年 由社區維護       每6個月發行一個新版本 

archlinux系列:

ArchLinux:輕量級,下去找資料

Gentoo系列:

Gentoo:程序包在硬件上現編譯

LFS系列:

LFS: Linux From scratch  自己定制Linux

程序包管理器:

rpm:

RHEL, Fedora, suse, centos

dpt:

Debian, Ubuntu

開源協議說明:

GNU: GPLv2, GPLv3, LGPL(lesser) 寬松的

Apache: apache

BSD: bsd

A: 1000, GPL,

B: 20000, 20     B借用到A的20條代碼,B必須也要遵循GPL協議,流毒無窮協議。

自由軟件:

QQ截圖20160625143943.png

自由軟件:

自由使用;自由學習和修改;自由分發;自由創建衍生版;

Linux 的哲學思想:

1、一切皆文件;

把幾乎所有資源,包括硬件設備都組織為文件格式;

2、由眾多單一目的小程序組成;一個程序只實現一個功能,而且要做好;

組合小程序完成復雜任務;

3、盡量避免跟用戶交互;

目標:實現腳本編程,以自動完成某些功能;

4、使用純文本文件保存配置信息;

目標:一款使用的文本編程器即能完成系統配置工作;

Linux命令格式:

COMMAND [OPTIONS…] [ARGUMENTS…]

選項:用于啟用或關閉命令的某個或某些功能;

短選項:-c, 例如:-l, -h

多個短選項可命令使用,例如-l -h, 可寫作-lh;

長選項:–word,例如:–long, –human-readable

參數:命令的作用對象

向命令提供數據

命令總結:

ifconfig

1、命令格式

ifconfig [選項] [參數]

2、命令功能

查看和配置網絡設備

3、選項

up:啟動網絡接口

QQ截圖20160625152127.png

down:關閉網絡接口

QQ截圖20160625151947.png

-s:顯示摘要信息

QQ截圖20160625152415.png

add:增加ipv4地址

QQ截圖20160625152907.png

-a:顯示網卡詳細信息

QQ截圖20160625153338.png

不帶選項,相當于-a

echo

1、命令格式

echo [選項] [參數]

2、命令功能

回顯 

3、選項

-n: 禁止自動添加換行符號;

QQ截圖20160625154218.png

-e: 允許使用轉義符;

 \n: 換行

QQ截圖20160625154420.png

 \t: 制表符

QQ截圖20160625154618.png

tty

顯示當前所在的終端

QQ截圖20160625155428.png

startx

進入圖形界面

export

設置或顯示環境變量

修改環境變量值的方式:export 變量名="值"

變量賦值:把賦值符號后面的數據存儲于變量名指向內存空間;

QQ截圖20160625162729.png

相當于調用PWD變量,顯示當前的目錄

QQ截圖20160625162000.png

OLDPWD變量上一級目錄

QQ截圖20160625162059.png

hash

shell搜尋到的外部命令的路徑結果會緩存至kv(key-value)存儲中;

history

管理命令歷史;

登錄shell時,會讀取命令歷史文件中記錄下的命令:~/.bash_history

登錄進shell后新執行的命令只會記錄在緩存中;這些命令會用戶退出時“追加”至命令歷史文件中;

history:

-a: 追加本次會話新執行的命令歷史列表至歷史文件中;

-d: 刪除歷史中指定的命令;

-c: 清空命令歷史;

快捷操作:

!#: 調用歷史中第#條命令;

!string:調用歷史中最近一個以string開頭的命令;

!!: 上一條命令

調用上一條命令的最后一個參數:

!$:

ESC, .

環境變量:

HISTSIZE:命令歷史記錄的條數;

QQ截圖20160625163112.png

HISTFILE:~/.bash_history;

QQ截圖20160625163246.png

HISTFILESIZE:命令歷史文件記錄歷史的條數;

QQ截圖20160625163338.png

控制命令歷史的記錄方式:

環境變量:HISTCONTROL

ignoredups:忽略重復的命令;連續且相同方為“重復”;

ignorespace:忽略所有以空白開頭的命令;

ignoreboth:ignoredups, ignorespace;以上兩種都生效

shutdown

shutdown [OPTION]…  TIME [MESSAGE]

 -r: reboot

 -h: halt

 -c:cancel :取消關機或重啟操作

 TIME:

now: 立刻

+m: 相對時間表示法,從命令提交開始多久之后;例如 +3;

hh:mm: 絕對時間表示,指明具體時間;

QQ截圖20160625163857.png

poweroff

關機

reboot

重啟

date

date [OPTION]… [+FORMAT]:顯示

FORMAT: 格式符號

%a或%A:星期

%Y:四位年份

%y:兩位年份

%m:月

%M:分鐘

%d:日

%h:英文簡寫的月

%H:時

%S:秒

%s:現在距離1970年1月1號0點0分(unix元年)的秒數,timestamp(時間戳)

%D:月/日/年

%F:年-月-日

%T:時:分:秒

date [MMDDhhmm[[CC]YY][.ss]]:設置

MM: 月分

DD:幾號

hh: 小時

mm: 分鐘

YY: 兩位年份

CCYY: 四位年份

.ss: 秒鐘

顯示今天為周幾?

date +%a ; date +%A

設定當前系統時間?

date [MMDDhhmm[[CC]YY][.ss]]

date 0815170115.21

顯示今天的日期,形如:08/15/15?

date +%D

顯示當前的時間,形如: 16:01:21?

date +%T

clock

硬件時鐘

QQ截圖20160625165838.png

hwclock

顯示硬件時鐘

-s, –hctosys :以硬件為準

-w, –systohc:以軟件為準

cal

顯示日歷

type

顯示內部命令還是外部命令

QQ截圖20160625170139.png

QQ截圖20160625170210.png

which

查找外部命令的路徑

QQ截圖20160625173545.png

whereis

定位可執行文件、源代碼文件、幫助文件在文件系統中的位置

QQ截圖20160625173627.png

目錄相關的命令:

當前目錄或工作目錄

主目錄,家目錄:HOME

root: /root

普通用戶:/home/USERNAME

/home/tom

~:用戶的主目錄

 cd

cd 或 cd ~: 回當前用戶的主目錄

cd ~USERNAME: 切換至指定用戶的主目錄 如: cd ~ abc

cd -: 在上一個目錄和當前目錄之間來回切換

. :當前目錄

.. :上一級目錄

 ls

顯示指定路徑下的文件列表;不能顯示文件本身

ls [OPTION]… [DIR]…

-a, –all: 顯示所有文件,包括隱藏文件;

-l: 長格式

-rw-r–r– 1 root root 44800 Aug 14 14:32 install.log

-rw-r–r–:

最左側的第一位:文件類型

-, d, l, b, c, p, s

后面的9位:訪問權限,perm

數字:文件被硬鏈接的次數;

左root: 文件的owner :所有者

右root: 文件的group:所屬組

44800:文件的size

Aug 14 14:32 : 文件的最近一次被修改的時間

install.log: 文件名

-h, –human-readable:單位換算

-d: 顯示目錄自身的相關屬性;通常要與-l一起使用;

-r, –reverse: 逆序顯示

-R, –recursive: 遞歸

QQ截圖20160625184516.png

stat

stat /PATH/TO/SOMEFILE:獲取指定文件的元數據

Access: 訪問時間

Modify: 修改時間

Change:改變時間

QQ截圖20160625184618.png

文件查看命令:cat, tac

cat

cat [OPTION]… [FILE]…

-E: 顯示行結束符$

QQ截圖20160625184936.png

-n: 對顯示出的每一行進行編號

QQ截圖20160625185022.png

file

文件內容類型查看命令

file /PATH/TO/SOMEWHERE

QQ截圖20160625185132.png

pwd

顯示當前目錄

QQ截圖20160625183428.png

basename

顯示當前目錄的基名

QQ截圖20160625175207.png

dirname

顯示當前目錄的目錄名

QQ截圖20160625175354.png

用戶登錄信息查看命令:

whoami

顯示當前登錄有效用戶

QQ截圖20160625191224.png

who

系統當前所有的登錄會話

QQ截圖20160625191306.png

w

系統當前所有的登錄會話及所做的操作;

USER:登錄用戶名

TTY:登錄后的終端

FROM:遠程主機名

LOGIN@:何時登錄

IDLE:空閑時間

JCPU:tty鏈接所有進程占用的時間

PCPU:在WHAT顯示的進程占用的時間

WHAT:正在運行的進程命令行

QQ截圖20160625191401.png

常用的環境變量

PATH

bash 默認搜索路徑

QQ截圖20160625181140.png

SHELL

顯示當前所在的shell

QQ截圖20160625181247.png

PS1

命令提示符:prompt

[root@localhost ~]#

prompt:

管理員:#

普通用戶:$

\u:當前用戶

\h:主機名

\W:工作目錄的路徑基名

基名:當前目錄的最后一段

PWD

保存了當前目錄路徑

QQ截圖20160625181844.png

OLDPWD

上一次所在目錄路徑

QQ截圖20160625181928.png

HOME

顯示當前用戶的家目錄

QQ截圖20160625182850.png

命令幫助
內部命令:

# help COMMAND

外部命令:

(1) # COMMAND –help

# COMMAND -h

(2) 使用手冊(manual)

# man COMMAND

手冊頁:/usr/share/man

man1 … man8

man1: 用戶命令

man2: 系統調用

man3: C庫調用

man4: 設備文件及特殊文件

man5: 配置文件格式

man6: 游戲

man7: 雜項

man8: 管理類的命令

注意:有些關鍵在不止一個章節中存在幫助手冊;

要查看指定章節中的手冊:man # COMMAND

man命令的配置文件:/etc/man.config

MANPATH /PATH/TO/SOMEWHERE: 指明新的手冊文件搜索位置

# man -M /PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手冊頁并顯示之;

幫助手冊中的段落說明:

NAME:程序的名字及簡要說明

SYNOPSIS:命令的簡要使用幫助

DESCRIPTION:功能詳細描述

OPTIONS:選項

EXAMPLES:使用示例

AUTHOR:作者

REPORTING BUGS:報告bug的聯系人

SEE ALSO:參考

SYNOPSIS:

[]:可選內容

<>: 必選內容

a|b:二選一

…: 同一內容可出現多次

{ }:定界,說明[]和<>

操作方法:

Space, ^V, ^f, ^F: 向文件尾翻屏;

b, ^B: 向文件首部翻屏;

d, ^D: 向文件尾部翻半屏;

u, ^U: 向文件首部翻半屏;

RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行;

y or ^Y or ^P or k or ^K:向文件首部翻一行;

q: 退出;

#:跳轉至第#行;

1G: 回到文件首部

G:翻至文件尾部

文本搜索:

/KEYWORD: 

以KEYWORD指定的字符串為關鍵字,從當前位置向文件尾部搜索;不區分字符大小寫;

n: 下一個

N:上一個

?KEYWORD:

以KEYWORD指定的字符串為關鍵字,從當前位置向文件首部搜索;不區分字符大小寫;

n: 跟搜索命令同方向,下一個

N:跟搜索命令反方向,上一個

(3) 信息頁

# info COMMAND

(4) 程序自身的幫助文檔

README

INSTALL

ChangeLog

(5) 程序官方文檔

官方站點:Documentation

(6) 發行版的官方文檔

(7) Google

(8) slideshare

http://www.slideshare.net/

Linux的文件系統

根文件系統(rootfs):

root filesystem

LSB:Linux標準庫  FHS: (FileSystem Heirache Standard)文件系統層級標準

/etc, /usr, /var, /root, /home, /dev

/boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放于此目錄;

/bin:供所有用戶使用的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序;

/sbin:管理類的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序;

/lib:基本共享庫文件,以及內核模塊文件(/lib/modules);

/lib64:專用于x86_64系統上的輔助共享庫文件存放位置;

/etc:配置文件目錄(純文本文件);

/home/USERNAME:普通用戶家目錄;

/root:管理員的家目錄;

/media:便攜式移動設備掛載點;

cdrom

usb

/mnt:臨時文件系統掛載點;

/dev:設備文件及特殊文件存儲位置;

b: block device,隨機訪問  塊設備

c: character device,線性訪問  字符設備

/opt:第三方應用程序的安裝位置;

/srv:系統上運行的服務用到的數據;

/tmp:臨時文件存儲位置;

/usr: universal shared, read-only data;只讀的

bin: 保證系統擁有完整功能而提供的應用程序;

sbin:

lib:

lib64:

include: C程序的頭文件(header files);

share:結構化獨立的數據,例如doc, man等;

local:第三方應用程序的安裝位置;

bin, sbin, lib, lib64, etc, share

/var: variable data files  經常發生變化的文件

cache: 應用程序緩存數據目錄;

lib: 應用程序狀態信息數據;

local:專用于為/usr/local下的應用程序存儲可變數據;

lock: 鎖文件

log: 日志目錄及文件;

opt: 專用于為/opt下的應用程序存儲可變數據;

run: 運行中的進程相關的數據;通常用于存儲進程的pid文件;

spool: 應用程序數據池;

tmp: 保存系統兩次重啟之間產生的臨時數據;

/proc: 用于輸出內核與進程信息相關的虛擬文件系統;

/sys:用于輸出當前系統上硬件設備相關信息的虛擬文件系統;

/selinux: security enhanced Linux,selinux相關的安全策略等信息的存儲位置;

Linux上的應用程序的組成部分:

二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

庫文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

配置文件:/etc, /etc/DIRECTORY, /usr/local/etc

幫助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

Linux下的文件類型:

– (f):普通文件;

d: 目錄文件;

b: 塊設備;

c: 字符設備;

l: 符號鏈接文件;(軟連接)

p: 管道文件;

s: 套接字文件;socket; 通信接口(IP地址+端口)

socket文件不跨主機通信,在同一臺主機中實現通信,打開

通信信道,就是套接字文件。跨主機利用協議通信,不跨主機

利用套接字通信。












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

(0)
N21_ DominicN21_ Dominic
上一篇 2016-06-26
下一篇 2016-06-26

相關推薦

  • 馬哥教育網絡班22期+第13周作業

    week13 1、建立samba共享,共享目錄為/data,要求:(描述完整的過程)   1)共享名為shared,工作組為magedu;   2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為…

    Linux干貨 2016-11-21
  • Linux終端類型

    前言     終端是一種字符型設備,它有多種類型,通常使用tty來簡稱各種類型的終端設備。而linux的終端類型有物理終端,虛擬終端,串行終端,偽終端。  1.物理終端  /dev/console     在linux系統中,計算機顯示器通常被稱為控制臺終端(console)。系統控制臺,和系統相關…

    Linux干貨 2016-10-14
  • 在vsftp中實現基于pam_mysql的虛擬用戶機制

    FTP簡介 在介紹vsftp相關內容前,簡單描述下FTP。FTP全稱File Transfer Protocol,文件傳輸協議。它是一個C/S架構的協議,在Linux中其服務端實現主要有vsftpd,pureftpd,proftpd,Filezilla,本文主要介紹的是vsftp??蛻舳藢崿F主要是ftp和lftp兩種工具。其工作方式:主要分為兩個層面的連接:…

    Linux干貨 2017-01-07
  • Linux進程與計劃任務

    Linux進程與計劃任務 linux進程及作業管理 進程 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等特權操作模式切換(理想狀態):70%CPU時間用戶模式+30%CPU時間內核模式進程(Process):是計算機中的程序關于某數據集合上的一次運行活動,是系統進行資源分配和調度的存在生命周期的基本單位,是操作系統結構的基礎。在早期…

    Linux干貨 2016-09-23
  • chmod命令詳細用法

    指令名稱 : chmod 使用權限 : 所有使用者 使用方式 : chmod [-cfvR] [–help] [–version] mode file… 說明 : …

    Linux干貨 2016-10-17
  • 一個“蠅量級” C 語言協程庫

    協程(coroutine)顧名思義就是“協作的例程”(co-operative routines)。跟具有操作系統概念的線程不一樣,協程是在用戶空間利用程序語言的語法語義就能實現邏輯上類似多任務的編程技巧。實際上協程的概念比線程還要早,按照 Knuth 的說法“子例程是協程的特例”,一個子例程就是一次子函數調用,那么實際上協程就是類函數一樣的程序組件,你可以…

    Linux干貨 2016-08-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-06-29 15:22

    寫的很好,可以多注意一下排版問題,有沒有嘗試自己去畫一些圖來理解問題,加油

欧美性久久久久