本章blog主要汇总了Linux计算机架构及相关概念,Linux程序管理,Linux内核功能,Linux终端类型,Linux命令格式、命令类型及Linux命令帮助等相关知识点,并介绍了man命令,which命令,type命令,tty命令,hash命令,dirname命令,basename命令,who命令的相关功能及选项。 


本章Blog相关Linux知识点


  • 计算机架构相关知识

1、cpu如何与I/O设备进行交互? 

通过interrupt终端控制器与I/O设备进行交互。 

2、什么是指令?

指的是0 或 1代码,是由指令集架构定义的单个的CPU操作,每一个内置芯片执行的指令集微码编程。CPU执行的运算方式是由Cpu内在的逻辑设计来决定 ,内化的。问题空间与解空间,就是把问题空间的问题映射到解空间解决的方式。

3、什么是指令集?

所谓指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。

4、什么是内存?

简单来说,内存就是有编址的存储单元

5、什么是系统调用?

系统调用(英语:systemcall),指运行在用户空间的程序向操作系统内核请求需要更高权限运行的服务。系统调用提供用户程序与操作系统之间的接口。大多数系统交互式操作需求在内核态运行,如设备IO操作或者进程间通信。

6、什么是库?

库是对系统调用再次封装,是用于开发软件的子程序集合。库和可执行文件的区别是,库不是独立程序,他们是向其他程序提供服务的代码。

7、编译语言过程?

预处理--> 编译 --> 汇编 --> 链接   ,GCC  :GNU C Complier

8、什么是共享库?

指的是两个或多个程序同时运行时,都依赖内存中的某一个库文件,如.dll库(Dynamic Link   Libraries ,windows系统中共享库),.so库(Shared Object ,Linux系统共享库)

9、什么是变量?

变量指的是命名的内存空间

10、cpu 芯片种类有哪些?

cpu芯片种类包括x86 ,x86-64  ,power(IBM小型机) ,powerPC(苹果) ,Alpha (HP),安腾(HP),UltraSparc (sun),ARM ,MIPS ,M68K等

11、Linux系统有那三大发行商?

Redhat Enterprise 6 ,Redhat 9 --> Fedora;Slackware -->SUSE --> OpenSUSE  (欧洲);Debian  --->Ubuntu  --Mint

12、三大硬件厂商linux系统版本?

SunOS——Solaris ,ultrasparc芯片;IBM ——AIX ,  Power芯片;HP ——HP-UX ,Alpha芯片

13、linux系统安装步骤?

安装系统步骤:硬盘分区,格式化,设置语言,键盘布局,时区,设置用户,选择程序包

安装程序:anaconda ,kickstart +cobbler

14、用户目录与家目录的定义

用户目录:自己具有所有操作权限的目录,也叫家目录或Home目录

工作目录:用户当前所处的目录

  • API与ABI的定义

API(application programe interface) 是应用程序和操作系统之间的接口,凡是符合该API标准的应用程序都可以在支持该API的操作系统上编译通过。

ABI(application binary interface) 是二进制级别的接口,规定了二进制文件的格式、内容、装载/卸载程序的要求、函数调用时的参数传递规则、寄存器、堆栈的使用。

  • 计算机语言分类:

编译型语言:写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件;

解释型语言:解释性语言在运行程序的时候才翻译,效率比较低。

相比较而言,两种不同型语言只是翻译的时间不同

  • 程序与进程的关系:

程序并不能单独执行,只有将程序加载到内存中,系统为他分配资源后才能够执行,这种执行的程序称之为进程。也就是说进程是程序的实例,是程序的子集,每个进程都有自己单独的地址空间。

进程拥有生命周期:进程切换 ,上下文切换 ,保存现场(恢复现场)。

进程和程序并不是一一对应的,一个程序执行在不同的数据集上就成为不同的进程。一般来说,一个进程肯定有一个与之对应的程序,而且只有一个。而一个程序有可能没有与之对应的进程,也有可能有多个进程与之对应。

总体来说程序与进程的区别在于,程序是指令的集合,是进程运行的静态描述文本,而进程则是程序在系统上顺序执行时的动态活动。

  • 环境变量:

Shell 环境是通过环境变量进行配置的,环境变量保存了对应用程序的配置,在当前进程有效 。若长期有效,需把环境变量保存到配置文件中。             

引用环境变量:echo ${变量}   或者  echo $变量   例:#echo $PS1           

命令提示符$PS1 格式为: [\u@\h \W]\$ ,可在/etc/bashrc文件中查看定义。其中  \u表示登录的用户名 ,\h 表示主机名,\W表示工作目录的路径基名。

bash中,管理员命令提示符为#;普通用户命令提示符为$

  • linux路径,路径分隔符 为“/”

相对路径:从当前位置开始的路径,如 ./CentOS-Base.repo;

绝对路径:从顶层开始的路径,如 /etc/passwd;

  • Linux文件系统特性 :

文件名可以使用除 / 号外的任意字符 ,但长度不能超过255字符;

严格区分大小写,abc与ABC代表不同的含义

  • Shell界面分类 :

GUI图形界面:Gnome;KDE;Xfce

CLI命令行界面:bsh;csh;zsh;ksh;bash


Linux程序管理


程序四要素:二进制程序、配置文件、库文件及帮助文件

  • 程序管理器:

Debian 的程序包管理器 :deb

SuSE、Redhat的程序包管理器 :rpm

  • 通用软件

内核:文件系统(File system)、网络协议栈、进程管理、加密解密机制、驱动程序、创建索引加密、解密功能;TCP/IP协议 (内核模块)

  • 应用软件

系统管理:网络配置、文件系统(分区、raid)、用户、文件(创建、删除、移动、权限)、加密解密、内核(编译)、启动过程、程序包管理

网络服务管理:web(Apache,nginx,mysql,php)、NFS、DNS、FTP、Postfix/D :ovecot 、网络安全(Iptables、tcp_Wrapper)

Mysql:CRUD、索引、存储引擎、备份恢复、集群、分片

集群:LB、HA、Hadoop 、GFS

WEB:Nginx 、Haproxy、Keeplived、tomcat、分布式文件系统、CDN、Nosql

虚拟化:Xen 、KVM、LXC/openVZ

Laas :Openstack

自动化运维:zabbix 、nginos 、Python

规模并行处理平台:hadoop

  • Linux系统哲学思想:

一切皆文件,open,read,write ,close;

由众多目的的单一应用程序组成:一个程序只做一件事,且做好;

组合目的单一的小程序完成复杂任务;

尽量避免跟用户交互;

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

提供机制而非策略;

  • 自由软件的含义:

自由使用

自由学习和修改

自由分发

自由创建衍生版


Linux内核功能


  • 进程调度(SCHED)

进程调度负责控制进程对CPU的访问,当需要选择下一个进程运行时,由进程调度子系统根据某种算法选择最值得运行的进程。

如果某个进程还在等待其他资源,则该进程将不会被选择。

Linux的调度算法是基于优先级的。

  • 内存管理 (Memory Management)

用来管理多个进程对内存的使用

Linux支持虚拟内存,即在计算机中运行的程序,其程序代码,数据,堆栈的总量可以超过实际内存的大小,操作系统只把当前使用的程序块保留在内存中,其余还没有运行的程序块,则保留在磁盘中。必要时,操作系统负责在磁盘和内存间交换程序块 —— LKM支持。

内存管理从逻辑上可以分为

    硬件无关部分:提供了进程的映射和逻辑内存的兑换

    硬件有关部分:为内存管理硬件部分提供了虚拟接口。

  • 虚拟文件系统 (Virtual File System)

隐藏了各种硬件的具体细节,为所有设备提供了统一的接口

虚拟文件系统提供了数十种不同的文件系统:

    逻辑文件系统: Linux所支持的文件系统,如ext3, FAT等

    设备驱动程序:为每一种硬件控制器所编写的设备驱动模块

  • 网络接口 (Network Interface)

网络接口提供了对各种网络标准的存取和各种网络硬件的支持。网络接口可分为:

    网络协议:实现每一种可能的网络传输协议

    网络驱动程序:与硬件设备的通信。 每一种可能的硬件设备都有相应的设备驱动程序。

  • 进程通信 (Interprocess Communication)

