Linux basics–part1

一、计算机的组成及其功能

依据冯·诺依曼体系结构,计算机可分为五大部分,CPU的运算器和控制器、内存、输入、输出。

  • CPU运算器:计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件(ALU)。运算器由算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等组成。算术逻辑运算单元(ALU)的基本功能为加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、求补等操作。计算机运行时,运算器的操作和操作种类由控制器决定。运算器处理的数据来自存储器;处理后的结果数据通常送回存储器,或暂时寄存在运算器中。与Control Unit共同组成了CPU的核心部分。
  • CPU控制器:控制器(英文名称:controller)是指按照预定顺序改变主电路或控制电路的接线和改变电路中电阻值来控制电动机的启动、调速、制动和反向的主令装置。由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。
  • 内存:内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。 内存是由内存芯片、电路板、金手指等部分组成的。
  • 输入设备:向计算机输入数据和信息的设备。是计算机与用户或其他设备通信的桥梁。输入设备是用户和计算机系统之间进行信息交换的主要装置之一。键盘,鼠标,摄像头,扫描仪,光笔,手写输入板,游戏杆,语音输入装置等都属于输入设备。输入设备(InputDevice)是人或外部与计算机进行交互的一种装置,用于把原始数据和处理这些数的程序输入到计算机中。计算机能够接收各种各样的数据,既可以是数值型的数据,也可以是各种非数值型的数据,如图形、图像、声音等都可以通过不同类型的输入设备输入到计算机中,进行存储、处理和输出。
  • 输出设备(Output Device)是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。也是把各种计算结果数据或信息以数字、字符、图像、声音等形式表现出来。常见的输出设备有显示器、打印机、绘图仪、影像输出系统、语音输出系统、磁记录设备等。

二、Linux各发行版,以及不同发行版之间联系与区别

