Linux学习(1)——基础知识

来源:互联网 发布:社交网络mp4 编辑:程序博客网 时间:2024/06/15 02:21

北桥--高速总线控制器--连接内存(早期)

南桥--低速总线控制器--大量的I/O设备--汇总后连接到北桥

通过缓存来平衡CPU和内存的速度差。

程序的局部性原理:时间和空间的局部性。刚访问的数据最近可能再访问。访问一个数据,离这个数据近的其他数据

可能会马上被访问到。


API: 不同cpu编写出来的具有相同功能的接口程序。使两种不同硬件抽象出相同的软件环境。


硬件架构:ARM

                  X86

                  X64

                  安腾(Intel从HP收购的64位架构)

                  alpha(HP)

                  UltraSparc

                  Power(IBM)

                  M68000--M68K

                  PowerPC

                  

OS:

Windows

Linux

Unix

        HP-UX

        Solaris

        SCO UNIX

        Unixware

OS/2

CPU:

    slice时间片
    5ms

    5ms

内存:分段机制。

           虚拟地址空间


进程

库:一堆的程序。无执行入口。可被其他程序调用执行。只提供了调用接口。

system call 系统调用 (操作系统的功能)

越底层就越能够让上层有更多选择。

将底层系统调用封装起来的更为高级的程序就是“库”。


shell :人机交互接口


操作系统基础

系统调用--->库(调用)API
后台服务:随系统启动,实现操作系统的一些基本功能
内核识别不同进程,并将执行结果转交给应用程序。
将应用程序与内核隔离开来, Windows的保护模式

内存中 BIOS映射的空间 + kernel space + 应用程序
这样划分容易产生内存碎片。

shell :接收用户指令,传递给kernel来启动相应程序。
            图形用户界面GUI -- Linux上  Gnome,KDA, xface
            命令行界面    CLI  --Windows  DOS
                                            Linux   bash shell  等等

交互式接口与应用程序相关联。

内核功能:
       进程管理
       内存管理
       文件系统
       网络功能
       硬件驱动
       安全机制


批处理系统:jobs1$$$$$jobs2

MainFrame 大型机

Multics 多用途,多用户的计算机系统


DEC:数字设备公司   
    PDP-11 ,PDP-7  
                     Ken--Unics--->Unix 基于汇编开发
                     B语言(脚本语言)---引入变量、指针等特性--->C语言
    VAX  -->vms系统

Bill  Joy : BSRG
BSD:Berkeley System Distribution

1981 Microsoft成立。 Xenix 

CP/M-->DOS

Xerox:复印件
PARK

FreeBSD--第一个在PC机上运行的
OpenBSD--安全
NetBSD--服务

Sun MicroSystem     生产workstation
Sun OS --->Solaris   正统的Unix
CSH:兼容C 语言的shell

基于vms的新一代系统  Windows NT Server

Andrew: Minix 基于Unix开发
Linus:Linux只是内核   glibc(库),gcc

Stallman,Freedom
GNU:GUN is Not Unix
GPL:General Public License  通用公共许可证
LGPL:Lesser GPL
GPLv2
GPLv3

BSD
Apache

自由获取、自由修改、自由学习

Emacs:文本编辑器
gcc: GUN C Complier   C编译器
bash:

GNU/Linux  完整的操作系统

源代码: c开发的程序 --->编译成二进制(交叉编译实现跨平台)
ABI: Application  Binary  Interface

发行商:release。将源代码格式编译成通用格式包装发行。
RedHat
SLS
Debian 唯一不受商业公司维护。
SUSE (基于SLS) -->被Novell收购(Netware)OpenSUSE

Debian---dpt
RedHat---rpm

CentOS:Community ENTerprise OS  (社区版RedHat)

Fedora:RedHat个人版。为企业级提供测试。
Mandriva 桌面

Ubuntu(基于Debian二次发行)
Mint(基于Ubuntu二次发行)

Linux(kernel): 0.1, 1.0, 2.0, 2.2, 2.6, 3.0, 3.7

RHEL: 3.0, 4.0, 5.0, 6.0 

Linux的基本原则:
         1、目的单一的小程序组成;组合小程序完成复杂任务
         2、一切皆文件
         3、尽量避免捕获用户接口
         4、配置文件保存为纯文本格式

GUI接口:
CLI接口:
      命令提示符,pormpt,bash(shell)
          #:root
          $:普通用户
      命令:

命令格式:
命令  选项 (可以有多个)    参数(命令的作用对象)
       短选项:-character
           多个选项可以组合: -a  -b  =  -ab
       长选项:--word
       参数:可以有多个。

使用凭证:用户
Linux严格区分大小写

Ctrl+alt + F1/F2/F3--F6  虚拟终端(terminal):模拟多用户

startx & 启动图形界面(Ctrl+alt + F7)  可以启动多个图形界面。
图形化下启动 terminal  (模拟终端)

GUI:Graphic User Interface
X-Window 图形显示协议
    Gnome:C
    KDE: C++
    XFace:轻量级

    
CLI:Command Line Interface
     sh
     bash 
     csh
     zsh
     ksh 
     tcsh 

三种用户:root,student,vistor

切换用户
su  :switch user 
# su [-l] 用户名   []表示可省略   -l表示完全切换
使用exit  退回原用户

#passwd   修改当前用户密码
普通用户需满足密码复杂性规则

IDE:集成开发环境

.so :shared object (类似dll)

login:
    用户名:用户ID

认证机制:鉴别用户就是他所声称的那个人。
授权:Authorization 
审计:Audition(日志)

prompt,命令提示符:
命令:
magic number:魔数。
标记程序执行的格式
shebang

#!/bin/bash

#  command     options...    arguments....

