Linux入门(一)

一、Linux基础入门

获取知识--->把知识转换成技能

把知识转换成技能;

1.给你一份文档,你就能够做出来,//可能需要数百遍的练习

1.把知识转换成技能的速度

2.把技能转换成生产力的速度

3.只看结果,不看努力

2/8法则,有20%的人,掌握着80%的技能

Tools介绍:

Adobe Acrobat Professional7.0 200M //编辑PDf文档

VMware workstation version 12只有120M,短小精悍

32位OS的寻址能力只有4G=2^32次方=4*2^10M=4*2^10*2^10KB,只有3.2G内存能够用

vmware依赖于虚拟化

Edram //拓扑图绘制工具

FeiQ //局域网聊天工具

latern-installer-beta //翻墙工具,效果一般

subline //文本编辑工具

kwrite //linux下的文本编辑工具

kate //linux下另外一个文本编辑器

picpick //截图工具

putty //xmanager,ssh协议的客户端工具

WPS 有linux版本的

文本流:1278$233$990

//编辑器见到$后就换行,在计算机上存储的都是01,代码

主动学习和被动学习和巩固能力:

主动学习:

做总结,动手实践:40%

讲给别人:70%

写博客://一周时间

what,why,when,who, how;

被动学习:

听课:10%

笔记:20%

二、运维介绍,大纲

第一阶段

Liunx入门:操作系统的介入概念,常见命令

存储知识,lvs,raid,LVM,crontab,{grep,awk,grep}

gzip,bzip2,xz

Linux系统管理:rpm包,yum使用

Linux服务

{DNS,CDN,vsftpd,NFS,samba}

httpd,lamp,lnmp,SSL

cache:memcached,varnish缓存系统

DB:mysql(mariadb)

安全:

HTTPS,selinux,iptables,认证模块{nsswitch,PAM}

编程:

shell

负载均衡集群:

硬件:

软件:lvs,haproxy,nginx,ats,perlbal,heartbea

Linux Cluster:

LB Cluster 负载均衡集群,LVS实现负载均衡

HA cluster Keepalived 保证LVS高可用

keepalived,heartbeat,haproxy

Linux Ops:自动运维工具

ansible//适用于中小企业环境使用的

cobbler

Linux Monitor:zabbix

小结:

入门,服务,安全,shell,HA,LB,自动,监控

第二阶段

HTTP的相关知识

tomcat,lnmt,lamt,session replication(tomcat内置的回话复制)

分布式存储系统:

MogileFS,GlusterFS,

LB cluster:haproxy、keepalived

HA Cluster:corosync+pacemaker,pcs,crmsh

MySQL:HA Cluster、MHA(第三方mysql高可用机制),备份和回复,MySQL replication(复制),read-write splitting分离

NoSQL:redis,mongodb,HBase

运维工具:puppet[saltstack],不太成熟,cobbler

虚拟化:

linux操作系统原理,虚拟化技术原理;

KVM虚拟化应用详解;更好用,

xen使用不再多,当KVM出来之后

虚拟化网络:SDN软件定义网络

OpenStack云栈,//不仅仅能够借助于虚拟化实现,并且能够管理物理机

//而且能够和容器结合起来

Docker:容器,容器云

ELK stack:ElasticSearch搜索引擎,不仅仅能够搜索日志,基于文档存储

logstash:日志收集工具

Kibana:日志展示工具

大数据:Hadoop,热在研发,并行存储及分析平台

HBase,Hive 在hadoop之上

Storm,Spark 可以在hadoop之上,也可以不

系统优化:

Python编程:只介绍语法,能够看懂别人的工具就行了,并不到研发

小结:

WEB{varnish,cdn,tomcat},集群架构实战,互联网集群架构,Openstack

Hadoop,KVM,NoSQL{mogileFS,FastDFS,MongoDB},ELK{logstash、kibana}

Docker{openvswitch},系统调优,监控(nagios,zabbix,cacti),

