centos

sys.1.2 Linux基础知识概述

一、OS(operating system)概述
1.1 完成的OS包含2部分:Kernel + Application
1.2 狭义上的OS指的是Kernel
1.3 OS的接口分类:

GUI:Graphic User Interface
  GNome:c,gtk开发环境
  KDE:c++,qt开发环境
  XFCE:轻量级桌面
CLI:Command Line Interface
命令行接口使用的shell类型:bash,zsh,sh,csh,tcsh,ksh...

二、操作系统功能

驱动程序
进程管理
安全
网络功能
内存管理
文件系统
......

三、 API与ABI接口

      应用程序
        |
        |<libcall>
     libraries  
        |
        |<syscall>
  (operate system) kernel  
        |
        |
     hardware
          
    API: Application Program Interface
      程序员面对的编程接口
        POSIX:	Portable Operating System , 可移植操作系统		
    ABI: Application Binary Interface , 程序应用者面对运行程序的接口		
GNU:	源码需要编译成为二进制格式 ; gcc,glibc,vi,linux都是源码格式.

四、Linux发行版:数百种之多

    Linux Distribution Timeline		
    Debian:
      ubuntu:
        mint:
      knopix:
    Slackware:
      S.u.S.u:
        SLES:企业版
        OpenSUSE:
    RedHat:
      RedHat Enterprise Linux:RHEL
        CentOS:Community ENTerprise OS
      Fedora Core:每6个月发行一个版本
    Gentoo
    ArchLinux
      
软件程序版本号:major.minor.release
    linux kernel:	www.kernel.org
      0.99,1.0,2.0,2.2,2.4,2.6,3.0,4.0

五、CPU主要架构:

X86
X64
m68000(m68k)
arm
ultrasparc
power:IBM-aix
powerpc(ppc)
alpha:hp-ux

六、开源协议概述
Stallman : GNU

GPL : General Public License
LGPL : Lesser GPL
  FSF : Free Software Foundation
BSD : 
  1.如果二次发布的产品中包含源代码,则在源代码中必须带有原来的代码中的BSD协定;
  2.如果二次发布的产品是二进制格式的库或程序,则需要在发布的文档或版权声明中说明包含原来的代码中的BSD协定;
  3.不可以用开源代码的作者或组织,以及原来的产品的名字做市场推广;
Apache : 
  ASF : Apache Software Foundation

七、程序管理与程序包管理器

1、程序组成部分:二进制文件;配置文件;库文件;帮助文件;
  PS : 二进制文件、库文件:可执行文件,其中二进制文件可单独执行;库文件不能独立执行,只能被调用时执行.
       配置文件、帮助文件:可被查看其内容的文件
2、程序包管理器:
  程序的组成文件打包成一个或有限的几个文件;
  安装;
  卸载;
  查询;

  eg.
    Debian : dpkg, apt-get
    RedHat : rpm, yum, dnf
    S.U.S.E : rpm, zypper
    ArchLinux : 
    Gentoo : 
    LFS : Linux From Scratch
    Kali :

八、centos镜像站点

http://mirrors.aliyun.com
http://mirrors.163.com
http://mirrors.sohu.com

九、Linux用户界面

GUI: 图形界面
  GNome
  KDE
CLI: 命令行接口
  [root@localhost ~]# COMMAND
    root : 当前登录用户
    localhost:	非完整格式的当前主机的主机名。完整格式为:localhost.localdomain
    ~ : 用户当前所在的目录(current directory),也称为工作目录(working directory)
    # : root用户的命令提示符,拥有最高权限,能执行所有操作,prompt
    $ : 普通用户的命令提示符;普通用户不具有管理权限,不能执行系统管理类操作
  bash, zsh, sh, csh, tcsh, ksh
  查看系统当前使用的shell类型:
    [root@localhost ~]# echo $SHELL
    /bin/bash
    [root@localhost ~]#

Linux查看IP地址:

centos 7 :
  [root@localhost ~]# ip a
  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      inet 127.0.0.1/8 scope host lo
         valid_lft forever preferred_lft forever
      inet6 ::1/128 scope host 
         valid_lft forever preferred_lft forever
  2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
      link/ether 00:0c:29:91:1e:d0 brd ff:ff:ff:ff:ff:ff
      inet 192.168.206.128/24 brd 192.168.206.255 scope global dynamic ens33
         valid_lft 1638sec preferred_lft 1638sec
      inet6 fe80::4f33:4130:8b88:c382/64 scope link 
         valid_lft forever preferred_lft forever
  [root@localhost ~]# 
  或者使用下面命令,查出的信息跟上面一样。
  ~]# ip addr
  ~]# ip addr list
  ~]# ip addr show
  ~]# ip a
  ~]# ifconfig    (centos 7 需要安装 net-tools 工具: yum -y install net-tools)
centos 6:
  ~]# ifconfig

linux关闭防火墙

centos 7:
  ~]# systemctl disable firewalld.service
  ~]# systemctl stop firewalld.service
centos 6 :
  ~]# service iptables stop
  ~]# chkconfig iptables off

关机命令centos 7: ~]# systemctl poweroff
重启命令centos 7: ~]# systemctl reboot

十、Linux的终端设备: terminal

物理终端: console 系统装完后,直接用鼠键+显示器接入,进行操作的那个界面,也叫控制台
虚拟终端: tty 默认有6个虚拟终端,按组合键进行切换 Ctrl+Alt+F[1-6] 
图形终端:
  centos 6 :	Ctrl+Alt+F7
  centos 7 :  在哪个虚拟终端上启动图形界面,图形终端即位于哪个虚拟终端(当前虚拟终端切换为图形终端)
