马哥教育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.178linux.com/20127

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

相关推荐

  • Linux基础知识第一课

    一、计算机的组成:             CPU:运算器、控制器、寄存器、缓存            存储器:内存,RAM(Random …

    Linux干货 2016-09-12
  • 管道和用户管理权限

           一周的时间又过去了,感觉过得太快了,但是过得很充实,这就够啦!把在平时的学习中觉得重要有意义的地方记录下来,希望可以对自己以后的学习有所帮助! 1.把/etc/issue转化为大写,并重定向到issue.out. 管道的作用很强大,|将正确的结果重定向给下一条命令;连接命令;一页一页地…

    2017-07-22
  • linux基础练习

    马哥教育23期网络班+第6周课堂练习 Linux 基础练习 一、linux基础练习题 1、复制/etc/rc.d/rc.sysinit 文件至/tmp 目录,将/tmp/rc.sysinit 文件中的以至少一个空白字符开头的行的行首加#; 2、复制/boot/grub/grub.conf 至/tmp目录中 删除/tmp/grub.conf 文件中的行首的空白…

    Linux干货 2016-11-01
  • 马哥教育网络班19期第十二周课程练习

    1、请描述一次完整的http请求处理过程; 一次完整的http请求处理过程如下: (1) 建立或处理连接:接收客户端的请求,建立连接,或是拒绝其请求 (2) 接收请求: 接收来自于网络的请求报文中对某资源的一次请求的过程时,web服务器也分几种模型对并发请求进行响应:             &nb…

    Linux干货 2016-08-11
  • bash脚本编程之流程控制if、for、while、until简介

    概述     之前介绍了一些bash脚本编程的变量、运算、条件测试的一些基础内容,了解了脚本实际上就是一些语句加上一些流程控制组合起来,实现某种功能的可执行文件。我们知道,条件测试的目的,实际就是为了实现一种流程的控制,那么本篇就简单介绍一下bash里面常见的流程控制语句,包括选择、循环等内容,具体包括以下几个部分: …

    Linux干货 2016-08-18
  • 简述开源协议

    简述开源协议 现在一说到智能手机,相信很容易就会想到苹果和安卓。安卓搭载的Android是一种基于Linux的自由及开源的操作系统,苹果手机搭载OS X是苹果公司为Mac系列产品开发的专属操作系统。    安卓手机凭借其开源的特性达到与苹果系统分庭伉礼的地位,又凭借其开源的价格优势,牢牢把控手机设备的中低端市场,其市场占有率远远…

    Linux干货 2017-03-26

评论列表(1条)

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

    写的很好,可以多注意一下排版问题,有没有尝试自己去画一些图来理解问题,加油