运维自动化{puppet,ansible,cobbler,saltstack,func,fabric}

Git,Python

IT技术领域:

研发:

硬件:接口

CPU(运算器和控制器)、内存、输入、输出

机器语言:二进制指令,二进制数据

软件:

汇编语言:最接近于机器语言,低级语言{汇编器)

芯片制造商,为自己的芯片提供,每个芯片和另外一个芯片的通用性是不一样的

高级语言:c,C++(编译器)

//大多数的高级语言,会先转换成汇编程序,然后再次转换成机器格式

系统级:c,C++,代码量较大,操作系统

应用级:java,Python,接近于人类,但是距离机器愈来愈远

应用程序,开发周期短:ansible,puppet,....

程序写的程序代码:编程语言:

语言层次图:

|人类语言

|----------------------------------

|高级语言(应用级)//java,Python|

|----------------------------------

|高级语言(系统级)//c,C++      |

|+++++++++++++++++++++++++++++++++|

|低级语言(汇编)//驱动

|=================================|

|机器语言(0,1)

应用:

Linux运维:linux生态圈中的应用程序的应用

shell脚本编程:让某些应用功能能够自动完成;

Python:非常高级的语言,比java高级,实现起来比较简单

ansible,openstack//是使用Python写的

DevOps:

Development:

Operation:

三、操作系统发展

ENIARC:

CPU:运算器:负责计算

控制器:负责控制总线 //运算器和控制器是最核心的

寄存器:存储数据

缓存:一级、二级、三级缓存

//寄存器和缓存,是为了提高计算机的性能的辅助性工具

存储器:内存,RAM(随机访问存储器)

Input:下指令,提供数据等

Output:输出数据等

指令集:CPU能够支持的所有的运算的集合

普通指令:+,-,等

特权指令:影响到其他程序的指令

一个单位:8bit,

1Bytes=8bits

内存编址:

32bit cpu:32根线,每根线只有0和1两种状态

//最多能够引用2^32次方个不同位置

//最多能够理解,4G个寻址

也就是说32bitcpu,最多只能使用4G的内存

程序=指令+数据

程序想要运行:

1.从disk加载到memory中

2.cpu从内存中加载指令和数据,进行计算

指令和数据都是被加载到内存中的

内存;编址的存储单元

过程式编程语言:

顺序执行:

循环执行:将整个循环体执行n次

选择执行:仅执行其中的一个分支,

寄存器:保存下一条指令的位置,

指令寄存器,数值寄存器

//例如做加法运算,第一次取第一个数值,第二次取第二个数值

//数值保存在数值寄存器中

CPU的缓存越大,命中率越高

内存只有1600MHz,CPU已经有4GHz

cache is king//缓存为王

cpu快,但是内存慢,中间层:CPU缓存

磁盘:既是输入设备,也是输出设备

3GHz:1s内能够做3G次操作,1s内处理0和1,的个数

不同的CPU所提供的微码编程接口是不同的

操作系统:由驱动演变而来,早期是没有OS概念的,后来

为了写一个通用的驱动,(驱动也有专用的)让程序能够跨平台运行

因此出现了OS

操作系统:

batch:批处理系统

job1$$job2$$job3 //计算机在某一时刻,只能够做一件事情

多任务:multi task//UNix,Linux多任务,操作系统

一个计算机同时运行多个程序

问题:一个程序的运行,占用另外一个程序的空间,导致混乱

解决:把内存划分为多个片,第一个程序占用第一片空间,第二个占用第二个

CPU划分时间片,进行分配

问题:需要一个仲裁者,进行分配时间片和内存空间

最早期的Unix是用汇编语言写的

1972年之后,Dennis Ritch使用C语言重新编写了Unix

但是每一种硬件,都不通用,因为底层是不同的

程序员写的程序:高级语言

编译器

{各种不同的硬件厂商生产的硬件}