linux发行版可按打包方式划分;有按发行方式划分;比较流行和重要的如下

  • 1、按打包方式划分:

    • A、基于Dpkg (Debian系)

      • Knoppix:第一张Debian的自启动运行光盘。包含的软件非常多,启动时会自动进行硬件监测。从4.0起,用DVD作光盘。以下基于Knoppix:

        • Gnoppix:Knoppix的GNOME版,该包发行周期较长,未来会跟Ubuntu进行集成。
        • Kanotix:自启动运行光盘,基于Knoppix,也可以安装到硬盘上。有很好的硬件支持,桌面与笔记本电脑的集成也很出色。
        • Kurumin:针对巴西用户的Knoppix。
      • Ubuntu:知名Linux发行版之一,由Canonical有限公司赞助,基于Debian,使用自己的软件包库,与Debian的有所不同,旨在开发出更加友好的桌面。

        • 以下基于Ubuntu:
        • Linux Mint:基于Ubuntu,人气与Ubuntu不相上下的发行版。
        • Edubuntu:是Ubuntu的教育发行版。
        • Elementary OS:基于Ubuntu,使用基于GNOME名为Pantheon的桌面环境。
        • Kubuntu:使用KDE桌面环境的Ubuntu包。
        • Lubuntu:使用LXDE桌面环境的Ubuntu包。
        • PUD GNU/Linux:基于Ubuntu的小型Linux,可安装于光盘或256 MB以上的USB U盘。
        • Ubuntu Kylin:添加了少量中国化定制的 Ubuntu 发行版。
        • Xubuntu:使用Xfce桌面环境的Ubuntu包。
        • Start OS: 原名Ylmf OS,基于Ubuntu发行版,已停止维护。
        • Ubuntu GNOME: 基于Ubuntu是Linux发行版,但使用的是桌面环境是Gnome。 *Zorin OS:基于Ubuntu的Linux发行版,目的是尽可能的模拟Windows及操作习惯。
    • B、Slackware系

      Slackware 走了一条同其他的发行版本(Red Hat、Debian、Gentoo、SuSE、 Mandriva、Ubuntu等)不同的道路,它力图成为“UNIX风格”的Linux发行版本。它的方针是只吸收稳定版本的应用程序,并且缺少其他Linux版本中那些为发行版本定制的配置工具。

      • Slackware:一个老牌包,由Patrick Volkerding维护,特别注重简洁与安全。
      • Kate OS:基于Slackware的设计理念,一个轻便的波兰语包。
      • Zenwalk Linux(以前是MiniSlack):基于Slackware作了优化,注重简便、快捷。
      • Plamo Linux:基于Slackware的日语包。
      • Ultima Linux:基于Slackware,由Martin Ultima作了优化。
      • SLAX:一个基于Slackware的自启动运行光盘,由Tomas Matejicek维护。
    • C、基于RPM (Red Hat系)

      Red Hat Linux和SUSE Linux是最早使用RPM格式软件包的发行版,如今RPM格式已广泛运用于众多的发行版。这两种发行版后来都分为商业版本和社区支持版本。Red Hat Linux的社区支持版本现称为Fedora,商业版本则称为Red Hat Enterprise Linux。

      • Fedora:可用作工作站、桌面以及服务器,由红帽公司及其社区开发
      • Red Hat Enterprise Linux:红帽Linux家族中唯一的商业分支。
      • Red Flag Linux:即红旗Linux,由北京中科红旗软件技术有限公司开发,主要针对中国市场。
      • Scientific Linux:由红帽Linux企业版,将遵循GPL的软件重新编译而成。
      • SUSE/openSUSE:来自德国,是欧洲最流行的包之一。跟红帽一样,也包括大量的软件,需要7张以上的CD,现在则用双DVD。这个包有独特的配置工具YaST。也是United Linux的创立者之一,已经被Novell公司收购。openSUSE是一个新的版本,基于社区,完全开源。
      • Turbo Linux:在亚洲较流行的一个包,基于Red Hat,是United Linux的成员。
    • D、其他方式

      • ArchLinux:基于KISS原则,针对i686和x86-64的CPU做了优化,以.pkg.tar.xz格式打包并由包管理器进行跟踪维护,特别适合动手能力强的Linux用户。
      • Gentoo:这个包采用自己独特的Portage包管理系统,吸引了许多狂热爱好者以及专业人士,由于能自己编译及调整源码依赖等选项,而获得至高的自定义性及优化的软件,在源码包也有相当多新旧版本的选择,是个强调能自由选择的发行版。
  • 2、按商业方式划分:

    • A、部分或全部的商业版

      • BlueCat Linux:Linux嵌入式系统,可用于小型客户定制的设备,乃至大规模多CPU的系统。
      • Libranet:基于Debian的桌面包,与Debian保持100%的兼容。安装过程有硬件自动检测,桌面有一个管理员菜单(文字模式与图形模式),这样简化了硬件与软件的配置。
      • Linspire:另一个桌面包,以前叫Lindows,基于Debian。可以通过Linspire或者Debian的apt命令,添加额外的软件,但不保证跟Debian的兼容性。该包包含不少的专属软件。
      • Mandriva Linux:Mandrakesoft跟Conectiva合并以后,更名为Mandriva Linux。对于菜鸟来说,该包的各种产品,包括服务器、工作站、小型商用以及个人版,是最容易维护的Linux包之一。原来是Red Hat的一个变种,针对奔腾级CPU作了优化,进而发展出了更加方便的包。在保留完全自由软件的同时,Mandriva商业模式,通过捐献,以及对非会员延迟发布政策,增加了企业级的支持与服务。
      • MEPIS:一个基于Debian的包,也可以作为自启动光盘来运行,这样可以在决定硬盘安装前,尝尝鲜。
      • Nitix:第一个基于Linux服务器的自治操作系统,具有自管理、自恢复、自配置和自优化的能力。
      • Novell Linux 桌面:Novell收购SUSE后,两家的包就互相融合了。
      • Progeny Debian:由Progeny开发,基于Debian,使用从Red Hat移植过来的Anaconda安装器,该包又称为Progeny Componentized Linux。
      • Red Hat Enterprise Linux:从Red Hat Linux派生出的纯商业版。
      • SUSE:基于德国的纽伦堡,以前叫SuSE,是欧洲最流行的Linux包,由自己独特的配置工具YaST,用户可以下载到体验版(跟专业版类似)。该公司是United Linux的创建者,最近被Novell收购。
      • Xandros:来自加拿大,基于过去的Corel Linux,专注于桌面市场,以及跟Windows的兼容性。该包包含一些专属软件,跟Debian的dpkg包管理系统兼容。
      • YES Linux:针对小型公司,提供建议的网络环境。
    • B、专用包

      • Mobilinux:针对手机,由MontaVista出品。
      • Android:来自Google,以apk格式打包,采用Android Runtime虚拟机提供类似Java (编程语言)的应用程序接口,目前已成为用户最多的智能手机系统之一。
      • Maemo:来自诺基亚,基于Debian,目前专用于诺基亚的N770、N800、N810网络终端,以及N900手机。
      • Moblin︰来自英特尔,现已捐给Linux基金会,用于Eee PC或其他上网本,支持快速启动。
      • MeeGo:Maemo与Moblin计划结合的产物。
      • Bada (操作系统):针对手机,由三星电子出品。
      • LiMo 平台:由LiMo基金会主导开发的移动电话发行版。
      • Tizen:MeeGo、LiMo 平台与bada计划结合的产物。
      • Meltemi:MeeGo的另一个后继者,面向低端智能手机。
      • webOS:针对手机和平板电脑,由Palm公司出品,后被惠普公司开源。
    • C、其它平台

      • iPodLinux基于修改版uClinux内核,并编写有所谓的“podzilla”简单用户界面。目前仅支持第四代之前的iPod。

四、Linux命令使用格式
Linux命令使用格式: 
command [options] [arguments]

  • command:

    • 命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;
    • 多数系统程序文件都存放在:/bin, /sbin, /usr/bin, /usr/sbin,/usr/local/bin, /usr/local/sbin
    • 普通命令:/bin, /usr/bin, /usr/local/bin
    • 管理命令:/sbin, /usr/sbin, /usr/local/sbin
    • 共享库:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
    • 32bits的库:/lib, /usr/lib, /usr/local/lib
    • 64bits的库:/lib64, /usr/lib64, /usr/local/lib64
    • 注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件
    • 命令必须遵循特定格式规范:exe、msi(windows), ELF(Linux)
    • 命令分为两类:
    • 由shell程序的自带的命令:内置命令(builtin)
    • 独立的可执行程序文件,文件名即命令名:外部命令
    • shell程序是独特的程序,负责解析用户提供的命令;
    • 环境变量:PATH从哪些路径中查找用户键入的命令字符串所对应的命令文件;
    • 查看命令类型:type COMMAND发起一命令:请求内核将某个二进制程序运行为一个进程;
  • OPTIONS:指定命令的运行特性;

    • 选项有两种表现形式:
    • 短选项:-C, 例如-l, -d 注意:有些命令的选项没有-;如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld
    • 长选项:–word, 例如–help, –human-readable注意:长选项不能合并;
    • 注意:有些选项可以带参数,此称为选项参数;
  • ARGUMENTS:

    • 命令的作用对象;命令对什么生效;
    • 注意:不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;
  • 例如:

  ifconfig:配置网络接口
  ifconfig [接口] ifconfig 接口 [aftype] options | address ... 

  echo:显示一行文本
  echo[OPTION]... [STRING]... 
  -n 不输出行尾的换行符. 
  -e 允许对下面列出的加反斜线转义的字符进行解释. 
  -E 禁止对在STRINGs中的那些序列进行解释. 
  --help 显示帮助并退出(须单独运行) 
  --version 输出版本信息并退出(须单独运行) 在没有 -E 的情况下,可承认并可以内置替换以下序列: 

  tty:显示连接标准输入的终端的文件名            
  tty [OPTION]... 
  -s, --silent, --quiet 什么 都 不显示, 仅仅 返回 一个 退出状态 
  --help 显示 帮助信息, 然后 结束 
  --version  显示 版本信息, 然后 结束

  startx:启动图形化界面

  export:用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。 一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。
  export[选项][参数] 
  选项 
  -f:代表[变量名称]中为函数名称;  
  -n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中; 
  -p:列出所有的shell赋予程序的环境变量。 
  参数 
  变量:指定要输出或者删除的环境变量

  pwd:显示出当前/活动目录的名称

  history:用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制

  shutdown:命令用来系统关机命令。shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。
  shutdown[选项][参数] 
  选项 
  -c:当执行“shutdown -h 11:50”指令时,只要按+键就可以中断关机的指令; 
  -f:重新启动时不执行fsck; 
  -F:重新启动时执行fsck;  
  -h:将系统关机;  
  -k:只是送出信息给所有用户,但不会实际关机;  
  -n:不调用init程序进行关机,而由shutdown自己进行;  
  -r:shutdown之后重新启动;  
  -t<秒数>:送出警告信息和删除信息之间要延迟多少秒。 
  参数 
  [时间]:设置多久时间后执行shutdown指令;  
  [警告信息]:要传送给所有登入用户的信息。

  poweroff:用来关闭计算机操作系统并且切断系统电源                
  poweroff[选项] 
  选项 
  -n:关闭操作系统时不执行sync操作;  
  -w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中;  
  -d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录;  
  -f:强制关闭操作系统;  
  -i:关闭操作系统之前关闭所有的网络接口;  
  -h:关闭操作系统之前将系统中所有的硬件设置为备用模式。

  reboot:用来重新启动正在运行的Linux操作系统。            
  reboot[选项] 
  -d:重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有“-n”参数效果;  
  -f:强制重新开机,不调用shutdown指令的功能;  
  -i:在重开机之前,先关闭所有网络界面;  
  -n:重开机之前不检查是否有未结束的程序; 
  -w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。

  hwclock:是一个硬件时钟访问工具,它可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可设置系统时间为硬件时钟的时间。在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。    
  hwclock[选项] 
  --adjust:hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟;  
  --debug:显示hwclock执行时详细的信息;  
  --directisa:hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟;  
  --hctosys:将系统时钟调整为与目前的硬件时钟一致;  
  --set --date=<日期与时间>:设定硬件时钟;  
  --show:显示硬件时钟的时间与日期;  
  --systohc:将硬件时钟调整为与目前的系统时钟一致;  
  --test:仅测试程序,而不会实际更改硬件时钟;  
  --utc:若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作;  
  --version:显示版本信息。

  date:显示或设置系统时间与日期。很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。                
  date[选项][参数] 
  选项 
  -d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;  
  -s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;  
  -u:显示GMT;  
  --help:在线帮助;  
  --version:显示版本信息。 
  参数 
  <+时间日期格式>:指定显示时使用的日期时间格式。