进程通信提供了进程之间的各种通信机制。分为三种主要的通信方式,适用于进程间;及一种内核态与用户态间的通信方式。


Linux命令终端类型


  • linux终端类型:

串行终端,串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。类型为/dev/ttys/#

物理终端,直接接入计算机显示器通常被称为物理终端,如/dev/console

虚拟终端  ,虚拟终端附加在物理终端之上的,是以软件方式虚拟实现的终端。系统开机后会启动6个虚拟终端,在CentOS6系统中,可以使用快捷键 Ctrl+Alt+F[1-6]切换虚拟终端。类型为/dev/tty#

伪终端(模拟终端)是纯粹的软件方式实现,而且不会附加在本地物理终端上,建立一个telnet或ssh连接使用的终端都是伪终端,如客户端软件ssh ,CRT 等。类型为 /dev/pts/#

  • 常用Linux操作技巧

Ctrl +c 取消当前程序运行

Ctrl+Alt+F[1-6] 启动命令界面,Ctrl+Alt+F7启动图形界面(先启动图形功能#startx)

#startx  &  表示在后台运行

Shift +Pageup/Pagedown  翻屏查看命令界面之前的页

  • 案例

[root@vm ~]# tty    # 显示当前终端访问类型
/dev/pts/0    # 代表了是模拟终端

[root@vm ~]# who    # 查看当前系统登录的所有用户及其信息
root     tty1         2018-09-25 18:38    # 代表了是本机的虚拟终端登陆
root     pts/0        2018-09-25 18:39 (192.168.4.101)    # 代表了是本机的模拟终端登陆


Linux命令类型及命令帮助信息


  • linux命令格式:  

command  options   arguments

命令            选项         参数

选项:调整命令的执行特性

    短选项:-char ,可合并 ;    长选项:--word,多个选项之间必须以空格分隔;

参数:命令的作用对象

    有些命令可以带多个参数;各参数之间使用空格分隔;

  • Linux命令类型 :使用type命令来判断命令类型

alias:别名。

builtin:在shell程序内部中实现的命令为内建命令

外部命令:在文件系统中的某位置有一个与命令名称对应的可执行文件

[root@pxe ~]# type ls    # ls命令为'ls --color=auto'的别名
ls is aliased to `ls --color=auto'

[root@pxe ~]# type cd    # cd命令为builtin内建命令
cd is a shell builtin

[root@pxe ~]# type dirname    # dirname命令为外置命令
dirname is /usr/bin/dirname
  • linux命令获取帮助方式:

1、内置命令:

    # help  COMMAND  内部命令获取帮助

2、外置命令:

    # COMMAND --help 外部获取命令帮助

    # man COMMAND  查看命令man手册

    # info COMMAND 在线文档        

应用程序自带的文档:/usr/shared/doc  帮助文档

google   网络查看帮助

[root@vm ~]# help cd    # 对内部命令cd查看帮助信息
cd: cd [-L|-P] [dir]
    Change the shell working directory.

[root@vm ~]# date --help    # 对外部命令date查看帮助信息
Usage: date [OPTION]... [+FORMAT]
  or:  date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

[root@vm ~]# man cd    # 对命令cd查看man帮助信息
      
[root@vm ~]# info ls    # 命令ls查看帮助信息
  • man 命令介绍  

#  man man命令内容

    NAME :命令名称及简要功能说明

    SYNOPSIS:使用格式-包括详细的可用选项

    DESCRIPTION:详细功能描述

    OPTIONS :选项

    EXAMPLES :使用实例    

使用帮助中命令格式中的字符意义:

    <> 必选

    [] 非必选 ,可选 

    {a|b} 分组 ,a 和 b作为一个使用单元来使用

    ... 同类内容可以重复多次

    |   或者,只能选其一 

  • man的简要使用机制

如何翻屏:

    space  向文件尾部翻一屏

    b    向文件首部翻一屏

    回车键:向文件尾部翻一行

    k   向文件首部翻一行

    Ctrl +d  向文件尾部翻半屏

    Ctrl +u  向文件首部翻半屏

文本搜索:

    /keyword    向文件尾部搜索

    ?keyword    向文件首部搜索                                

    n  跟搜索命令相同的方向(下一个)

    N  跟搜索命令相反的方向(上一个)

    q :退出

  • man 分段机制:1-8

1. 用户命令 2.系统调用 3.库调用 4.设备文件 5.文件格式 6.游戏 7.杂项 8.管理命令

  • 查看某关键字在哪些段落中有使用帮助

# whatis  Keyword  精确查找

    提示:如果whatis的数据尚未完成,可以使用 makewhatis 手动进行

# man -k  Keyword 模糊查找

补充:man其实能为命令(普通命令、管理命令)、程序的配置文件格式、系统调用、库调用、游戏及其他不便归类的文件提供帮助信息。

例passwd命令,这个命令有个配置文件/etc/passwd ,查看配置文件格式  # man 5 passwd,即可查到配置文件格式信息


Linux基础命令


  • type命令

功能:type 命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。

选项:

    -t:输出“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“命令别名”或者“内部指令”;

    -p:如果给出的指令为外部指令,则显示其绝对路径;

    -a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。

[root@vm ~]# type ls
ls is aliased to `ls --color=auto'

[root@vm ~]# type cd
cd is a shell builtin

[root@vm ~]# type date
date is /bin/date

[root@vm ~]# type nginx
-bash: type: nginx: not found

[root@vm ~]# type -p date
/bin/date

[root@vm ~]# type -t ls
alias

  • hash命令:

功能:显示、添加或清除哈希表。linux系统下会有一个hash表,事先通过一个变量设定好了多个路径,当用户输入命令时,shell会自动到这些路径下(由左至右)查看与命令名称相同的可执行文件查找到并执行过的命令会被保存到一个hash查找表中,

[root@vm ~]# hash    # 查看hash表的内容
hits	command
   4	/usr/bin/tty
   1	/bin/date
   5	/bin/rpm
   3	/usr/bin/yum

[root@vm ~]# hash -h    # hash命令帮助
-bash: hash: -h: invalid option
hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]