//在C之下,还是又汇编的

1974年《美国计算机通信》Unix公之于众//走出bell实验室

当时美国对AT&T进行反垄断,当有人要的时候,必须无偿送出Unix

广为流传,因此发展迅速,

BSD(Berkeley system Distribution)

1980:DARPA

QDOS(quick and dirty operating system)

//早期bill gates买别人的,然后修改后,变成自己的卖给了IBM

//聪明的艺术家复制,伟大的艺术家偷窃

GNU:GNU is not unix

GPL:general Public license

//free:freedom,使用,获取源代码免费

FSF:free software foundation

X-Window:GPL

gcc:gnu c complier

vi:visual interface //但是这些程序都是泡在unix之上

... ...

UNIX分支:

SUN:solaris

IBM:AIX

HP:HP-UNIX

MACOS:

四、Linux基础入门

Linux 遵循GPL协定

BSD由于官司缠身,很多早期的研发者,纷纷转向linux

linux是由互联网开发的,但是TCP/IP和HTTP协议已经流行

larry wall:使用diff和patch可以在原有的系统上打补丁,

使得linux快速成长

CPU切片,内存分段,启动进程,以及关闭进程,都是OS的功能

负责对硬件进行控制

从OS角度来说:进程只占用了CPU的一个时间片,和内存的一片或多片

从进程来说:真个CPU都是我的,内存也是独占的,没有其他进程

linux,unix指的是kernel,而不包含上层的各种应用

内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。   

内核,指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。

完整的OS:

kernel+Application

狭义的OS:kernel

GUN的所有免费软件,都是跑在Unix之上的,

而Linux早期宣布的,linux只是kernel

www.top500.org

OS的接口有两类:

GUI:graphic user interface

GNome:c,gtk研发环境

KDE:c++,QT研发环境

FACE:

CLI:command line interface

bash,zsh,sh,csh,ksh

OS的功能:

驱动程序

进程管理

安全

网络功能

内存管理

文件系统

...

OS之上有很多的软件,有一个特定的应用程序,用户接口

用户通过用户接口,进行程序的启动和关闭

OS把底层的复杂接口封装起来,然后对外提供更为简洁的接口//system call

把system call再次封装为更简单的接口:库,方便程序员的编写

程序员,写程序可以直接调用库,或者直接调用OS

|程序员写程序|

|-------------| //只需要调用库接口,如果直接system call的话,需要调用很多接口

|lib  |       | //libraries call

|-------------|

|OS           |  //system call

|—————————————|

|硬件接口     |

---------------

API:application program interface//自己写的程序,供别人调用,调用函数的时候使用

但是自己又不想告诉别人源码

//程序员面对的编程接口

POSIX:portable operating system,任何一种遵循POSIX标准的API

在A上能够运行,也能够在B上运行。

POSIX:是一个统一的API标准,要求提供统一的调用接口

ABI:application binary interface//

//程序应用者面对运行程序的接口

GNU:

源码:编译成为 二进制格式

gcc,glibc,vi,linux//全是源码的

//源码编译,需要编译程序(gcc),但是gcc也是源码的需要被编译

//GNU发布的各种程序都是源代码

发行商:把linux,glibc,gcc,vi等源码拿过来,编译成一个OS

例如redhat

最主流的发行商:

debian:kali,ubuntu,knopix,mint//社区,没有商业公司支持

//更难学,技术要求更高

arch:archlinux 不是主流发行版,但是也比较出名

slackware:suse,opensuse //德国,界面华丽,而且简介,强悍

redhat--->redhat enterprise{RHEL},centos{commutity enterprise OS}

\> fedora Core:社区维护个人版redhat

//可以把centos认为认为RHEL的山寨版

各发行商,从linux官网拿到的都是源码,

然后自己编译好之后,提供稳定版本

发行版本号:

Linux:major.minor,release //主,次,修改(BUG)

www.kernel.org

GNU:

vi

gcc