串行终端: ttys 系统不需要使用图形界面的情况下,可以不需要显卡。主板上的任何一个串口基于特定的速率进行字符交换.
伪终端  : pts  通过SSH远程连接系统的操作界面;在图形界面上启动的CLI窗口.

十一、Linux哲学思想

Stallman : 自由学习和修改、自由使用、自由分发、自由创建衍生版;
1. 一切皆文件,吧几乎所有资源抽象为文件形式。包括硬件设备、通信接口;

对文件的操作: open() , read() , write() , close() , delete() , create()
物理终端: /dev/console
虚拟终端: /dev/tty# [1,6]
串行终端: /dev/ttys#
伪终端  : /dev/pts/#

查看当前操作界面的终端类型、终端序号:
[root@localhost ~]# tty
/dev/pts/0
[root@localhost ~]# 

启动设备后,在其上关联一个用户接口程序,即可实现与用户交互。
查看接口程序:
~]# echo $SHELL

2. 由众多功能单一的程序组成: 一个程序只做一件事,并且做好;组合小程序完成复杂任务;
3. 尽量避免跟用户交互;
目标:易于以编程的方式实现自动化任务;
4. 使用文本文件保存配置信息;

十二、命令的语法通用格式

# COMMAND OPTIONS ARGUMENTS
1、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

  命令必须遵循特定格式规范:ELF格式(Linux)
    [root@localhost ~]# file /bin/ls
    /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped
    [root@localhost ~]# 

    命令:
      ~]# file /bin/ls   查看文件内容格式的类型

  命令分为两类:
    内置命令:builtin , 由shell程序自带的命令;没有可执行文件;PATH路径中没有内置命令;
    外部命令:独立的可执行程序文件,文件名即命令名;有可执行文件;放选择性在PATH路径中;

    shell程序是独特的程序,负责解析用户提供的命令;
    环境变量:
      PATH: 从哪些路径去查找用户键入的命令字符串所对应的命令文件;
        查找系统当前的PATH路径:
        [root@localhost ~]# echo $PATH
        /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/nginx/sbin/:/root/bin
        查找次序:自左而右

  查看命令类型(内置命令/外部命令): type COMMAND
    [root@localhost ~]# type cd
    cd is a shell builtin
    [root@localhost ~]# 
    [root@localhost ~]# type tree
    tree is /usr/bin/tree

2、OPTIONS: 
  指定命令的运行特性;
  选项有两种表现形式;
    短选项:-  有些命令没有短选项;
          如果同一命令同时使用多个短选项,多数可合并;
          ~]# ls -l -d /var
          ~]# ls -ld /var
    长选项:-- 长选项不能合并;

      PS:有些选项可以带参数,称为选项参数;

3、ARGUMENTS:
  命令的作用对象,命令对什么生效;
  不同的命令,参数不一样;
  有些命令可同时带多个参数,多个之间以空白字符分隔;
    ~]# ls -ld /var /etc /usr

十三、获取命令的使用帮助

1、内部命令: help COMMAND
  ~]# help type
2、外部命令:
  <1> 命令自带简要格式的使用帮助; 
      # COMMAND --help
  <2> 使用手册;manual
      大多数手册放置位置:/usr/share/man
      并非每个COMMAND在所有章节下都有手册
      压缩格式的文件,有章节之分: man1 , man2,...
        1: 用户命令
        2: 系统调用
        3: C库调用
        4: 设备文件及特殊文件
        5: 文件格式(配置文件格式)
        6: 游戏使用帮助
        7: 杂项
        8: 管理工具及守护进程

      # man COMMAND
      man手册章节结构:
      SECTION:
        NAME : 命令的功能性说明
        SYSNOPSIS : 语法格式
        DISCRIPTION : 描述
        OPTIONS : 选项
        EXAMPLES : 使用示例
        AUTHOR : 作者
        BUGS : 报告程序BUG的方式
        SEE ALSO : 参考
        ... ...

      SYNOPSIS:
        [] : 可选内容
        <> : 必须提供的内容
        ... : 同类内容可出现多个

      查看COMMAND的man手册在第几章节: whatis COMMAND
        [root@localhost ~]# whatis passwd
        sslpasswd (1ssl)     - compute password hashes
        passwd (1)           - update user's authentication tokens
        [root@localhost ~]# 

        whatis 命令执行过程式查询数据库进行的;
          手动更新数据库: ~]# makewhatis  (centos 6)
                          ~]# mandb (centos 7)

      man命令打开手册后的操作方法:
        翻屏:
          空格键:向文件尾翻一屏
          b     : 向文件首部翻一屏
          Ctrl + d : 向文件尾部翻半屏
          Ctrl + u : 向文件首部翻半屏
          回车键   : 向文件尾部翻一行
          k        : 向文件首部翻一行
          G        : 跳转至最后一行
          #G       : 跳转至指定行
          1G       : 跳转至文件首部
        文件内容搜索:
          /keywords	从文件首部向文件尾部依次查找,不区分大小写
          ?keywords	从文件尾部向文件首部依次查找
            n : 与查找命令方向相同
            N : 与查找命令方向相反
            q : quit, 退出
      man 选项:
        -M /PATH/TO/SOMEDIR : 到指定目录下查找命令手册并打开;

  <3> info COMMAND
    获取命令的在线文档,并不是每个命令都有;
  <4> 很多应用程序会自带帮助文档: /usr/share/doc/APP-VERSION
    README : 程序的相关信息
    INSTALL : 安装帮助
    CHANGES : 版本迭代时的改动信息
  <5> 主流Linux发行版官方文档
  <6> 程序的官方文档 
  <7> google
    keyword filetype : pdf
    keyword site:domain.tld
  <8> 书籍的出版社
    O'Reiley
    Wrox
    机械工业、电子工业、人邮、清华大学、水利水电

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *