Linux

Linux课程

虚拟机配置和软件安装

主OS==>宿主机 Host Os,虚拟机OS==>客户机 Guest Os

一些虚拟机:VMWare / KVM / VirtualPC / XEN / OpenVZ

虚拟机作用:开发,测试不同配置/环境

使用VMWare安装Linux虚拟机的过程:创建虚拟机,加载ISO,命名虚拟机,指定容量(指的是最大容量)。

1CPU/2Kernel 和 2CPU/1Kernel 的区别:同CPU的内核之间有核间总线相连,信息交换速度快,不同CPU之间信息交换要经过内存,导致速度降低。

网络:

  1. Bridge:Host/Guest机接在一条总线上。
  2. NAT:Host作为网关,Guest是接在Host上的。
  3. Host Only:仅主机访问。

LVM 逻辑卷管理。逻辑卷和物理卷。

根分区,交换分区(休眠用),挂载点(磁盘被挂载到文件系统的一个分支上)

口令和密码的区别:口令password即一般的登录“密码”,密码指明文和密文转换的密钥。

二进制包 rpm(redHat) deb(debian)

源码包 tar tar.gz zip rar

rpm包安装:

-i 安装;-U 升级;-e 移除;-v 显示详细信息;-h 显示安装进度

查看已经安装的shell:

rpm包查询:

which查询安装路径:

作业 CentOS7安装软件的方法

  1. rpm -ivh xxx.rpm 安装。将会用到 wget arch rpm。具体步骤如下:

    1)找到网络上的 rpm 资源,用 wget 工具下载。下载前先确定机器架构,使用命令 arch 确定是 MIPS,X64还是 ARM 架构,从而确定应当下载的 rpm 文件。

    2)使用 rpm 安装。

    3)也可以跳过wget步骤,用url作为目标进行安装。若发现缺失依赖,则需要逐个安装或改用yum安装。

     

  2. yum install xxx 安装,使用的是软件源,安装相对来说比较便捷。配置方法如下:

    假设现在要更换base repo:

    1)yum 的配置分为 main 和 repo两部分,main部分由 /etc/yum.conf 决定。使用vim编辑配置。

    2)软件源存放在 /etc/yum.repos.d 目录下,软件源命名时要加.repo。发现系统自带CentOSbase.repo和epel.repo。用vim打开repo,发现是类似ini配置文件的格式:

    3)先把repo重命名备份。然后使用wget从url下载对应软件源,将其下载到上文所述的目录下,并重新命名为 xxx.repo。

    4)yum 清除并重新生成缓存

    5)yum 的两种安装方式,分别安装单个软件及其依赖,软件包和它们的依赖。

     

  3. 下载源码包,编译后安装。用到 wget, tar, make。具体步骤如下:

    1)切换到存放下载文件的目录下,用wget下载tar.gz包。

    2)用 tar 解包,进入源码目录后,用 ./configure 检查配置和环境,生成 makefile 文件后,依次运行 make,make install 完成安装。这种方法安装同样可能出现依赖缺失的问题。

Linux网络

七层OSI参考模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

Physical, DataLink, Network, Transport, Session, Representaion, Application

五层模型:物理层,数据链路层,网络层,传输层,应用层。

TCP三次握手:A--syn-->B,B--syn ack-->A,A--ack-->B

TCP四次挥手:A--fin-->B,B-->ack-->A,B--fin ack-->A,A--ack-->B

各种地址:MAC地址,IP地址,port,domain

IP编制的发展:

  1. A,B,C,D,E类网络地址。分为 固定网络位 + 主机位。

    类别 范围 0 8 16 24 32

    A 0-127 0-----------|

    B 128-191 10----------------------------|

    C 192-223 110--------------------------------------------|

    D 224-239 1110----------------------------------------------------------|

    E 240-255 1111----------------------------------------------------------|

  2.  

  3. 子网划分

  4. 无分类编制方法

 

Linux命令

系统操作

 

文件查看

计数命令wc

排序命令sort

比较命令

 

帮助命令

 

目录查看之ls

 

软硬连接的区别

 

文件操作

 

查找操作

 

正则表达式

 

命令执行顺序控制与管道

什么是管道:前一个命令的输出作为下一个命令的输入,用 | 搭建管道。

commandA;commandB;commandC,将ABC命令顺序执行。

commandA && commandB,逻辑与,短路性质,如果前面的命令返回0,后面的命令才执行。(0表示正常)