发行版也有自己的版本号,这个和内核没有关系

RHEL:5.x,6.X,7.X

GPL和BSD以及Apache开源协议:

GPL:开源和免费,”传染性“

允许免费使用,修改,但不允许修改后添加的代码作为闭源软件发布和销售

这也就是我们为什么能用免费的Linux,以及各种商业公司开发的免费软件了

GPL协议的主要内容:

使用类库引用,修改后的代码或者衍生代码,也必须采用GPL协议,也就是说,你的软件中有我的GPL代码,则必须开源和免费

BSD:声明,不必免费

再发布的源代码有原有的,则必须带有源代码的BSD协议再发布的二进制类库/软件,需在软件的文档,和版权声明包含原有的BSD协议不可以用开源代码的作者,机构名字做市场推广

//商业集成,首选

Apache:

和BSD类似,允许修改后再次发布

android:

LGPL:

主要为类库使用设计的开源协议,允许包含遵循LGPL类库的商业软件引用和发布和销售

1.PS1,PS2,PS3分别表示哪些内容:

1、PS1——默认提示符 如下所示,可以通过修改Linux下的默认提示符,使其更加实用。在下面的例子中,默认的PS1的值是“\s-\v\$”,显示出了shell的名称的版本。我们通过修改,可以使其显示用户名、主机名和当前工作目录。

2、PS2——再谈提示符

一个非常长的命令可以通过在末尾加“\”使其分行显示。多行命令的默认提示符是“>”。 我们可以通过修改PS2 ,将提示符修改为"continue->" 。

3、PS3——Shell脚本中使用select时的提示符

你可以像下面示范的那样,用环境变量PS3定制shell脚本的select提示:

参考:

http://os.51cto.com/art/201205/334954.htm

2.随机数脚本:

产生随机数,并排序

#!/bin/bash

#

file=`mktemp a.XXXX`

for i in {0..9} ;do

a[i]=${RANDOM}

echo ${a[i]} >> $file

done

sort -n $file

3.yum命令的update和upgrade

yum update和upgrade的区别

yum -y update //升级所有包同时也升级软件和系统内核

升级所有包,改变软件设置和系统设置,系统版本内核都升级

yum -y upgrade

升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变

yum -y update //升级所有包同时也升级软件和系统内核

yum -y upgrade //只升级所有包,不升级软件和系统内核

五、附加

http://mp.weixin.qq.com/s?__biz=MzA3OTgyMDcwNg==&mid=2650626943&idx=3&sn=ed38732454d398b9188acdebd4d04b19&chksm=87a459b2b0d3d0a483cf34532aa2c1a6dcf9dbf6b66ea1015e13f9f687e8221f93a7f1ef3b84&mpshare=1&scene=23&srcid=1221kz3W8gtDoGVdYvTb10JW#rd

1.linux主要发行版

Debian:ubuntu,kali---//deb扩展名

slackware:SUSE

Redhat:RHEL,centos,Fedora Cora--//rpm包管理

2.OS应该提供的功能

1、用户界面User interface

2、驱动管理Device drivers

3、网络通信Networking

4、文件系统FS

5、进程管理processing management

6、内存管理Memory management

7、安全机制security

3.命令

ifconfig  -s//显示摘要信息

echo

-n 不换行

-e 让转义字符生效

\n换行,\t水平制表符

tty

startx

export

aaa=bbb

export aaa //加入环境变量

env |grep aaa

export -n aaa //删除该变量

env |grep aaa

export PATH=$PATH:/usr/local/bin  //添加新的变量

pwd

-L  显示逻辑地址

-P  目录是软连接,显示实际物理地址

hitory

n

-a 添加记录

-r 从文件读取命令

-w 写入到文件中

-c 清空

!21 执23:00

-r  now

-r +30 ‘reboot now‘  //30min后重启,并提示reboot now

poweroff -w //只显示关机警告,并不真正关机

poweroff

