第一节:操作系统的基础知识以及LInux系统的入门

  1、什么是计算机操作系统

    操作系统是一个用来协调、管理和控制计算机硬件和软件的资源的系统程序,它位于硬件和应用程序之间。

  2、什么是系统内核

    操作系统内核是一个管理和控制程序,负责管理计算机的所有的物理资源,其中包括:文件系统、内存管理、设备管理、进程管理、网络管理。

  3、操作系统分类

    服务器OS:RHEL、CentOS、Windows server

    桌面OS:Windows、MAC OS 、Fedora

    移动设备OS:Android,IOS,(YunOS?)

  4、操作系统流派

    目前常用的大多数操作系统都源于Unix,或者借鉴了最初的Unix,如:Windows,Mac OS x,Linux,历史原因都与Unix有一定的关系。

  5、安装、配置Linux

    由于测试方便,使用虚拟机来安装Linux做说明。一般使用VMware WorkStation或者virtualBox 这两种虚拟软件。我使用的是前者。

    ① 下载安装VMware,具体步骤可以问某度。

    ② 下载合适版本的Linux发行版镜像文件,我使用的是CentOS 6.9。第一次使用,建议安装everything版本

      镜像文件常用的网站:

        https://wiki.centos.org/Download

        https://mirror.aliyun.com

        https://mirror.sohu.com

        https://mirror.163.com

    ③ 开始新建虚拟机,根据自己的笔记本硬件情况,选择合理的参数,注意:选择稍后安装镜像。网络三种模式:桥接模式,NAT模式,仅主机模式,根据自己的需求选择合适的模式。注意要区分三者的含义:(简短说一下)———–参考:https://www.cnblogs.com/linjiaxin/p/6476480.html

      ——桥接模式:wmnet0作为虚拟交换机,虚拟机通过交换机链接外网,宿主机跟虚拟机在同一个网段

      ——NAT模式:即转换模式,宿主机网卡跟虚拟机NAT设备连在一起,NAT设备和DHCP服务器连在WMnet8虚拟交换机上。

      ——仅主机模式:Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。

    ④ 安装过程中的各种选项的含义:

      a) install or upgrade an existing system:安装或升级现有的系统
      b) install system witn basic video driver:安装系统和基本的视频驱动程序
      c) rescue installed system:救援安装系统
      d) boot from local drive:从本地硬盘启动

    ⑤ 其他的步骤自己多摸索一下。

  6、Unix认识

    ① 什么是Unix

      Unix就是一个操作系统

    ② Unix的发展史

       在Unix的发展路上,有很多故事,可以查看一些书籍了解。

  7、不同风格的语言的简单介绍,后期在Python中会有详细说明

      汇编语言,最接近底层的语言,但是无法移植。

      C语言(Rust语言),系统级别的开发语言,移植性还是差,需要在某平台编译后,才能在相应的平台运行。

      应用编程,Python的特点是 write once , run anywhere,代码简介,但是运行慢。基于VM虚拟机运行。 

  8、开发接口标准

      ABI:Application Binary Interface 描述了应用程序和OS之间的底层的接口,允许编译好的代码在使用兼容ABI的提醒中无需改动就能运行

      API:Application Programming interface 定义了源代码和库之间中接口,因此同样的源代码可以在支持这个api的任何系统中编译 

  9、硬件平台:

      cpu平台主要有:X86,ARM,PowerPC(苹果),Power(IBM),UltraSparc(sun),Alpha(hp)

  10、Linux并不是Unix

    Linux是类Unix,是参考了Unix的风格而形成的另一种操作系统。而所谓的Linux是指kernel,平时所说的Linux操作系统是指发行版,是Linux内核+GNU提供的应用程序

  11、常见的发行版

    ReadHat、Debian、SUSE

    ReadHat ———> CentOS

    Debain    ———> Ubuntu

    SUSE      ———> openSUSE 

      作为码农,常用的系统有:ArchLinux ———>支持程序的滚动更。如果为了装X,可以使用Mac OS X。

      Linux分支参考网站:http://futurist.se/gldt/

  12、关于版本号

    内核版本号:3.10.0-693.el7 

    

       注:1、版本号的第二位数字,可以确定Linux内核版本的类型

          开发版本:第二位数字是奇数 3.9.1……

          稳定版本:第二位数字是偶数 3.10.0……

         2、发行版本号版本:与内核版本号不同 内核版本号:4.17.9

   13、开源协议

       开源 open source ,软件和源代码提供给所有人自由分发软件和源代码,能够修改和创建衍生作品

      软件分类:

          商业版,共享版,自由版

      ① 常见的开源协议

          GPLv2、GPLv3、LGPL:通用公共许可copyleft——->GNU提供

          Apache,BSD,MIT。。。

      ② 开源协议

         注:协议很重要,同样的应用程序在不同的发行版上可能使用情况不经相同。

 

   14、Linux的哲学思想

      ① 一切皆文件,包括硬件

      ② 小型,单一用途的程序(功能尽量单一)——–> 目前是一个程序集合多个单一功能的程序完成复杂的功能

      ③ 链接程序,完成复杂的任务,需要用户窜起来

      ④ 避免令人困惑的用户界面

      ⑤ 配置数据存储在文件中—–为了通用

  15、图形界面分类

      GUI:graphical user interface 图形化界面接口  

        桌面系统的发行方式:

            Gnome:C开发的

            KDE:C++开发的

            XFCE:用于嵌入式较多(轻量级桌面)

       CLI:command line interfacce 命令行接口

            sh > bsh

            csh,bash,zsh

            shell —–特质命令行shell

  16、什么是shell

     shell是LInux的用户界面,提供了一种用户可以和内核交互操作的一种接口,接受用户输入的命令并把它送入内核去执行。

      也成为Linux的命令解释器

      查看当前shell:echo $SHELL

      显示当前系统的所有shell  :  cat /etc/shells

   17、什么是程序

      程序 = 指令 + 数据

      程序 = 算法 + 数据结构

          以算法为中心,数据结构服务于算法,这就是过程是编程

          以数据为中心,算法服务于数据,这就是对象式编程

   18、终端类型以及用户登录

      物理终端 /dev/console

       虚拟终端 /dev/tty# [1-6] Ctrl+ Alt +F[1-6]

      伪终端     /dev/pts/#    (ssh远程连接,图形界面开启的终端)

       图形终端 /dev/tty7

      串行终端 /dev/ttyS#

      查看当前设备的终端设备命令:tty

  19、命令分类、执行命令

      命令分:内部命令、外部命令

      内部命令:shell自带的命令

         help 回车:查看所有的内部命令列表

         enable -n cmd :禁用某个命令

         enable -n:查看被 禁用的命令

         enable cmd :启用某个命令

      外部命令:文件系统路径下有对应的可执行文件

         which cmd :查看某个命令的位置     或者     whereis

      注:用type cmd 查看命令是否是内部命令

 

      执行命令回车即可,如果同时执行多个命令,使用分号隔开,如:ls /etc;date

          一个命令可以使用\ 分多行

          取消和结束命令执行:Ctrl+c  Ctrl+d

  20、命令别名alias

    alias cmd= ‘CMD’

     unalias cmd:取消别名

    别名的配置文件:

      ~/.bashrc : 仅对当前用户

      /etc/bashrc :对所有用户有效

   21、时间和日期

     Linux的两种时钟:

        系统时钟:由Linux内核通过CPU的工作频率进行的

        硬件时钟:主板

      相关命令:date,hwclock

         hwclock :硬件时钟

        hwclock -s :硬件时钟同步为系统时钟

            -w :系统时钟同步为硬件时钟

         date:系统时间         

          +%a : 周几的缩写
          +%A : 周几的全写
          +%b :几月的缩写 +%h
          +%B :几月的全写
          +%c :本地日期时间
          +%C :2018的20
          +%d :某月的几号 %e
          +%D :日期 07/25/18
          +%F : 日期 2018-07-25
          +%g :2018的18
          +%H :几点-24小时制 00-23
          +%I :几点-12小时制 00-12
          +%j :一年的第几天
          +%k : 0-23
          +%l : 0-12
          +%m : 月
          +%M :分钟
          +%T : 08:42:11
          +%u : 一周的第几天 Monday是第一天 1-7
          +%w : 一周的第几天 SUNday是第一天 0-6
          +%U :一年的第几周
          +%y : 2018 的18
          +%Y :年

          设置时间:date [-u] [MMDDhhmm][[cc]YY][.SS]]

 

      cal:日历 

        cal -y 显示当年全部日历

 

   22、关机、重启

    关机:halt。poweroff , init0(centos6)

    重启:reboot ,init6

        -f:强制

        -p:切断电源

    关机或重启:shutdown

        -r:重启

        -h:halt

        -c:取消

            now 立刻

            +m:几分钟后

  23、Linux用户分类

    管理员 uid 0

    普通用户:

        系统用户: 1-499 1-999

        登录用户: 500+   1000+

      注:root用户命令行提示是 #,普通用户命令行提示符是 $.

  24、用户登录:

    whoami,who,w