commandA || commandB,逻辑或,短路性质,如果前面的命令返回非0,后面的命令才执行。(!0表示异常)

commandA && commandB || commandC,可以理解为?:三目运算符。

$? 环境变量表示上一次执行命令的结果。

 

文件系统

unix设计哲学:every thing is a file

Linux启动时首先挂载根文件系统,然后在挂载点上自动或挂载其他文件系统。

根文件系统rootfs的一些常用文件夹:

/proc 系统信息

/home 用户目录

/root root专用目录

/var 共享信息

文件权限:-rwx r-x r-x,分别是属主权限,属组权限,他人权限。r表示可以读,w表示可以写,x表示可以执行,-表示不具有某权限。

权限管理

 

压缩和打包

 

存储

进程

 

VIM

 

Shell

How to execute a shell script?

点命令/非点命令的区别:点命令同一进程运行,非点命令不同进程运行。

echo 参数传递与参数变量:

 

 

gcc make makefile

add.c
add.o
sub.c
sub.o
mult.c
mult.o
div.c
div.o
prog
href.h
main.c

如何根据上图编写makefile?

默认规则:xxx.o 默认依赖 xxx.c ,因此改进:

gdb

Git

版本控制,分布式 git,集中式 svn。

 

local:
remote:
git add
git commit
git rm
git push
git pull
pull request
fork
Local
Temp
LocalRepo
RemoteRepo
SameRemoteRepo

 

 

Linux系统管理

 

 

作业 了解 /proc 中的内容并分析其中某个文件

进入 /proc 目录:

image-20200326160916445

/proc 以文件系统的方式为访问系统内核数据的操作提供接口。

包含的内容:CPU信息、安装的加密方式、RAM信息、磁盘状况、网络信息、支持的文件系统、驱动设备信息、物理设备映射等,不一一列举了,可以参考文章:https://blog.csdn.net/zdwzzu2006/article/details/7747977,里面对每个文件的作用都有简略的介绍。

查看其中信息的方法:

  1. cat fileName
  2. more fileName
  3. less fileName
  4. vim fileName

以 cpuinfo 文件为例:

image-20200326164106066

解读参考文章 https://blog.csdn.net/lgstudyvc/article/details/7889364

vendor_id :CPU制造商

cpu family :CPU产品系列代号

model   :CPU属于其系列中的哪一代的代号

model name:CPU属于的名字及其编号、标称主频,这里是2.5GHZ

stepping  :CPU属于制作更新版本

cpu MHz  :CPU的实际使用主频

cache size :CPU二级缓存大小

physical id :单个CPU的标号

siblings :单个CPU逻辑核数

core id :当前物理核在其所处CPU中的编号,这个编号不一定连续

cpu cores :该逻辑核所处CPU的物理核数

apicid :用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续

fpu :是否具有浮点运算单元(Floating Point Unit)

fpu_exception :是否支持浮点计算异常

cpuid level :执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容

wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)

flags :当前CPU支持的功能,例如fpu表示有浮点运算器,acc表示自动时钟控制等。

bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)

clflush size :每次刷新缓存的大小单位

cache_alignment :缓存地址对齐单位

address sizes :可访问地址空间位数

power management :对能源管理的支持

 

作业 安装vim插件

 

以安装YouCompeleteMe为例。

  1. 首先安装 vim 插件管理器,这样安装插件会比较简单,选择 vim-plug 进行安装。

  2. 在home目录下,新建 .vim 文件夹,在里面新建 autoload 文件夹。然后执行以下命令:

    即可安装好 plug.vim 插件。

  3. 配置 .vimrc 文件。新建.vimrc文件,并写入以下内容:

  4. 进入vim,输入 :PlugInstall ,安装过程自动进行。

  5. 安装完毕,输入:PlugStatus,显示YouCompleteMe:OK。

  6. 退出重新进入vim,发现虽然vim版本足够高,但仍报错版本不能达标,YCM不能启动。根据网上的解决方案,卸载vim,并通过 make 的方式安装了8.0+的 vim。

  7. 再次进入vim,下方提示 ycmd server SHUT DOWN,经过搜索,发现是没有正确执行安装过程。进入 '~/.vim/plugged/YouCompeteMe',执行 ./install.py 。安装完毕后,打开一个c文件,此时问题已经消失。

  8. 最后顺利显示了提示。

image-20200416203904261