选项:修改命令的执行特性。有些选项可以带参数(选项的参数)
      短选项   
      长选项
参数:指定命令的作用对象

list:ls
列出、列表
目录:是文件,路径映射
路径:从指定起始点到目的地所经过的位置。

文件系统:File system   层次化管理的机制

指定路径下的文件

倒置树状目录结构。
绝对路径:从根目录开始定位
相对路径:相对于当前所处位置的目录。在从根到目标的路径节点上。
working directory;current directory

pwd:printing working directory

ls -l  长格式
drwx------ 3 root root   4096 03-25 06:15 gconfd-root
        文件类型:
               - :普通文件(f)
              d :目录文件
              b :块设备文件(block)
              c :字符设备文件(character)
              l  :符号链接文件(symbolic link file ) 软链接文件
              p :命令管道(pipe)
              s :套接字文件(socket)
         文件权限:9位。每3位一组。每组:rwx(读、写、执行)
         文件硬链接的次数
         文件的属主(owner)
         文件的属组(group)
         文件的大小(size),单位:字节
         时间戳:(timestamp)  最近一次被修改
                   三个时间戳最近一次被访问(access),被修改(modify),被改变(change)
             metadata:元数据。文件的属性数据就是一种元数据。
         文件名

   -h:human readable。做单位转换。
          -rw------- 1 root root 1.6K 03-25 06:09 anaconda-ks.cfg
   -a: all。显示以  .  开头的隐藏文件
           . :当前目录               .. :当前目录的父目录
   -A:不显示 .  和 ..   的其他隐藏文件
   -d: 显示目录自身属性
   -i :显示文件的索引节点号
  文件的数字标识符:index node =  inode
   -r :逆序显示文件
   -R:递归显示。文件子目录。

cd:change directory 
    cd    切换到家目录,主目录。Home directory。 用“~”标识家目录
    cd ~username:进入指定用户的家目录
    cd - : 在当前目录和前一个目录来回切换

命令类型:
       内置命令:shell 内置。 builtin
       外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件。

环境变量:变量是命名的内存空间。
printenv
PATH:一堆使用冒号分隔的路径。需要注意次序。第一次执行会去查找,之后会把命令及对应路径缓存。
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@beny /]# hash   (一种缓存)
hits command
   1 /usr/bin/printenv
  25 /bin/ls
   1 /usr/bin/clear

O(1): hash列表无论队列多长,查找所用时间是不变的。
type:显示指定命令的命令类型。

date:时间管理。看到的是系统时间,通过clock或hwclock来显示硬件时间。
RTC —— 实时时钟
NTP  网络时间协议
Linux通过rtc读取时间,然后内核通过软件模拟振荡器来即使
         硬件时钟
         系统时钟

获得命令使用帮助:
内部命令:
      help COMMAND  获取一个特定命令的帮助信息
外部命令:
      COMMAND --help    获取一个外部命令的简要帮助信息

命令手册:manual
在线文档:
info COMMAND   命令的历史

文档:/usr/share/doc


man  COMMAND   打开一个命令使用手册。通常是一个压缩存档的文本文档。
man date   “[]”表示可省略。  “|”  表示多选一     "<>" 必须给出的内容   “...”  可以出现多次  “{}” 分组,无特殊意义
SYNOPSIS
       date [OPTION]... [+FORMAT]
       date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
MAN:
    NAME : 命令名称及功能简要说明
    SYNOPSIS :  用法说明,包括可用的选项
    DESCRIPTION : 功能的详细说明,包括每个选项的意义
    OPTIONS : 说明每个选项的意义
    FILES: 此命令相关配置文件
    BUGS:
    EXAMPLES: 使用示例
    SEE ALSO : 另外参照

翻屏:
      向后翻一屏  :SPACE
      向前翻一屏 :  b
      向后翻一行 : ENTER
      向前翻一行 : k
查找:
      /KEYWORD  : 向后 
     n: 下一个
     N: 前一个
      ?KEYWORD  :向前
     n: 下一个
     N: 前一个

q: 退出

[root@beny ~]# date +"This year is %Y. %nToday is %d"
This year is 2016. 
Today is 06
[root@beny ~]# date +%H:%M
21:52
[root@beny ~]# date +%s   时间戳   1970-01-01 00:00:00  UTC
1459950782

hwclock -w   同步系统时间到硬件时间
hwclock -s    同步硬件时间到系统时间

cal: calendar  日历


       
whatis COMMAND  显示命令在哪个章节



分章节:
       1:用户命令(/bin, /usr/bin, /usr/local/bin)
       2:系统调用
       3:库调用
       4:特殊文件  (设备文件)
             TTY(4)                     Linux Programmer’s Manual                    TTY(4)
             NAME
                         tty - controlling terminal


            DESCRIPTION
                 The  file  /dev/tty is a character file with major number 5 and minor
                  number 0, usually of mode 0666 and owner.group  root.tty.   It  is  a
                   synonym for the controlling terminal of a process, if any.


                     In  addition to the ioctl() requests supported by the device that tty
     5:文件格式(配置文件的语法)
     6:GAMES游戏
     7:杂项 Miscellaneous
     8:管理命令(/sbin,/usr/sbin/,/usr/local/sbin)管理员使用

练习:
echo是内部还是外部命令?
[root@beny doc]# type echo
echo is a shell builtin
作用?
echo - display a line of text
如何换行显示?
[root@beny doc]# echo -e "This year is 2016. \nToday is 6"
This year is 2016. 
Today is 6
转义,逃逸。

[root@beny doc]# type printf
printf is a shell builtin 

[root@beny doc]# printf "This year is 2016."
This year is 2016.[root@beny doc]# 

[root@beny doc]# printf "This year is 2016.\n"
This year is 2016.









       

    




 




















0 0