1.初识linux

1.计算机组成

计算机五大部件:运算器、控制器、存储器、输入设备、输出设备。对应实际情况大致如下:

  • CPU 
    CPU(Central Processing Unit)主要包含运算器、控制器;也包含寄存器、缓存用于辅助:

    CPU在同一时间能并行处理的二进制数的位数称为CPU字长。字长由CPU对外数据通路的数据总线条数决定。

    • 运算器 
      运算器也称为算术逻辑部件(ALU,Arithmetic Logic Unit),负责算术运算和逻辑运算等。

    • 控制器 
      控制器负责完成取指令、形成指令供运算器运算,指令时序控制;各总线控制(地址总线、数据总线、控制总线等),等等。

    • 寄存器 
      临时存放参与运算的数据,和运算的中间结果。有的寄存器会记录一个程序的下个指令在内存的位置以保证运行效率。

    • 高速缓存 
      CPU从内存(即存储器)中读取数据,CPU相对内存速度快很多,使用高速缓存放置数据可加快运行。

  • 存储器 
    存储器即内存,也称为RAM(Random Access Memory,随机访问存储)。

    • 计算机所有运行的程序都存储在内存中,是与CPU进行沟通的桥梁。

    • 内存中的最小存取单元是1Byte(8比特位),就算只有1bit数据,也要占据1Byte,其他7位为空。

    • 内存上的每个字节都被进行编址,访问时按地址访问。在编址范围外的称为内存溢出。 
      32位字长的CPU最多有2^32种变化,可表示2^32个地址,所以32位字长的CPU最多可使用4GB内存。

  • I/O设备 
    I/O设备用于向计算机输入(Input)数据、输出(Output)结果。如键盘输入、显示器输出,磁盘既可输入也可输出等。

2.linux各发行版

2.1 各发行版

linux遵循GPL(General Public License)协定,源代码公开。并非所有用户都有编译操作系统源码的能力,所以有很多发行商推出了其自行编译后的且比较稳定的发行版,做成引导光盘,并在后续维护。

linux发行版有数百种,目前发行版比较主流的三大分支:debian、slackware、redhat:

  • debian 
    基于debian的著名二次发行版:Ubuntu、knoppix等。

  • slackware 
    slackware本是sls的分支,已可视为独立的发行版。 
    slackware中有著名二次发行版:S.u.S.E

  • redhat 
    主干为RedHat Enterprise Linux(RHEL),基于此的著名二次发行版有CentOS等,CentOS以红帽提供的源码包,以完全兼容红帽的方式重新编译源码。 
    redhat个人版、桌面版由federa project发行维护,发行版为Fedora。

2.2 各发行版的软件包管理器

一个软件的组成部分:

  1. 二进制程序,最主要部分;

  2. 配置文件,可修改软件运行时的特性;

  3. 库文件,若基于此软件进行二次开发,可使用这个软件提供的库文件;

  4. 帮助文件

软件包管理器用于管理软件,类似windows,功能主要分为:

  • 把上述软件各组成文件,如二进制程序、配置文件等,打包成一个或几个文件;

  • 展开安装;

  • 卸载,不用逐个去找到软件的所有文件再删除;

  • 查询。

linux不同发行版上用到的软件包管理器可能不一样,比如debian用的程序包管理器是dpkg,前端管理工具apt-get;而redhat用的程序包管理器是rpm(redhat package manager),前端管理工具是yum等等。实际上这也正是各发行版中明显的不同点。

3.各终端文件

linux哲学思想之一:一切皆文件,所有资源几乎都抽象为文件。典型的表现就是硬件也表现为文件,如各终端:

  • 控制台 
    控制台即计算机上的物理终端,是计算机的一部分,计算机只有一个控制台,用于输入输出。其对应的文件为“/dev/console”。

  • 虚拟终端

    一组输入、输出设备(一般是键盘、显示器),被称为终端。

    一台主机若需被多用户使用,早期各用户是通过电传打字机(teletypewriter,简称tty)作为终端连接至主机。

    若在一个终端上需使用多个用户接口,可在这个终端虚拟出多个虚拟终端,linux默认6个命令行虚拟终端1、1图形界面,设备文件为“/dev/tty[1-7]”,tty作为早期的终端名称沿用了下来,其中tty7是图形界面的2。可在各虚拟终端之间切换。

    登录系统后默认使用的是tty1。

  • 串口终端 
    使用串口与主机交互的终端称为串口终端,设备文件“/dev/ttyS#”,#为对应数字。

  • 伪终端 
    使用ssh等远程登录,或在图形界面下打开的终端是伪终端。 
    伪终端设备文件为“/dev/pts/#”,#为对应数字。

4.linux部分常用指令

命令tty

用于显示当前使用的终端对应的文件名。 
这里写图片描述

命令ifconfig

用于设置和显示IP。 
这里写图片描述

命令echo

用于在标准输出回显内容。