五、Linux上获取命令的帮助信息,以及man的章节划分

  • 1、获取命令的使用帮助:

    • 内部命令:help COMMAND
    • 外部命令:

      • (1) 命令自带简要格式的使用帮助: ~]# COMMAND –help
      • (2) 使用手册manual位置:/usr/share/man: ~]# man COMMAND
      • (3) info COMMAND获取命令的在线文档;
        很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION 
        README:程序的相关的信息;
        INSTALL: 安装帮助;
        CHANGES:版本迭代时的改动信息;
      • (5) 主流发行版官方文档
        http://www.redhat.com/doc<br>
      • (6) 程序官方的文档:
        官方站点上的“Document”
      • (7) 搜索引擎
        google

        keyword filetype:pdf
          keyword site:domain.tld

2、man的章节划分:

  (1):用户命令;
  (2):系统调用;
  (3):C库调用;
  (4):设备文件及特殊文件;
  (5):文件格式;(配置文件格式)
  (6):游戏使用帮助;
  (7):杂项;
  (8):管理工具及守护进行;

六、Linux发行版的基础目录名称命名法则及功用规定

  • 基础目录命名法则

    /bin:所有用户可用的基本命令程序文件;
      /sbin:供系统管理使用的工具程序;
      /boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;
      /dev:存储特殊文件或设备文件;
          设备有两种类型:字符设备(线性设备)、块设备(随机设备);
      /etc:系统程序的配置文件,只能为静态;
      /home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME;
      /root:管理员的家目录;可选;
      /lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块
          libc.so.*:动态链接的C库;
          ld*:运行时链接器/加载器;
          modules:用于存储内核模块的目录;
      /lib64:64位系统特有的存放64位共享库的路径;
      /media:便携式设备挂载点,cdrom, floppy等;
      /mnt:其它文件系统的临时挂载点;
      /opt:附加应用程序的安装位置;可选路径;
      /srv:当前主机为服务提供的数据;
      /tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;
      /usr:usr Hierarchy,全局共享的只读数据路径;
          bin, sbin
          lib, lib64
          include:C程序头文件;
          share:命令手册页和自带文档等架构特有的文件的存储位置
          local:另一个层级目录;
          X11R6:X-Window程序的安装位置
          src:程序源码文件的存储位置
      /usr/local:Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序;
      /var:/var Hierarchy,存储常发生变化的数据的目录;
          cache    Application cache data
          lib        Variable state information
          local    Variable data for /usr/local
          lock    Lock files
          log        Log files and directories
          opt        Variable data for /opt
          run        Data relevant to running processes
          spool    Application spool data
          tmp        Temporary files preserved between system reboots    
    
      /proc:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;
      /sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的的接口;
    
          参考:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/
  • Linux系统上的文件类型:

    -:常规文件;即f;
      d: directory,目录文件;
      b: block device,块设备文件,支持以“block”为单位进行随机访问
      c:character device,字符设备文件,支持以“character”为单位进行线性访问
          major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序
          minor number:次设备号,用于标识同一类型中的不同的设备;
              8位二进制:0-255
      l:symbolic link,符号链接文件;
      p: pipe,命名管道;
      s: socket,套接字文件;

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

