Linux基础(更新ing......


1、  操作系统的基本概念

a)   现代计算机系统中运行的软件通常为一个个进程,磁盘上的数据存储为一个个文件

b)   用户视角中操作系统的作用:程序开发、程序运行、I/O设备访问、文件访问、系统资源的访问、错误检测和响应、日志服务

c)   系统视角中操作系统的作用:一台计算机就是一组硬件和软件资源的集合,操作系统作为这些资源的管理者而存在,负责对各种软硬件资源进行分配和管理

d)   计算机系统中的资源按照其作用可大致分为四类:处理器、存储器、I/O设备和文件(程序和数据)

e)   操作系统的基本特征:

         i.       并发:解决计算机系统中部件和部件之间相互等待的问题,有效地改善系统资源的利用率,从而提高系统的运行效率

         ii.      共享:互斥共享方式(打印机)和同时访问方式(磁盘)

         iii.     虚拟:指把一个物理上的实体变为一个或多个逻辑上的对应物(虚拟处理器技术、虚拟存储器技术、虚拟设备技术)

    1.   虚拟存储器技术,即将计算机的物理外存虚拟为虚拟内存,从逻辑上扩充内存容量

        iv.      异步:指在相同的计算机环境和初始条件下,在同一数据集上运行的同一程序每次执行的顺序和所需时间都不一定相同。提高了计算机系统的性能和灵活性

2、  操作系统的基本功能和原理

a)   计算机系统由硬件和软件组成,硬件(处理器、存储器、各种输入/输出设备等),软件资源(操作系统软件、磁盘文件、应用程序)

b)   操作系统应具备五大基本功能

         i.      处理器管理:中断处理、进程管理

    1.   中断是指计算机在执行期间,系统内发生任何非寻常或非预期的急需处理的事件,CPU暂时中断当前正在执行的程序而转去相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程
    2.   中断向量表中存放了每个中断对应的中断处理程序的入口地址
    3.   进程是资源分配的基本单位,同时也是处理器调度的基本单位;线程是被处理器调度运行的最小单位
    4.   线程被包含在进程之中,一个进程可以并发多个线程
    5.   同一进程中的多条线程共享该进程中的全部系统资源(虚拟地址空间、文件描述符);但各个线程有各自的调用栈、寄存器环境和线程本地存储
    6.   进程是一个动态概念,有并发特征、有生命期;程序是一个静态概念,在外存长期保存
    1.   进程通信:共享内存方式、消息传递方式、管道通信方式
    2.   CPU调度的情况:运行态->等待态,运行态->就绪态,等待态->就绪态,进程终止
    3.   CPU调度算法:先到先服务调度算法、最短进程优先调度算法、轮转调度算法、优先级调度算法、高响应比优先调度算法、多级反馈队列调度算法

        ii.      存储管理

    1.   操作系统的存储管理主要是针对内存储器的管理,负责对内存的分配、回收以及提供在存储层次间数据移动的管理机制
    2.   虚拟内存的基本思想:每个进程有独立的逻辑地址空间,内存被分为大小相等的多个块(页),每个页都是一段连续的地址
    3.   分页存储管理将程序的逻辑地址空间划分为固定大小的页,而物理内存划分为同样大小的页框。需要CPU的硬件支持来实现逻辑地址和物理地址之间的映射

      iii.      设备管理(存储设备、输入/输出设备)

    1.   负责处理器内核与外部设备之间的数据交互(把设备分配给某个请求使用该设备的进程、处理CPU和设备之间的I/O通信、响应设备的中断请求、维护和回收设备)
    2.   由于CPU和外设之间速度相差很大,引入缓冲技术和虚拟设备技术

        iv.      文件管理

    1.   内存中的数据不能持久保存,因此大量程序和数据通常以文件的形式存储在外存中,需要时再将它们调入内存

         v.      作业管理

3、  Linux系统特征

a)   开放性:遵循POSIX标准和开发系统互连(OSI)国际标准

b)   良好的可移植性

c)   安全稳定

d)   广泛的硬件支持

e)   支持几乎所有的网络协议及开发语言

f)   丰富的应用程序和开发工具

g)   自由软件

4、  内核指的是一个提供设备驱动、进程管理、文件系统、网络通信等功能的系统软件,内核并不是一套完整的操作系统,它只是操作系统的核心

5、  Linux简单命令

a)   w和who命令:查看服务器上目前已登录的用户信息,w还能知道每个用户执行任务的情况

         i.       -h:不显示输出信息的标题

         ii.       -l:用详细格式输出

         iii.      -s:用简洁格式输出,不显示登录时间、JCPU、PCPU时间