-f 强制

-p 断电停机

-w 只显示警告

reboot

hwclock和date //UTC:universal time coordinated世界协调时间

clock和hwclock作用一样

clock --set --date="12/22/2016 21:05:01" 设置硬件时钟时间

date +%Y-%m-%d-%H-%M-%S

4.获取帮助信息:

内置命令:help bash

外部命令:man httpd

其他方式获取:

1)info:获取Linux在线文档;

2)合理利用搜索引擎Google来获取帮助信息;

3)程序自身的帮助文档,有README、INSTALL、Changelog等;

4)程序的官方文档

man帮助信息:

man1:用户命令

man2:系统调用,内核函数

man3:C库调用

man4:系统设备手册,包括特殊文件

man5:配置格式手册

man6:游戏的使用手册

man7:杂项

man8:系统管理手册,只有根用户才能使用

图1:计算机硬件系统

根据冯诺依曼计算机体系结构模型,中央处理器(CPU)与内部存储器(Memory)和I/O(输入/输出)设备合称为电子计算机三大核心部件。

中央处理器(CPU,Central Processing Unit)

运算器主要由算数逻辑单元ALU和通用寄存器组成,主要用于完成算术运算和逻辑运算。

控制器是整个计算机的控制中心,它的主要功能是周而复始地取指令、分析指令,在根据指令功能向其他部件发出控制信号以执行指令。

存储器(Memory)

存储器主要用于存储计算机的程序和数据,根据作用可以在分为内部存储器(内存)和外部存储器,内部存储器容量小,速度快,与CPU通过系统总线相连,CPU可以直接访问。而外部存储器速度慢,CPU无法直接访问里面的数据,常用的外部存储器有硬盘、u盘、光盘等。

I/O设备(输入/输出设备)

输入设备用于将程序和数据输入到计算机存储器中,通常输入设备有鼠标、键盘、扫描仪、麦克风等。

输出设备通常用于将计算机存储器中的数据输出。常用的输出设备有显示器、音响、打印机等。

所有的外部设备都无法和CPU直接通信,必须通过接口(Interface)中转后才能和CPU通信。独立显卡、独立网卡等是典型的计算机接口设备。

计算机大多采用总线结构,系统总线将CPU。内存。各种接口相连接。计算机中的总线对外留有各种形式插接口,用于将计算机内的接口设备与CPU相连接。

图2:软件系统

图3:linux发行版

时间: 2024-08-10 01:48:05

Linux入门(一)的相关文章

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

Linux入门之VIM快捷使用

Linux入门之VIM快捷使用 简介: 文本编辑器,字处理器,类似nano 字符全屏编辑器,而sed 为行编辑器 来源: vi : Visual Interface vim: VI iMprpbed    (vi的增强版) 全屏编辑器,模式编辑器 vim模式: 1.编辑模式(命令模式) 2.输入模式 3.末行模式 模式转换: 1.编辑-->输出: i:在当前关标所在字符的前面,转为输入模式 a: 在当前关标所在字符的后面,转为输入模式 o: 在当前关标所在字符的下方,新建一行,并转为输入模式 I

linux入门基础——linux软件管理RPM

因为linux入门基础是基于CentOS讲解的,讲的是CentOS上的软件包管理.ubuntu的软件包管理有这些:ubuntu软件包管理,包管理指南,ubuntu软件包管理. linux软件管理:RPM软件包管理 源代码形式 绝大多数开源软件都是直接以源代码形式发布 源代码一般会被打包成tar.gz的归档压缩文件 程序源代码需要手动编译成二进制形式之后才能够运行使用 源代码基本编译流程: 1 ./configure   检查编译环境.相关库文件以及配置参数并生成makefile 2 make  

Linux入门基础命令(四)