[root@localhost ~]$ w
     7:26:39 up  1:10,  4 users,  load average: 0.05, 0.05, 0.01
    USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
    root     tty1     :0               16:18    1:10m  4.05s  4.05s /usr/bin/Xorg :
    root     pts/0    :0.0             16:18    1:07m  0.02s  0.02s /bin/bash
    root     pts/1    192.168.112.1    17:23    2:43   0.00s  0.00s -bash
    root     pts/3    192.168.112.1    08:58    0.00s  0.64s  0.17s w

w使用

 

  25、screen使用

    screen -S name:创建一个名字为name的新会话
    screen -ls:显示所有的会话
    screen -r name: 恢复name会话
    Ctrl + a.d 剥离当前会话 也就是关掉当前的会话

  26、echo 回显

    -n:不加换行符    

        [root@localhost ~]$ echo -n ‘jak’
        jak[root@localhost ~]$

    -e:显示控制符 如 :\t

        [root@localhost ~]$ echo -n -e ‘jak\tda\b’
        jak d[root@localhost ~]$

        常见的控制符:

          \a ::发出警告声

            \b :退格

          \c: 最后不加换行符

          \n :换行且光标移动至行首

          \r  :回车 ,即光标移动行首,但不换行

          \t  : 制表符tab

          \\ :插入\

   27、括号扩展

      echo hi{1,2}

      echo {1,2}{3,4}
      cd ~username :切换到用户家目录
      echo {1..20} {a..z}

  28、命令替换

      ls -l $(cd /etc/sysconfig/) :$(cd /etc/sysconfig/) 把得到的结果传递给另一个命令

      反引号:命令替换 :
      echo hostname —– echo `hostname`

      双引号:弱引用:
      [root@localhost ~]$ echo “$PS1”
      \033[30;33m[\u@\h \W]$ \033[0m

      单引号:强引用:是啥就是啥不会替换
      [root@localhost ~]$ echo ‘$PS1’
      $PS1

   29、Linux的两棵树

      文件树-/,进程树-init

          FHS:文件系统层级结构标准

      一切皆文件:
      登录进shell,每时每刻都处于某个路径下:
      当前目录:current dir
      工作目录:working dir
      相对路径:
      绝对路径:
      程序文件
        /bin /sbin /usr/bin, /usr/sbin ,/usr/local/bin,/usr/local/sbin

 

  30、命令历史

      history 默认保存1000条 $HISTSIZE ——> printenv

        HISTCONTROL =
            ignoredups # 忽略相邻重复的
            ignorespace # 忽略以空白开头的命令
            ignoreboth # 两者都忽略

            会保存在用户家目录下的.bash_history

 

            history:
              -c:清空命令历史
              -d offset:删除历史中指定的第offset个命令
              n :显示最近的n条历史
              -a:追加本次回话新执行的命令到历史文件中
              -r:将.bash_history显示到屏幕上
              -w:保存历史列表到指定文件中

              -n :读历史文件中没有读过的行到历史列表中

      重复前一个命令:有4中方法

        使用向上键

        使用!!

        使用 !-1

        Ctrl +p 回车执行

      !:0 :执行前一条命令(去除参数)

      !n  :执行对应序号的命令

      !-n : 执行倒数第n条命令

      重新调用前一个命令中的最后一个参数:

        !$  或者  Alt +。  或者 ESc放开在按。

 

  31、获取帮助

      内部命令: help history
      外部命令:
        –help -h 获取帮助
        man and info ——- /usr/share/man
        程序自带的帮助信息

        whatis:显示命令的简短描述,使用数据库,刚装不能立即使用,makewhatis|mandb制作数据库
            whatis cat

      –help:
        []:可选项
        <>或CAPS:表示变化的数据
        …表示一个列表
        x|y|z:或者的关系
        -abc: -a -b -c
        {}:分组

      man:手册页放在/usr/share/man
      man页面分组为不同的章节
      man命令的配置文件:/etc/man.config | man_db.conf
          MANPATH /PATH/TO/SOMEWHERE: 指明man文件搜索位置
          man -M /PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示

      man章节:
        1、用户命令
        2、系统调用
        3、C库调用
        4、设备文件以及特殊文件
        5、配置文件格式
        6、游戏
        7、杂项
          · 8、管理类命令
        9、linux内核API

  
      man帮助段落说明:
        NAME:名称及简要说明
        SYNOPSIS:用法格式
        DESCRIPTION:详细描述
        OPTIONS:选项说明
        EXAMPLES:实例

        查看手册:man 1 cat
        列出所有帮助:man -a cat
        搜索man手册:man -k cat

      翻看man手册技巧:
        空格:向下翻屏
        b:向上翻屏
        d:向下翻半屏
        u:向上翻半屏
        #:定位到第几行
        enter:向下一行
        y:向上一行
        1G:回到顶部
        G:到尾部
        /keyword :查找关键字,使用N/n翻 ,向后搜
        ?keyword:查找关键字,使用N/n翻 ,向前搜

      info:info cat
        方向键翻
        tab键,移动到下一个链接
        enter:进入选定的链接
        s:文本搜索
        q:退出

    本地帮助文档:
      /usr/share/doc目录
      常见文档:readme,install,changes

      

   注:

    exec bash:exec执行程序,替换当前的进程,可以通过pstree看出来

    通过在线文档获取帮助:第三方应用官方文档

      http://www.nginx.org
      http://tomcat.apache.org
      http://httpd.apache.org
      http://www.python.org

    通过发行版官方的文档光盘或网站可以获得,安装指南、部署指南、虚拟化指南等,红帽知识库和官方在线文档

      http://kbase.redhat.com
      http://www.redhat.com/docs
      http://access.redhat.com

 

版权声明:本文为JerryZao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/JerryZao/p/9367351.html