(0)
上一篇 2017-07-10 09:06
下一篇 2017-07-10 19:57

相关推荐

  • 马哥教育21期网络班—第14周课程+练习——>iptables 练习

    系统的INPUT和OUTPUT默认策略为DROP; iptables -P INPUT DROP iptables -P OUTPUT DROP [root@localhost ~]# iptables -L -n  Chain INPUT…

    Linux干货 2016-10-24
  • shell脚本总结

    shell脚本简要总结 脚本调试 bash -n /path/to/some_script检测脚本中的语法错误 bash -x /path/to/some_script调试执行 变量 环境变量 变量声明、赋值:export name=VALUEdeclare -x name=VALUE 变量引用:$name, ${name} 显示所有环境变量: export…

    Linux干货 2016-08-21
  • 信息论的熵

    1.  前言    熵的概念最早起源于物理学,用于度量一个热力学系统的无序程度。    在信息论里则叫信息量,即熵是对不确定性的度量。从控制论的角度来看,应叫不确定性。信息论的创始人香农在其著作《通信的数学理论》中提出了建立在概率统计模型上的信息度量。他把信息定义为“用来消除不确定性的东西”。在信息世界,熵越…

    Linux干货 2016-03-27
  • ansible日常入门指南

    ansible的一些基本用法

    2018-01-24
  • MySQL Fabric 安装部署

    MySQL Fabric  是一个用于管理 MySQL 服务器群的可扩展框架。该框架实现了两个特性 — 高可用性 (HA) 以及使用数据分片的横向扩展。这两个特性既可以单独使用,也可以结合使用。 环境: 安装MySQL Fabric 配置MySQL Fabric MySQL Fabric 安装管理数据库fabric 启动MySQL Fab…

    数据库运维 2016-06-03

评论列表(1条)

  • 马哥教育
    马哥教育 2017-07-22 21:33

    非常系统的整理,再接再励。