若显示内容没有空格则可省略引号(执行变量引用),双引号表示弱引用(执行变量引用),单引号表示强引用(不执行变量引用)。 
这里写图片描述

  • 选项“-n”,显示内容后不自动换行。 
    这里写图片描述

  • 选项“-e”,显示转义字符。 
    这里写图片描述 
    由此也可看出转义字符在引号内才会生效,无所谓单双引号。使用“echo”最好加上引号。

命令startx

用于使用图形界面。 
组合按键“Ctrl”+“Alt”+“Backspace”,由图形界面回到命令行界面。

命令export

用于显示、设置环境变量。设置的环境变量在当前登录有效(包括子shell)。

命令pwd

用于显示当前工作目录。

环境变量PWD保存当前工作目录路径、OLDPWD保存上一个工作目录路径。命令“cd -”正是基于此在两目录切换。命令“pwd”可理解为读取了环境变量PWD的内容。

命令who

用于显示当前已登录到系统的所有用户,并显示其使用的终端,何时登录。

命令wall

用于在同一时间向所有终端发送信息。

关机、重启命令

  • 命令reboot 
    用于重启

  • 命令halt 
    用于关机

  • 命令poweroff 
    用于关机

  • 命令shutdown 
    用于关机或重启。 
    使用格式:“shutdown [option] time [message]”,表示time分钟后执行操作(0,now表示立即执行),并打印提示信息message在每个终端(同命令“wall”),即使没有message,每个终端也都会收到关机或重启提示。 

    • 选项“-r”,重启;

    • 选项“-P”,关机;

    • 选项“-c”,表示在时间尚未到达时,取消之前决定的关机或重启操作。root账户可在任何终端执行这个选项以结束关机或重启操作;在发起关机或重启操作的那个终端,root可直接使用“ctrl + c”来结束将要执行的关机或重启操作。

命令date

用于显示、设置系统日期和时间。 
– 显示时间,可使用不同格式。 
这里写图片描述 
– 设置时间,可直接按man手册中给定的时间格式设置,也可按字符串设置。 
这里写图片描述

这里写图片描述

命令clock

用于查询、设置硬件时间。clock是命令“hwclock”的链接文件。

linux在启动时,系统读取硬件时间,之后系统时间和硬件时间各走各的互不影响。两时间可能不一样,所以使用上述的“date”命令设置系统时间后,重启后可能就变了,这是因为启动时系统又读取了硬件时间。

  • 选项“-s”,把硬件时间同步到系统时间,即以硬件时间为准;

  • 选项“-w”,把系统时间同步到硬件时间,即以系统时间为准。

命令history

