进入计算机的世界

计算机

计算机(computer)俗称电脑,是能够按照程序运行,自动、高速出炉海量数据的现代化智能电子设备。由硬件系统和软件系统所组成,计算机的组成遵循冯诺依曼体系。可分为超级计算机、工业控制计算机、网络计算机、个人计算机和嵌入式计算机等五类,较先进的计算机有生物计算机、光子计算机、量子计算机等。

冯诺依曼体系

1945年6月约翰·冯·诺依曼与戈德斯坦、勃克斯等人,联名发表了一篇长达101页纸的报告《First Draft of a Report on the EDVAC》,即计算机史上著名的“101页报告”。在报告中冯·诺伊曼明确提出了计算机的体系架构

从1951年第一台电子计算机EDVAC开始,计算机经历了多次的更新换代,不管是最原始的、还是最先进的计算机,使用的仍然是冯·诺依曼最初设计的计算机体系结构。

因此冯·诺依曼被世界公认为“计算机之父”,他设计的计算机系统结构,称为“冯诺依曼体系结构”。

计算机的功能及其组成

根据冯诺依曼体系构成的计算机必须具有如下功能:


    • 把需要的程序和数据送至计算机中。

    • 必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。

    • 能够完成各种算术运算、逻辑运算和数据传送等数据加工处理的能力。

    • 能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。

    • 能够按照要求将处理结果输出给用户。


为了实现计算机的上述功能,计算机必须具备五大基本组成部件,包括:

  • 运算器:用于完成各种算术运算、逻辑运算和数据传送等数据加工处理。

  • 控制器:用于控制程序的执行,是计算机的大脑。运算器和控制器组成计算机的*处理器(CPU)。

  • 存储器:用于记忆程序和数据,例如:内存。

  • 输入设备:用于将数据或程序输入到计算机中,例如:鼠标、键盘。

  • 输出设备:将数据或程序的处理结果展示给用户,例如:显示器、打印机。


计算机概述


计算机的操作系统

操作系统(Operating System,简称OS),是电子计算机系统中负责支撑应用程序运行环境以及用户操作环境的系统软件,同时也是计算机系统的核心与基石。它的职责常包括对硬件的直接监管、对各种计算资源(如内存、处理器时间等)的管理、以及提供诸如作业管理之类的面向应用程序的服务等等。

操作系统大致可分为6种类型:



    1. 简单操作系统:计算机初期所配置的操作系统;

    2. 分时系统:支持位于不同终端的多个用户同时使用一台计算机,且彼此独立互不干扰;

    3. 实时操作系统:为实时计算机系统配置的操作系统;

    4. 网络操作系统:为计算机网络配置的操作系统;

    5. 分布式操作系统:为分布计算系统配置的操作系统;

    6. 智能操作系统:指能产生人类智能行为的计算机系统;


操作系统位于底层硬件与用户之间,是两者沟通的桥梁。

桌面计算机典型的操作系统有:UNIX、Linux、Mac OS X、Windows等,下面主要介绍一下Linux。


Linux的简单介绍

什么是Linux系统

Linux是一套免费使用和*传播的操作系统,是一个支持多用户、多任务、多线程和多CPU的操作系统。

Linux操作系统诞生于1991 年10 月5 日。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机等。

Linux系统的版本