b)   echo命令:将命令行中的参数显示到标准输出(屏幕)上

         i.       -e:支持反斜线控制的字符转换

         ii.      -n:取消输出后末行的换行符号

c)   Date命令:显示或设定系统的日期与时间

d)   Passwd命令:密码配置

6、  Linux的软件包可细分为源码包和二进制包。二进制包管理系统主要有RPM包管理系统和DPKG包管理系统

7、  软件安装、运行与卸载

a)   安装RPM包格式:rpm -ivh 包全名

         i.      -i:安装(install)

        ii.      -v:显示更详细的信息(verbose)

      iii.      -h:打印,显示安装进度(hash)

b)   升级RPM包格式:rpm -Uvh 包全名 //  rpm -Fvh 包全名

         i.      -U:若未安装,则直接安装;已安装,则升级到最新版

        ii.      -F:若未安装,则不会安装

c)   卸载RPM包格式:rpm -e 包全名

8、  Shell的种类:Bourne shell(sh)、C shell(csh)、Korn shell(ksh)、Bourne-again shell(bash)

a)   Bash优点:命令记忆功能(~./bash_history)、自动补全功能(tab)、别名设置功能(alias ll=’ls -l’)

b)   chmod u+x sh01:设置shell脚本的权限为可执行

9、  shell基础

a)   通配符

         i.      * :匹配任意字符的0次或多次出现

         ii.      ?:匹配任意单个字符

        iii.      []:匹配该字符组所限定的任何一个字符

        iv.      [^]或[!]:匹配不在该字符组中的任何一个字符

         v.      {string1,string2,…}:匹配其中一个指定的字符串,逗号前后不能出现字符,ls /home/{file1,file2}

b)   引号:单引号、双引号、倒引号(``)

         i.      使用转义字符“\”引用单个字符

        ii.      使用单引号引用一串字符,均作为普通字符

      iii.      使用双引号引用一串字符,但保留“$”“\”和倒引号的特殊含义

c)   命令执行操作符

         i.      顺序执行:ls;date;cd /user;pwd

        ii.      逻辑与&&,当前一条命令执行正确时后一条命令才能执行:ls && date

      iii.      逻辑或||,当前一条命令执行错误时后一条命令才能执行:ls || date

d)   小括号()和大括号{}

         i.      大括号:左括号{后面应有一个空格,右括号}之前应有一个分号“;”

        ii.      小括号:无大括号的要求

      iii.      区别:小括号执行成组命令时,需要重新开启一个子shell来执行;大括号则在当前shell执行

e)   管道符|、后台命令符&、注释符#

         i.      ls -l /etc | more   #more展示更多

10、      shell编程

a)   用户自定义变量

         i.      变量名:以字母或下划线开头,有字母、数字和下划线组成

        ii.      变量赋值:name=zhangsan     name=“zhang san”

b)   系统预定义变量

c)   位置参数变量($n,$#,$*,$@)

         i.      $n:n为数字,当参数超过10个需要用大括号,$1,${10}

        ii.      $#:命令行上参数的个数

d)   环境变量:环境变量是全局变量,而用户自定义变量是局部变量

         i.      unset 变量名:注销变量

        ii.      set,env,export:查询变量;set包括局部变量和全局变量;env查询环境变量;export查询本进程利用export定义的全部变量

e)   数值运算

         i.      declare [选项] 变量名:声明变量类型

    1.   [选项]:-a:数组型;-i:整数型;-r:只读变量;-x:环境变量

        ii.      expr和let命令

    1.   expr运算的“+”号两侧必须有空格dd=$(expr $aa + $bb)
    2.   let:let sum=$aa+$bb

      iii.      使用“$(($aa+$bb))”运算

f)   控制结构

         i.      if语句

    1.   if test -f “$1”

         then 命令1

            elif [条件判断2]

            then 命令2

            else 命令3

                      fi

    1.   test condition ó [ condition ]([]两端需要有空格):条件测试,-r:可读;-w:可写;-x:可执行;-f:普通文件;-d:目录文件;-b:块设备文件;-c:字符设备文件;-s:文件长度大于0;-e:文件是否存在

        ii.      case语句

    1.   case $变量名 in

          “值1”)   命令

                       命令;;

          “值2”)   命令

                       命令;;

          *)命令;;

                     esac

      iii.      while语句:只要判断条件成立,循环就会执行

    1.   while condition(判断条件)

         do

              statements

           done

        iv.      until语句:先执行再判断条件是否成立

    1.   until condition

        do

              statements

        done

         v.      for语句

    1.   for((exp1;exp2;exp3))

        do

              statements

        done

        vi.      select in语句

     select variable in value_list

       do

          statements

       done

g)   shell中的break和continue可以跳出多层循环

         i.      break n : n为层数

        ii.      continue n