Linux入门基础命令(四)文件系统与目录结构: 1.文件和被组织成一个单根倒置树结构2.文件系统从根目录下开始,用"/表示"3.以.开头的文件为隐藏文件4.路径分割的 /5.文件有两类数据(元数据:metadata 数据:data)6.文件系统分层结构:LSB(Linux Standard Base)FHS:(Filesystem Hierarchy Standard)7.文件名最长255个字节8.包括路径在内文件名称最长4095个字节9.蓝色-->目录 绿色-->可执行

Linux入门基础命令—cp

Linux入门基础命令-cpcp格式有以下几种 A1.如果SOURCE是一个文件,目标文件不存在:当将SOURCE复制到另外一个当前目录下不存在的文件(会新建这个文件)比如下面的这个例子是把issue复制到abc文件中,而本来当前目录app是不存在abc这个文件的,当进行复制的时候会自动生成abc这个文件,当然这两个文件只是名字不同大小是一样的: A2.如果将上述的命令再执行一遍,本来abc这个文件是已经有内容了,若再去执行,那么issue中的内容将会覆盖掉原来abc中的内容(下面红色箭头所指的

Linux入门之CentOS7内核编译三部曲(1)

Linux入门之CentOS7内核编译三部曲(1) 我们知道,一个Linux系统的主要组成是由liunx内核核心和一些支持模块组合而成的.但是在某些场合中,需要某项功能,而当前内核的核心或者模块不支持此功能,那么就需要对内核进行一个升级或者重新编译内核添加相应的功能,以此提供了对此功能的支持. 编译前的准备 认识kernel 所为kernel,就是一种操作系统的核心,当然也是一个文件,而这种核心提供了对一些硬件的支持,一般来说其中包含了一些对常见硬件核心驱动的核心代码.启动系统时会通过加载MBR

Linux入门之CentOS7内核编译三部曲(2)

Linux入门之CentOS7内核编译三部曲(2) 在linux系统中,编译完了内核,得到了所需的功能,并不能表示就已经能完美完成我们的所需.因为内核只是做一个核心的硬件及核心代码的支持,而注意的模块支持任然是对应版本的内核模块文件.这些文件决定着平时能否使用哪些功能.这次不会介绍如果添加给上次编译的新内核模块功能,主要介绍模块的功能和作用以及其加载和卸载. 查看当前系统以及加载的内核模块命令:lsmod  modinfo lsmod 命令 lsmod - program to show the

Linux 入门学习之rpm软件包管理

Linux入门之软件包管理 在linux有很多类的软件包管理机制,但是在redhat.centos这类版本的系统中,都会使用一种相同的机制,就是rpm软件包管理机制,当然,还有其它版本的linux使用的不同机制: debian:使.deb文件,dpkg包管理器 redhat:使用.rpm文件,rpm包管理器 软件包在使用中又分类两种(源码包和二进制包): 源码包:一般是提供了一些源码模块和编译脚步组合起来的压缩文件,命令格式如: name-version.tar.{gz|bz2|xz} 等,这里

linux 入门教程

linux入门教程 搜索 Linux入门教程 前言 第一章 关于Linux的历史 第二章 图形界面还是命令窗口 第三章 Linux操作系统的安装 第四章 初步进入linux世界 第五章 Linux系统的远程登录 第六章 Linux文件与目录管理 第七章 Linux系统用户以及用户组管理 第八章 Linux磁盘管理 第九章 文本编辑工具vim 第十章 文档的压缩与打包 第十一章 安装RPM包或者安装源码包 第十二章 学习shell脚本之前的基础知识 第十三章 正则表达式 第十四章 SHELL 脚本

Linux入门介绍

Linux入门介绍 一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以及游戏支持度不足 Linux的应用 网络服务器 关键任务的应用(金融数据库.大型企业网管环境) 学术机构癿高效能运算任务 手持系统(PDA.手机.导航系统) 个人办公使用 Linux的吉祥物/Logo 企鹅(英文名:Tux),由来:因为Torvalds在小时候被企鹅咬过,因此印象非常深刻 在Linu