用于查看命令历史。 
格式:“history [#]”,表示显示最近#条命令;不带参数则显示当前命令历史列表。当用户登出时,命令历史列表中的命令默认会保存到用户家目录下的“.bash_history”文件,所以用户再登录时,该文件内容会在命令历史列表中。

相关环境变量:

  • HISTSIZE 
    指定当前shell进程,在内存中保存的最大命令个数;

  • HISTFILE 
    用于指定命令历史持久保存在哪个文件,默认是在用户家目录下的“.bash_history”;

  • HISTFILESIZE 
    指定保存历史命令的文件的最大保存个数。如超出,就把更早的命令删除;

  • HISTCONTROL 
    在centOS7,有此环境变量,取值范围有三个: 

    • ignoredups,表示忽略重复的历史命令;

    • ignorespace,表示忽略以空格开头的历史命令;

    • ignoreboth,同时忽略上述二者。

各选项:

  • 选项“-c”,清空历史命令;

  • 选项“-r”,读取命令历史文件,把其中保存的命令追加至命令历史列表; 

    • 由此可知,命令历史列表的命令个数或许会大于HISTSIZE,因为此次登录保存在内存中的命令个数(受HISTSIZE限制),加上追加的保存在HISTFILE中的命令个数,才是当前命令历史列表中的个数。

  • 选项“-w”,把当前shell进程在内存中保存的命令,保存至HISTFILE,且这些命令仍在命令历史列表。

引用历史命令:

  • 格式“!#”,表示使用第#条命令; 
    这里写图片描述

  • 格式“!string”,表示使用最近以“string”字符串开头的命令; 
    这里写图片描述

5.linux帮助信息

  • “help command”,用于获取bash内建命令帮助;

  • 每个外部命令都带有简要格式的帮助信息,使用命令选项“–help”获取;

  • 外部命令的man文档,“man # command”获取,其中“#”表示显示第几章节内容。各章节: 

    • 1、用户命令;

    • 2、系统调用;

    • 3、库调用;

    • 4、特殊文件、设备文件;

    • 5、配置文件说明;

    • 6、小游戏说明;

    • 7、杂项;

    • 8、系统命令。

  • http://redhat.com/doc红帽官方帮助文档;软件官方站点的document等。

6.linux发行版各基础目录

linux上的所有磁盘分区,所有存储设备,都需挂载到某个目录,这个目录称为挂载点; 
所有目录都以根目录为起点; 
所以所有文件都关联到了根。

FHS(FilesystemHierarchyStandard),目录层级标准,规定了目录“/、/usr、/var”下存放哪些文件:

根目录层级内容:

  • /bin,放置root与普通用户均可使用的命令文件;

  • /sbin,放置仅root可使用的命令;

  • /boot,放置linux内核文件、开机菜单、开机所需配置文件等;

  • /dev,放置设备文件、用户接口文件;

  • /etc,放置配置文件;

  • /lib,64位系统上是“/lib64”,放置/bin、/sbin目录下的命令所需的共享库文件;“/lib/modules”下放置内核模块等;

  • /media,作为便携式存储设备如U盘等的临时挂载点;

  • /mnt,类似/media,/mnt是作为新硬盘的临时挂载点;

  • /opt,作为附加程序或第三方程序的安装位置,不强制要求;

  • /proc,虚拟文件系统。存储内核、进程相关信息。该目录下的数据都在内存中,所以不占硬盘空间;

  • /sys,虚拟文件系统。主要用于管理设备,存储的是硬件设备信息等。也不占用硬盘空间;

  • /root,root的家目录;

  • /srv,一些网络服务在此存储数据;

  • /tmp,一般用户或运行的程序暂时在此存放文件;

  • /usr,Unix Software(shareable) Resource,各发行版会在此目录放置所有随发行版一同发行的软件,类似于windows的“C:\Program files”;

  • /var,用于保存常态性变动的文件,如缓存、登录文件等。

开机过程中仅有根目录会被挂载,其他目录是在开机后陆续挂载; 
所以根目录下与开机过程有关的目录也只能在根分区; 
与开机过程有关的目录为:/bin、/sbin、/etc、/lib、/dev。

/usr目录层级内容:

  • /usr/X11R63,存放“X window”相关数据;

  • /usr/bin,放置用户命令,与“/bin”的不同在于是否与开机过程有关;

  • /usr/include,放置c/c++头文件、包含文件;

  • /usr/lib,为各系统软件提供库文件,64为系统会是“/usr/lib64”;

  • /usr/sbin,系统命令,与“/sbin”区别在于,该目录存储的是非系统正常运行所需的命令;

  • /usr/share,放置共享文件,包括“/usr/share/man”放置命令帮助文档;“/usr/share/doc”放置软件相关说明文档等等;

  • /usr/src,放置软件源码;linux源码放置在“/usr/src/linux”下;

  • /usr/local,管理员用户自己下载的软件(非发行版提供的软件)放置在此目录,所以该目录也可作为一个目录层级,内容也包含bin、sbin、lib、include等。

/var目录层级内容: 
暂略。

原创文章,作者:wangzhenyu177,如若转载,请注明出处:http://www.178linux.com/37793

(0)
wangzhenyu177wangzhenyu177
上一篇 2016-08-22
下一篇 2016-08-22

相关推荐

  • 【招聘】北京/互联网/运维工程师/7-15K/双休,五险一金

    岗位职责:   1、负责服务器的规划、调试优化、日常监控、故障处理、数据备份、日志分析等工作;   2、参与运维流程制定,确保任何突发情况都能高效响应;  3、负责服务器部署,对服务器构架和网络进行优化和改进;  4、负责运维相关数据的收集、分析和总结;  5、负责技术运维相关的文档、手册…

    Linux干货 2016-04-16
  • Linux Bash Shell练习

    Linux Bash Shell练习 1、写一个脚本,完成以下功能: 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串 显示所有以S开头的文件的文件名,并且给其附加一个start字符串 分别统计S开头和K开头的文件各有多少 #!/bin/bash # for&…

    Linux干货 2016-12-17
  • sed文本处理工具

    Sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转…

    Linux干货 2017-12-02
  • dd工具

    dd     dd命令:convert and copy a file     用法:        ddif=/PATH/FROM/SRC of=/PATH/TO/DEST       &…

    Linux干货 2016-09-02
  • 马哥教育的第一天

    春天的北京,比想象中的更加温暖,跨越一千三百公里的距离,我来到马哥教育位于北京昌平区的校区,传说中的春寒料峭似乎遗忘了北京,自湖北出门的时候,车外还是淅淅沥沥的小雨,到达北京,迎接我的却是春风拂面熏人醉。 安顿了两天之后,我们三十期的开班典礼在三月二十六号早上的九点钟准时开始,由云珍老师主持,传说中的马哥、王老师、张sir、宗华老师纷纷登台致辞,分别从运维工…

    2018-03-26
  • Linux 第四天: (07月28日) 练习和作业

    Linux 第四天: (07月28日) 练习和作业         定义别名命令baketc, 每天将/etc/目录下所有文件, 备份到/testdir独立的子目录下, 并要求子目录格式为backupYYYY-mm-dd, 备份过程可见 alias baketc='cp -a /etc/ /testdir/b…

    Linux干货 2016-08-08

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-22 14:09

    写的很好,排版还可以在漂亮一点,加油