Linux的发行版是为许多不同的目的而制作, 包括对不同计算机结构的支持, 对一个具体区域或语言的本地化,实时应用,和嵌入式系统,甚至许多版本故意地只加入免费软件。已经有超过三百个发行版被积极的开发,最普遍被使用的发行版有大约十二个。



    • Fedora Core:是一套从Red Hat Linux发展出来的免费Linux系统。Fedora Core 的前身就是Red Hat Linux。Fedora是一个开放的、创新的、前瞻性的操作系统和平台,基于Linux。它允许任何人*地使用、修改和重发布,无论现在还是将来。

    • Debian:它的目标是提供一个稳定容错的Linux版本。支持Debian的不是某家公司,而是许多在其改进过程中投入了大量时间的开发人员,这种改进吸取了早期Linux的经验。

    • Mandrake:MandrakeSoft,Linux Mandrake的发行商,在1998年由一个推崇Linux的小组创立,它的目标是尽量让工作变得更简单。最终,Mandrake给人们提供了一个优秀的图形安装界面,它的最新版本还包含了许多Linux软件包。

    • Ubuntu:是一个以桌面应用为主的Linux操作系统,基于Debian发行版和unity桌面环境,与Debian的不同在于它每6个月会发布一个新版本。

    • Red Hat Linux:是公共环境中表现上佳的服务器。它拥有自己的公司,能向用户提供一套完整的服务,这使得它特别适合在公共网络中使用。这个版本的Linux也使用最新的内核,还拥有大多数人都需要使用的主体软件包。

    • SuSE:在SuSE 操作系统下,可以非常方便地访问Windows磁盘,这使得两种平台之间的切换,以及使用双系统启动变得更容易。

    • Linux Mint:是一份基于Ubuntu的发行版,其目标是提供一种更完整的即刻可用体验,这包括提供浏览器插件、多媒体编×××、对DVD播放的支持、Java和其他组件。它与Ubuntu软件仓库兼容。Linux Mint 是一个为pc和X86电脑设计的操作系统。

    • Gentoo:是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统 ——Portage包管理系统。

    • CentOS:是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件,CentOS 是一个基于Red Hat Linux 提供的可*使用源代码的企业级Linux发行版本。

Linux基本思想

Linux的基本思想有六点:



    • 一切皆文件:就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件;

    • 由众多功能单一的小程序组成:每一个程序都只做一件事,并且将其做好;

    • 组合小程序完成复杂任务:将各种功能单一的小程序组合起来,完成一个或多个复杂任务;

    • 文本文件保存配置信息:由于整个Linux系统都是由文件组成,包括硬件等,文本文件是最容易被系统读取的,也方便最终用户对系统配置;

    • 尽量避免与用户交互:可以更方便的以编程的方式实现自动化任务;

    • 提供机制,而非策略:需要提供什么功能(机制)和怎样实现这些功能(策略);


Linux文件类型,主要有以下几类:



    • 普通文件(regular file):就是一般存取的文件,由ls -al显示出来的属性中,第一个属性为 [-],例如 [-rwxrwxrwx];

    • 目录文件(directory):就是目录,第一个属性为 [d],例如 [drwxrwxrwx];

    • 连接文件(link):类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx];

    • 设备与设备文件(device):与系统外设及存储等相关的一些文件,通常都集中在 /dev目录;

    • 套接字文件(sockets):这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型;

    • 管道文件(FIFO,pipe):FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p];



Linux文件系统介绍

Linux命名规范

在Linux系统中可以使用长文件或目录名,可以给文件及目录取任何名字,但必须遵循以下规则:



    • 除了/以外,所有字符都合法;

    • 在Linux中有特殊含义的字符最好不要使用,如空格符、制表符、退格符和字符 @ # $ & ( ) – 等;

    • 避免使用加减号或“.”作为普通文件名的第一个字符;

    • 大小写敏感,要严格区分字符大小写;

    • Linux系统下的文件名长度最长不能超过255个字符;


Linux文件结构

Linux系统中,文件系统是由目录及文件有效组织。

Linux系统中的目录即为文件的路径映射,文件即为存储空间中存储的一段流式数据,可以做到对数据按名索取。

文件结构的组成:


    • /:根目录,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者;

    • /bin:bin就是二进制(binary)英文缩写。在一般的系统当中,都可以在这个目录下找到linux常用的命令。系统所需要的那些命令位于此目录;

    • /boot:Linux的内核及引导系统程序所需要的文件目录。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;

    • /cdrom:这个目录在刚刚安装系统的时候是空的。可以将光驱文件系统挂在这个目录下;

    • /dev:dev 是设备(device)的英文缩写。这个目录对所有的用户都十分重要。因为在这个目录中包含了所有linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序;

    • /etc:etc这个目录是linux系统中最重要的目录之一。在这个目录下存放了系统管理时要用到的各种配置文件和子目录。要用到的网络配置文件,文件系统,x系统配置文件,设备配置信息,设置用户信息等都在这个目录下;

    • /home:如果建立一个用户,用户名是"xx",那么在/home目录下就有一个对应的/home/xx路径,用来存放用户的主目录;

    • /lib:lib是库(library)英文缩写。这个目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。注意:千万不要轻易对这个目录进行什么操作,一旦发生问题,系统就不能工作了;

    • /mnt:这个目录一般是用于存放挂载储存设备的挂载目录;

    • /media:挂载移动存储设备的目录;

    • /opt:主要存放可选的程序;

    • /proc:可以在这个目录下获取系统信息;

    • /root:Linux超级权限用户root的家目录;

    • /sbin:这个目录是用来存放系统管理员的系统管理程序;

    • /srv:服务启动后,所需访问的数据目录;

    • /tmp:临时文件目录;

    • /usr:这是linux系统中占用硬盘空间最大的目录。用户的很多应用程序和文件都存放在这个目录下。在这个目录下,可以找到那些不适合放在/bin或/etc目录下的额外的工具;

    • /usr/local:主要存放手动安装的软件;

    • /usr/share:系统共用的东西存放地;

    • /var:这个目录的内容是经常变动的,可以理解为vary的缩写。/var下有/var/log 这是用来存放系统日志的目录;/var/ www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地。


计算机概述




Linux命令简单使用

Linux命令介绍

Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是*处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。

Linux命令在系统中有两种类型:内置Shell命令和外部命令。

操作命令

首先介绍一个名词“控制台(console)”,它就是我们通常见到的使用字符操作界面的人机接口,例如dos。

我们说控制台命令,就是指通过字符界面输入的可以操作系统的命令,例如dos命令就是控制台命令。

获得帮助

在Linux系统中可以使用help、man或info命令来获得帮助,下面简单介绍一下这三个命令的使用:


    • 语法格式:help [-dms] [模式 …]

    • help命令:仅用于显示shell内部命令的帮助信息;

        选项:

           -d:输出每个主题的简短描述

           -m:以伪 man 手册的格式显示使用方法

           -s:为每一个匹配 PATTERN 模式的主题仅显示一个用法

[[email protected] ~]# help help
help: help [-dms] [模式 ...]
    显示内嵌命令的相关信息。

    • 语法格式:man [OPTIONS] COMMAND

    • man命令:是Linux下的帮助指令,通过man可以查看Linux中的指令帮助、配置文件帮助和编程帮助等信息;主要用于查看外部命令的帮助信息;

       * man命令查看帮助文档章节划分:

计算机概述

[[email protected] ~]# man sleep

    info命令:是Linux下info格式的帮助指令;

[[email protected] ~]# info info

注意:在查看命令帮助时,会出现[],<>,|等符号,它们的含义如下:
                [] :表示是可选的;
                <> :表示是可变化的; 
                x|y|z :表示只能选择一个;
                -abc :表示三个参数(或任何二个)的混合使用

Linux命令使用格式

command [options] [arguments]
        command:命令
        options:  –单词或-单字

        arguments:参数(档案名称或其他)



简单命令介绍


    • ifconfig命令:被用于配置和显示Linux内核中网络接口的网络参数,也可用于配置网卡信息;

  • 语法:ifconfig [-v] [-a] [-s] [interface]

        ifconfig [-v] interface [aftype] options | address …

        inconfig

  • 实例:

[[email protected] ~]# ifconfig
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.12  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::20c:29ff:fe4a:fc3c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:4a:fc:3c  txqueuelen 1000  (Ethernet)
        RX packets 4780  bytes 1140744 (1.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 819  bytes 188758 (184.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 4  bytes 340 (340.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4  bytes 340 (340.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    

  • echo命令:用于在shell中打印shell变量的值,或者直接输出制定的字符串;

    • 语法:echo [SHORT-OPTION]… [STRING]…

     echo LONG-OPTION

  • 实例:

[[email protected] ~]# echo -e "\e[1;31mThis is red text\e[0m"
This is red text

    • tty命令:用于显示终端机连接标准输入设备的文件名称;



    • 语法:tty [OPTION]…

    • 实例:

[[email protected] ~]# tty
/dev/pts/0
  • startx命令:用来启动X window(图形化界面);

    • 语法:startx [ [ client ] options … ] [ — [ server ] [ display ] options … ]

    • 实例:

[[email protected] ~]# startx
xauth:  file /root/.serverauth.3129 does not exist
... ...

    • 语法: export [-fn] [名称[=值] …] 或 export -p

    • export命令:用于将shell变量输出为环境变量,或者将shell的函数输出为环境变量;



    • 选项:

              -f指 shell 函数

              -n删除每个 NAME 名称的导出属性

              -p显示所有导出的变量和函数的列表



    • 实例:

[[email protected] ~]# export
declare -x DISPLAY="localhost:10.0"
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x KDEDIRS="/usr"
declare -x LANG="zh_CN.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"

    • pwd命令:以绝对路径的方式显示用户工作目录;


    • 语法:history [-c] [-d 偏移量] [n]

    • history命令:用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将命令历史缓冲区中的目录写入命令文件;

          history -anrw [文件名]

          history -ps 参数 [参数…]



    • 实例:查看最近5条历史命令

[[email protected] ~]# history 5
   72  man pwd
   73  pwd
   74  man history
   75  history -help
   76  history 5
  • shutdown命令:用于系统关机的命令;

    • 语法:shutdown [OPTIONS…] [TIME] [WALL…]

    • 实例:5分钟后关机

[[email protected] ~]# shutdown +5 m
Broadcast message from [email protected] (Sun 2016-08-14 17:22:20 CST):
 
System will shutdown after 5 minutes
The system is going down for power-off at Sun 2016-08-14 17:26:20 CST!

    • poweroff命令:用于关闭计算机操作系统并切断计算机电源;



    • 语法:poweroff [OPTIONS…]

    • 实例:立即关闭系统

[[email protected] ~]# poweroff
  • reboot命令:用来重新启动正在运行的Linux系统;

    • 语法:reboot [OPTIONS…] [ARG]

    • 实例:重启Linux系统

[[email protected] ~]# reboot

    • 语法:hwclock [功能] [选项…]

    • hwclock命令:是一个硬件时钟访问工具,可以用来显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可以设置系统时间为硬件时钟时间。

        功能:

         -h, –help           显示此帮助并退出

         -r, –show           读取硬件时钟并打印结果

             –set            将 RTC 设置为 –date 指定的时间

         -s, –hctosys        从硬件时钟设置系统时间

         -w, –systohc        从当前系统时间设置硬件时钟

             –systz          基于当前时区设置系统时间

             –adjust         根据自上次时钟设置或调整后的系统漂移

                                来调整 RTC

         -c, –compare        定期将系统时钟与 CMOS 时钟相比较

             –getepoch       打印内核的硬件时钟纪元(epoch)值

             –setepoch       将内核的硬件时钟纪元(epoch)值设置为

                                –epoch 选项指定的值

             –predict        预测 –date 选项所指定时刻读取到的 RTC 值

         -V, –version        显示版本信息并退出

          选项:

         -u, –utc           硬件时钟保持为 UTC 时间

             –localtime      硬件时钟保持为本地时间

         -f, –rtc <文件>      代替默认文件的特殊 /dev/… 文件

             –directisa      直接访问 ISA 总线,而非 /dev/rtc

             –badyear       忽略  RTC 年份(由于 BIOS 损坏)

             –date <时间>    指定要设置的硬件时钟时间

             –epoch <年>     指定作为硬件纪元(epoch)值起始的年份

             –noadjfile      不访问 /etc/adjtime;需要使用 –utc 或 –localtime 选项

             –adjfile <文件>  指定调整文件的路径; 默认为 /etc/adjtime

             –test           不更新,只显示将进行什么操作

         -D, –debug          调试模式



    • 实例:查看当前硬件日期及时间

  • [[email protected] ~]# hwclock 
    2016年08月14日 星期日 17时36分11秒  -0.881272 秒

    • 语法:date [选项]… [+格式]

    • date命令:显示或设置系统时间与日期;

         date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]]


    • 实例:输出昨天的日期

[[email protected] ~]# date -d "1 day ago" +"%Y-%m-%d"
2016-08-13