11、      shell函数

  function name(){

      statements

      [return value]

12、      用户管理

a)   用户和用户管理相关的文件

         i.      passwd文件:系统用户配置文件,存储了系统中所有用户的基本信息,可读

        ii.      shadow文件:用于存储Linux系统中用户的密码信息(影子文件)

      iii.       group文件:用户组配置文件,存放用户的所有信息

        iv.      gshadow文件:存放用户组的密码信息

b)   管理命令

         i.      添加用户:useradd:新建用户

        ii.      密码配置命令:passwd 用户名

      iii.       修改用户信息:usermod 用户名

        iv.      修改用户密码状态:chage 用户名

         v.     删除用户命令:userdel 用户名

        vi.     查看用户的UID和GID命令:id 用户名

      vii.      用户间切换命令:su (-) 用户名;“-”选项表示在切换用户身份的时候,连当前使用的环境变量也切换成指定用户

     viii.      用户组管理命令:groupadd 组名

13、      文件管理

a)   文件是Linux系统处理信息的基本单位,所有软件都组织成文件,由数据项和文件控制块(索引节点)组成

b)   文件是数据的集合,文件系统不仅包含着文件中的数据而且包含文件系统的结构

c)   文件:文件系统中存储数据的一个命名对象,最小的逻辑存储单元

d)   目录:包含许多文件控制块项目的一类特殊文件,层次结构

e)   子目录:被包含在另一个目录中的目录,“/”为根目录

f)   设置树状、具有层次的文件结构主要的目的是方便文件系统的管理和维护

g)   链接文件可分为硬链接文件和符号链接文件;设备文件可分为块设备和字符设备

14、      grep命令:用来在每一个文件中搜索特定的模式

a)   grep    CLERK   empdate:在empdate中找出CLERK

15、      sed命令:自动编辑一个或多个文件

a)   sed sed命令   文件名(命令:d删除,p打印,a匹配行后追加,i匹配行前插入,c整行替换,r读取文件,w将文本写入文件)

b)   sed ‘3,5d’ file   删除file的3到5行

16、      awk命令:文本数据处理工具,与sed类似

17、      sort命令:排序命令 sort [选项] 文件名

18、      wc命令:统计命令   wc [选项]   文件名      wc /etc/passwd

a)   -l:只统计行数

b)   -w:只统计单词数

c)   -m:只统计字符数

19、      访问权限管理

a)   使用ls -ls命令可以查看文件和目录的权限信息

b)   文件权限:读文件(r)、写文件(w)、执行(x)

c)   Linux系统将访问文件的用户分为3类(文件的所有者、所属组、其他人),文件权限一共有10位,第一位用于表示文件的具体类型,后9位对应设定3类用户的权限

d)   rwx权限对目录的作用:只赋予r权限时,只能查看目录结构,而无法进入目录(需要x权限)

e)   常用目录权限:0(---)、5(r-x)、7(rwx)

f)   修改权限位的命令

         i.      chmod命令:chmod 权限值 文件名    权限值(r--:4、rw-:6)

        ii.      chmod 777 file  -> -rwxrwxrwx

      iii.      在shell命令中u、g、o表示三种身份所有者、所属组、其他人;a表示全部身份 chmod u=rwx,g=r,o+w file    权限  +:加入;-:删除;=:设定

        iv.      文件(目录)的初始权限=文件(目录)的最大默认权限 – umask权限(默认022)

         v.      chown命令(change owner)用于修改文件或目录的所有者,chown 所有者 文件或目录

        vi.      chgrp命令(change group)用于修改文件或目录的所属组

20、      进程管理主要作用

a)   判断服务器的健康状态

b)   查看系统中所有的进程

c)   “杀死”进程

21、      进程监控

a)   ps命令为最常用的进程监控命令,选项-a:显示一个终端的所有进程;-u:显示进程的用户归属和内存使用情况;-x:显示没有控制终端的进程;-l:更加详细信息;-e:显示所有进程

b)   pstree命令:以树形结构显示程序和进程之间的关系

c)   top命令:实时监控进程运行情况

22、      磁盘管理

a)   df:列出文件系统的整体磁盘使用量

b)   du:检查磁盘空间使用量

c)   fdisk:用于磁盘分区

23、      VI编辑器

a)   工作模式:命令模式、文本编辑模式、末行模式

b)   文本插入编辑输入i、a或o

c)   查找与替换

         i.      ?字符串:在文本中查找与字符串对应的内容

        ii.      n:查找下一个匹配

      iii.      N:查找上一个匹配

d)   yy:复制当前行

e)   p:在光标后面插入复制的文本

24、      Emacs界面包括:标题栏、菜单栏、窗口区域、模式行、回显行