[root@vm ~]# hash -l    # hash命令列表
builtin hash -p /usr/bin/tty tty
builtin hash -p /bin/date date
builtin hash -p /bin/rpm rpm

[root@vm ~]# hash -r    # 清空hash表

[root@vm ~]# hash
hash: hash table empty

  • whatis命令

功能:是用于查询一个命令执行什么功能,并将查询结果打印到终端上。另whatis命令可显示手册部分的页眉行,然后可以发出man命令以获取附加的信息。whatis命令等同于使用man -f命令。

[root@pxe ~]# whatis ls
ls                   (1)  - list directory contents
ls                   (1p)  - list directory contents

[root@pxe ~]# makewhatis
  • dirname命令:

功能:去除文件名中的非目录部分,仅显示与目录有关的内容。

[root@vm ~]# dirname /usr/local/bin/
/usr/local

[root@vm ~]# dirname /root/
/

[root@vm ~]# dirname /
/
  • basename命令:

功能:用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。

[root@vm ~]# basename /usr/local/bin/
bin

[root@vm ~]# basename /root/
root

[root@vm ~]# basename /
/
  • which命令:

功能:用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

[root@vm ~]# which ls
alias ls='ls --color=auto'
	/bin/ls

[root@vm ~]# which vi
alias vi='vim'
	/usr/bin/vim

[root@vm ~]# which pwd
/bin/pwd


Linux汇总一常用命令


# tty :显示当前终端对应的终端设备文件,即终端访问类型

# who :查看当前系统登录的所有用户及其信息

# hash:显示、添加或清除hash 表

# type COMMAND:显示指定命令类型        

# dirname PATH :查看路径目录名

# basename PATH:查看路径基名     

# which COMMAND:查看一个可执行程序的具体路径,即外部命令的位置

# help BuiltinCommand :查看内置命令帮助信息

# COMMAND --help :获取外部命令帮助

# man COMMAND:查看命令手册

# info COMMAND 在线文档

转载请注明出处:https://blog.51cto.com/itwish