• 学习Linux须知1.0之Linux相关概念、工具(yum、vim)、防火墙等



    温馨提示:重点掌握的前面都标注了 ☆


    一、Linux 是什么?

    Linux 是一个操作系统。


    我们的 Linux 主要是系统调用和内核那两层。

    当然直观地看,我们使用的操作系统还包含一些在其上运行的应用程序,比如文本编辑器、浏览器、电子邮件等。

    Linux 本身只是操作系统的内核。

    内核是使其它程序能够运行的基础。它实现了多任务和硬件管理,用户或者系统管理员交互运行的所有程序实际上都运行在内核之上。

    其中有些程序是必需的,比如说,命令行解释器(shell),它用于用户交互和编写 shell 脚本。

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口) 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

    Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。


    Linux之父 Linus 没有自己去开发这些应用程序,而是使用已有的自由软件。这减少了搭建开发环境所需花费的工作量。实际上,他经常改写内核,使得那些程序能够更容易地在 Linux 上运行。许多重要的软件,包括 C 编译器,都来自于自由软件基金 GNU 项目。GNU 项目开始于 1984 年,目的是为了开发一个完全类似于 UNIX 的免费操作系统。为了表扬 GNU 对 Linux 的贡献,许多人把 Linux 称为 GNU/Linux(GNU 有自己的内核)。

    Linux之父 芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写linux的内核。他还独自开发了git版本控制工具。





    二、Unix 和 Linux 的关系:

    Linux产品成功的模仿了UNIX系统和功能。Linux是免费的,Unix是收费的。

    • UNIX是商业操作系统,贵的吓人,一般小公司用不起的。

    • Linux是Linus模仿UNIX写出来的一个开源操作系统,是免费的。不过为linux开发的很多商业组件是要收费的,而且服务也是收费的。





    三、shell(壳)和 bash 的关系:

    1、Shell 是指"提供给使用者使用界面"的软件(命令解析器),类似于 DOS 下的 command(命令行)和后来的 cmd.exe 。它之所以被称作 Shell 是因为它隐藏了操作系统底层的细节。

    有壳就有核,这里的核就是指 UNIX/Linux 内核,Shell 是指"提供给使用者使用界面"的软件(命令解析器)

    shell 既是用户交互的界面,也是控制系统的脚本语言。

    Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

    Shell 既是一种命令语言,又是一种程序设计语言。

    Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。


    ■ Shell 脚本(shell script):

    简单说,shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。

    • 习惯叫法上,shell 脚本通常只叫shell。但是你需要明白shell和shell脚本的区别,一个是命令解析器,一个是编写了shell指令的文本文件。

    ■ Shell 环境:

    • Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

    Linux 的 Shell 种类众多,常见的有:

    • Bourne Shell(/usr/bin/sh或/bin/sh)
    • Bourne Again Shell(/bin/bash)
    • C Shell(/usr/bin/csh)
    • K Shell(/usr/bin/ksh)
    • Shell for Root(/sbin/sh)

    2、bash:

    Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。

    同时,Bash 也是大多数 Linux 系统默认的 Shell。





    ☆ 四、Linux 目录结构介绍

    /bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令。

    /boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。(不 要动)

    /dev : dev是Device(设备)的缩写, 存放的是Linux的外部设备,在Linux中访问设备的方式和访问 文件的方式是相同的。

    /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。 [管理配置]

    /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。 [默认/home 是空的,需要自己手动创建一个目录,在/home目录下创建的目录相当于c盘Users下的目录]

    /lib: 这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。 (不要动)

    /lost+found: 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。(存放 突然关机的一些文件)

    /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备 挂载到这个目录下。

    /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上, 然后进入该目录就可以查看光驱里的内容了。(我们后面会把一些本地文件挂载在这个目录下)

    /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 [安装程序]

    /proc: 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。(不用管)

    /root:该目录为系统管理员,也称作超级权限者的用户主目录。 [系统管理员]

    /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。 [超级用户管理的程序]

    /srv:该目录存放一些服务启动之后需要提取的数据。 [服务器启动提取的数据]

    /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。 [文件系统]

    /tmp:这个目录是用来存放一些临时文件的。用完即丢的文件,可以放在这个目录下,安装包!

    /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows 下的program files目录。 [程序目录]

    /usr/bin: 系统用户使用的应用程序。 [应用程序]

    /usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。 [高级程序、守护程序]

    /usr/src: 内核源代码默认的放置目录。

    /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件 [修改的目录、日志]

    /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被 删掉或清除。

    /www:存放服务器网站相关的资源,环境,网站的项目。





    ☆ 五、Linux系统分为两种:

    1、RedHat系列:Redhat、Centos、Fedora等

    2、Debian系列:Debian、Ubuntu等

    • RedHat系列的包管理工具是yum

    • Debian系列的包管理工具是apt-get

    一般你所见到的是Linux,比如 Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、 Arch Linux、SolusOS等,他们都是Linux不同的发行版本。





    ☆ 六、查看系统版本信息

    1、步骤1:cat /etc/os-release

    2、步骤2:分别对于redhat、debain版本:

    • 查看 redhat 版本命令:

      cat /etc/redhat-release
      
    • 查看 debain 版本命令:

      cat /etc/debian_version
      





    七、后缀是.rpm

    1、rpm 是Linux软件扩展名,是Red Hat Linux提供的一种包封装格式。现在许多Linux发行版本都使用。

    2、后缀为.deb是Debain Linux提供的一种包封装格式。

    3、后缀为.tar.gz、tar.Z、tar.bz2或.tgz是使用Unix系统打包工具tar打包的。

    4、后缀为.bin 的一般是一些商业软件

    • 通过扩展名可以了解软件格式,进而了解软件安装。

    1、 RPM软件包管理器(红帽软件包管理器)

    与直接从源代码安装相比,软件包管理易于安装和卸载;易于更新已安装的软件包;易于保护配置文件;易于跟踪已安装文件。

    几乎所有的Linux发行版本都使用某种形式的软件包管理安装、更新和卸载软件。


    2、rpm 命令:

    rpm 最初是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,现在许多Linux发行版本都使用。

    rpm的命令是以 rpm 开头的!

    使用举例:

    • 查询安装的yum依赖包:rpm -qa|grep yum
    • 查看epel依赖包:rpm -qa|grep epel

    3、命令语法:rpm [选项] [参数]

    • RPM 命令主要参数:

      -a 查询所有套件

      -q 使用询问模式,当遇到任何问题时,rpm指令会先询问用户

      -l 显示套件的文件列表

      -i 安装软件
      -t 测试安装,不是真的安装

      -p 显示安装进度
      -f 忽略任何错误
      -U 升级安装
      -v 检测套件是否正确安装





    ☆ 八、yum 或者 apt

    ☆ 1、yum 或 apt 的关系:

    RedHat系列的包管理工具是 yum

    Debian系列的包管理工具是 apt-get


    2、yum 详细介绍:

    (1) yum 是什么?

    Yellow dog Updater Modified的简称,起初是由yellow dog这一发行版的开发者研发,用python写成,最初叫做yup(yellow dog updater),

    后来被改名为 yum。

    (2) yum 特点

    • 可以同时配置多个资源库(Repository)
    • 简洁的配置文件(/etc/yum.conf,/etc/yum.repos.d 下的文件)
    • 自动解决增加或删除rpm包时遇到的倚赖性问题
    • 使用方便
    • 保持与RPM数据库的一致性

    (3) yum 的作用

    • 更加方便地 添加/删除/更新RPM包.
    • 自动解决包的倚赖性问题.
    • 更加方便地管理大量系统的更新问题.、

    3、 yum 的核心---仓库

    yum的关键之处是要有可靠的repository(软件仓库)

    软件仓库,它可以是http或ftp站点, 也可以是本地软件池,但必须包含rpm的header

    header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等

    正是收集了这些 header并加以分析,才能自动化地完成余下的任务。


    4、yum 配置文件介绍---yum.conf 和 CentOS-Base.repo:

    (1) yum 主配置文件 /etc/yum.conf

    [root@iZwz9535z41cmgcpkm7i81Z etc]# cat yum.conf
    [main]
    cachedir=/var/cache/yum/$basearch/$releasever  # yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum
    keepcache=0    # 是否保存缓存,为0,让缓存一直为空
    debuglevel=2   # debuglevel:除错级别,0-10,默认是2
    logfile=/var/log/yum.log    # yum的日志文件,默认是/var/log/yum.log
    exactarch=1    #  准确匹配,精确匹配硬件平台,只有完全相同才更新。有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包
    obsoletes=1	   # 当使用升级模式时,一些包没有用了,可以删除(取值1)
    gpgcheck=1     # 安装时是否检查RPM包的PGP签名
    plugins=1      # Yum插件是否可用
    installonly_limit=5   # 安装限制           # bugtracker_url:bug 跟踪路径
    bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?   category=yum   # 目录
    distroverpkg=centos-release   # 定从哪里获取系统版本相关的信息
    
    
    #  This is the default, if you make this bigger yum won't see if the metadata
    # is newer on the remote and so you'll "gain" the bandwidth of not having to
    # download the new metadata and "pay" for it by yum not having correct
    # information.
    #  It is esp. important, to have correct metadata, for distributions like
    # Fedora which don't keep old packages around. If you don't like this checking
    # interupting your command line usage, it's much better to have something
    # manually check the metadata once an hour (yum-updatesd will do this).
    # metadata_expire=90m
    
    # PUT YOUR REPOS HERE OR IN separate files named file.repo
    # in /etc/yum.repos.d
    

    (2) yum源的默认配置文件 /etc/yum.repos.d/CentOS-Base.repo

    • mirrorlist 镜像站点

    • baseurl 仓库路径(固定路径)

    • enabled=1 是否打开仓库,为1则是打开仓库,为0则是关闭仓库

    • gpgcheck 是否需要查阅RPM文件内数字证书,0表示不检查,1表示检查 (GPG是加密和数字签名的免费工具)

    • gpgkey 数字证书公钥文件所在位置,使用默认值

      [root@iZwz9535z41cmgcpkm7i81Z yum.repos.d]# cat CentOS-Base.repo
      [base]
      name=CentOS-$releasever - Base
      failovermethod=priority
      baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
      gpgcheck=1
      gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7
       
      #released updates 
      [updates]
      name=CentOS-$releasever - Updates
      failovermethod=priority
      baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
      gpgcheck=1
      gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7
       
      #additional packages that may be useful
      [extras]
      name=CentOS-$releasever - Extras
      failovermethod=priority
      baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
      gpgcheck=1
      gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7
       
      #additional packages that extend functionality of existing packages
      [centosplus]
      name=CentOS-$releasever - Plus
      failovermethod=priority
      baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
      gpgcheck=1
      enabled=0
      gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7
       
      #contrib - packages by Centos Users
      [contrib]
      name=CentOS-$releasever - Contrib
      failovermethod=priority
      baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
      gpgcheck=1
      enabled=0
      gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7
      

    ☆ 5、yum 包管理工具

    • 作用:添加/删除/更新RPM包.自动解决包的倚赖性问题.
    • 核心是repository 仓库
    和maven、npm一样,凡是看到,涉及到自动管理包,必须考虑的是下载速度的提速。

    ■ 配置一下阿里云镜像加速:

    (1) 系统是 debain:

    • 记得先备份,可以选择创建一个文件夹,然后拷贝一份放进去

      root@f1cfb81dedfd:/etc/apt# mkdir cat sources.list.backup
      root@f1cfb81dedfd:/etc/apt# cp sources.list ./sources.list.backup
      root@f1cfb81dedfd:/etc/apt/sources.list.backup# cd ../
      
    • 使用命令 echo 覆盖+追加方式 [若是没有vim工具,则使用bash命令]

      deb https://mirrors.aliyun.com/debian bullseye main
      deb https://mirrors.aliyun.com/debian-security bullseye-security main
      deb https://mirrors.aliyun.com/debian bullseye-updates main
      
    • 执行一下更新命令:

       apt-get update -y
      

    (2) 系统是 redhat:

    • 记得先备份,可以选择创建一个文件夹,然后拷贝一份放进去

      root@f1cfb81dedfd:/etc/yum.repos.d# mv /etc/yum.repos.d /etc/yum.repos.d.backup
      root@f1cfb81dedfd:/etc/yum.repos.d# 
      
    • 在阿里云镜像官网下载文件 CentOS-Base.repo [下载对应你的系统版本的Centos-Base.repo,下载的名字不是这个,可以自己改一下哦]

    • 使用工具xftp,删除掉原先的CentOS-Base.repo,然后将下载下来的CentOS-Base.repo,传输到/etc/yum.repos.d目录下


    ☆ 6、yum的常用命令:

    参数 -y(当安装/卸载/更新过程提示选择全部为"yes")

    • 安装:yum install xxx

    • 删除:yum remove xxx

    • 升级: yum update xxx

      • 升级所有软件(相当于升级系统):yum update
    • 查询:yum list 列出yum服务器上面所有的软件名称

      • yum list h* #找出以h开头的软件名称
      • yum list installed #查找所有已安装的列表
    • 清除缓存:

      • yum clean packages 清除缓存目录下的软件包
      • yum clean oldheaders 清除缓存目录下旧的 headers
      • yum clean headers 清除缓存目录下的 headers
      • yum all = yum clean packages + yum clean oldheaders 清除缓存目录下的软件包及旧的header
    • 生成缓存:yum makecache


    ■ yum源改变了(例如修改了yum的配置文件),需要清除下数据再重新建立缓存

    • yum clean all # 清除一下之前的配置等数据
    • yum makecache # 生成新的缓存





    ☆ 九、文本编译器 vim 常用操作:

    1、vim 介绍:一个文本编辑器

    vim 通过一些插件可以实现和IDE一样的功能! Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程 序员中被广泛使用。

    ■ vim 和 vi 的关系:

    简单理解,vim 是 vi 的升级版。


    ■ 关于 文本编辑器需要掌握:

    查看/查找内容,编辑内容,保存内容,光标位置的移动

    ● vim的常用模式有分为 命令模式(正常模式),插入模式,底线命令模式。

    • 正常模式/命令模式:主要用来浏览文本内容。一开始打开vim都是正常模式。按 Esc键 任何情况,都可以返回正常模式
    • 底线命令模式:在正常模式下,按冒号:即可切换到底线命令模式。
    • 插入编辑模式:用来向文本中添加内容的。在正常模式下,按 Insert 键,即可进入插入编辑模式
    • 注意:退出vim,如果使用vim修改任何文本后需要保存并退出,需要在正常/命令模式下(Esc键),输入 shift+zz

    (或者在正常模式,进入底线命令模式(输入:)后,然后在冒号后面输入wq,回车,保存并退出vim。)


    2、使用vim编辑文件:

    • 命令:vim 文件名

    • 编辑文件,文件存在则直接编辑,不存在,则会创建文件,然后编辑文件


    3、关于 vim的模式切换:

    (1) 插入编辑模式:按Insert 键

    • 可以输入、删除、修改内容

      使用鼠标的右键->粘贴功能,会导致正常状态自动切换到插入状态。

    (2) 正常/命令模式:按Esc 键

    • 在任何状态模式,只要按Esc 键,都可以退回到正常模式

    4、vim 保存内容并退出:

    • 在正常状态模式下,shift + zz (按住shift,点击两次z),实现保存并退出操作

    • 或者在命令模式下,按w,进入命令模式,然后输入 :wq 回车,即可实现保存并退出操作

    保存并退出:若卡了,就再次切换模式为插入模式,然后再切回来正常模式,shift+zz



    5、vim的光标位置的移动(在正常模式下):

    (1) 从当前位置向下跳转多少行,直接输入行数,然后输入回车

    ● 直接输入回车,则是往下跳转一行

    • 例如,输入15回车,会从当前位置往下跳转15行。

    (2) 从当前位置向右跳转多少列,直接输入列数,然后输入空格

    ● 直接输入空格,则是往右跳转一列

    • 例如,输入10空格,会从当前位置往右跳转10列。

    (3) 跳转到段首/段尾:

    ● 直接跳转到段首:输入gg

    ● 直接跳转到段尾:输入G



    6、查找内容/搜索功能(在正常模式下):

    (1) 从当前位置向下查找:/ [/关键词,然后回车]

    (2) 从当前位置向上查找:? [?关键词,然后回车]

    查找下一个位置:n

    查找上一个位置:N


    7、vim 退出高亮模式(在底线命令模式下):

    在正常模式,输入:切换到命令模式,然后在冒号的后边,接着输入 noh





    十、防火墙

    1、防火墙是什么和分类:

    ■ 防火墙是什么?

    所谓"防火墙"是指一种将内网和公网(公众访问网)分开的方法,它实际上是一种建立在现代通信网络技术和信息安全技术基础上的应用性安全技术,隔离技术。


    ■ 防火墙分类?

    • 硬件防火墙
    • 软件防火墙

    2、防火墙的作用:

    对于公司,最重要的功能--安全:保护(局域网)、过滤、防止恶意攻击;然后还可以配置地址转换功能,让内部ip无法访问互联网,节约ip成本。


    3、Linux 软件防火墙iptables 或 FirewallD

    Iptables:是centos6自带的防火墙工具,对服务器自身、网络通信流量进行控制,用于过滤数据包,属于网络层防火墙。

    FirewallD:是centos7自带的防火墙工具,但是也同样支持iptables。能够允许哪些服务可用,哪些端口可用,属于更高一层的防火墙。

    iptables 与 firewalld 都不是真正的防火墙, 它们都只是用来定义防火墙策略的防火墙管理工具。


    4、centos7的FirewallD

    ● 查看防火墙的状态:systemctl status firewalld
    
    ● 开启防火墙: systemctl start firewalld
    
    ● 关闭防火墙:systemctl stop firewalld
    
    ● 查看防火墙规则:
    # 查看默认的zone=public所有信息:firewall-cmd --list-all
    # 查看zone=public的端口的信息:firewall-cmd --list-ports --zone=public
    
    ● 开启端口6379: firewall-cmd --zone=public --add-port=6379/tcp --permanent
    
    ● 关闭端口6379: firewall-cmd --zone=public --remove-port=6379/tcp --permanent
    
    ● 重新加载:开启端口/关闭端口,必须重新加载或重启服务器才生效,重新加载命令: firewall-cmd --reload
    
    ■ 命令含义:
    --zone #作用域
    --add-port # 添加端口,格式为:端口/通讯协议
    --permanent #永久生效,没有此参数重启后会失效
    



    如果本文对你有帮助的话记得给一乐点个赞哦,感谢!

  • 相关阅读:
    【工利其器】必会工具之(三)systrace篇(1)官网翻译
    【工利其器】必会工具之(三)systrace篇(2)
    【朝花夕拾】Android安全之(一)权限篇
    【工利其器】必会工具之(二)Android开发者官网篇
    【朝花夕拾】四大组件之(二)Service篇
    【朝花夕拾】四大组件之(一)Broadcast篇
    【朝花夕拾】Android性能篇之(七)Android跨进程通信篇
    【朝花夕拾】Android性能篇之(八)ANR篇--草稿
    Visual Studio容器项目工程化心得
    你需要掌握的有关.NET DateTime类型的知识点和坑位 都在这里
  • 原文地址:https://www.cnblogs.com/shan333/p/16304188.html
Copyright © 2020-2023  润新知