精华内容
下载资源
问答
  • 扩展坞:在西班牙Docker en码头上的Entorno desarrollo
  • Este Saludador es el proyecto que Ya vimos como docker -segundo-ejemplo ,so que a ahora lo tomaremos como punto de partida Construyamos laimágeny corramos un conedoror 印记和西班牙的建筑指南。 ...
  • DAC 2020.2-Atividade Colaborativa 1 法兰西共和国联邦大学,巴黎CI-NCIA E TECNOLOGIA DA-校园卡杰伊拉斯(CAMPUS ... 西班牙语,西班牙语和西班牙语版本。 说明:DESENVOLVIMENTO DEAPLICAÇÕES公司。 装备:
  • 本文是我们学院课程的一部分,该课程的标题为Java开发人员的Elasticsearch教程 。 在本课程中,我们提供了一系列教程,以便您可以开发自己的基于Elasticsearch的应用程序。 我们涵盖了从安装和操作到Java API集成...

    本文是我们学院课程的一部分,该课程的标题为Java开发人员的Elasticsearch教程

    在本课程中,我们提供了一系列教程,以便您可以开发自己的基于Elasticsearch的应用程序。 我们涵盖了从安装和操作到Java API集成和报告的广泛主题。 通过我们简单易懂的教程,您将能够在最短的时间内启动并运行自己的项目。 在这里查看

    1.简介

    有效,快速和准确的搜索功能是绝大多数现代应用程序和软件平台的组成部分。 您正在运行的是小型电子商务网站,需要为客户提供产品目录搜索,或者您是服务提供商,需要公开API以使开发人员可以过滤用户和公司,或者您正在构建任何这类消息传递应用程序从一开始就必须在历史中查找对话……真正重要的是,尽可能快地提供相关结果可能是您正在开发的产品或平台的另一个竞争优势。 。

    确实,搜索可能具有许多面Kong,目的,目标和不同的规模。 它可能像通过精确的单词匹配查找一样简单,也可能像试图理解一个人正在寻找的单词的意图和上下文含义一样复杂( 语义搜索引擎)。 就规模而言,它可能像查询单个数据库表一样琐碎,也可能像处理数十亿个网页一样复杂以提供所需的结果。 这是一个非常有趣且蓬勃发展的研究领域,多年来发表了许多算法和论文。

    如果您是Java / JVM开发人员,则可能听说过Apache Lucene项目,这是一个高性能,功能齐全的索引和搜索库。 这是释放全文搜索功能并将其嵌入到您的应用程序中的第一个也是最好的选择。 尽管它绝对是一个了不起的库,但是许多开发人员发现Apache Lucene的级别太低并且不易于使用。 这就是另外两个伟大的项目ElasticsearchApache Solr诞生的原因之一。

    在本教程中,我们将讨论Elasticsearch ,重点放在事物的开发方面而不是操作方面。 我们将学习Elasticsearch的基础知识,熟悉术语,并讨论在Java / JVM应用程序或命令行中运行它以及与之通信的不同方法。 在本教程的最后,我们将讨论Elastic Stack,以展示Elasticsearch周围的生态系统及其惊人的功能。

    如果您是初级或经验丰富的Java / JVM开发人员,并且对学习Elasticsearch感兴趣,那么本教程绝对适合您。

    2. Elasticsearch基础

    首先,很高兴回答这个问题:那么, Elasticsearch是什么,它如何帮助我以及为什么要使用它?

    Elasticsearch是一个高度可扩展的开源全文本搜索和分析引擎。 它使您可以快速,近乎实时地存储,搜索和分析大量数据。 它通常用作支持具有复杂搜索功能和要求的应用程序的基础引擎/技术。 https://www.elastic.co/

    Elasticsearch是基于Apache Lucene构建的,但是更倾向于通过RESTful API和高级深度分析功能进行通信。 RESTful部分使Elasticsearch特别易于学习和使用。 在撰写本文时, Elasticsearch的最新稳定发行版是5.2 ,而最新发行版本是5.2.0 。 我们绝对应该让Elasticsearch家伙保持如此频繁地发布新版本的步伐,因为5.0.x / 5.1.x分支仅仅成立了几个月……。

    Elasticsearch的角度来看,作为RESTful API的另一个优势是:发送到Elasticsearch或从Elasticsearch接收的每条数据本身都是人类可读的JSON文档(尽管这不是Elasticsearch支持的唯一协议,我们稍后将看到) 。

    为了使讨论更切合实际,我们将假装我们正在开发用于管理书籍目录的应用程序。 数据模型将包括类别,作者,出版商,书籍详细信息(例如出版日期,ISBN,等级)和简要说明。

    书籍目录

    书籍目录

    让我们看看如何利用Elasticsearch使我们的书籍目录易于搜索,但是在此之前我们需要对术语有所了解。 尽管在接下来的几节中,我们将讨论Elasticsearch背后的大多数概念,但请随时随时查阅Elasticsearch的官方文档

    文件资料

    简而言之,在Elasticsearch文档的上下文中,它只是任意数据(通常是结构化的)。 它绝对是对您的应用程序有意义的任何事物(例如用户,日志,博客文章,文章,产品等),但这是Elasticsearch可以操纵的基本信息单元。

    指标

    Elasticsearch将文档存储在索引中,因此,索引只是文档的集合。 公平地讲,将完全不同种类的文档保留在同一索引中会比较方便,但是却很难使用,因此每个索引都可以具有一个或多个类型。 这些类型通过定义每个此类文档应具有的一组公共属性(或字段)来对文档进行逻辑分组。 类型用作有关文档的元数据,对于探索数据的结构以及构建有意义的查询和聚合非常有用。

    索引设定

    Elasticsearch中的每个索引在创建时都可以具有与之关联的特定设置。 最重要的是分片数和复制因子。 让我们谈论一下。

    Elasticsearch是从头开始构建的,可以处理大量索引数据,这些数据很可能会超出单个物理(或虚拟)计算机实例的内存和/或存储能力。 因此, Elasticsearch使用分片作为一种机制,将索引分为几个较小的部分(称为分片),并将其分配到许多节点中。 请注意,一旦设置了分片的数量就无法更改(尽管这不再是完全正确的,但索引可以缩减为更少的分片 )。

    确实,分片解决了一个实际的问题,但是由于单个节点故障,它很容易遭受数据丢失问题的困扰。 为了解决此问题, Elasticsearch通过利用复制来支持高可用性。 在这种情况下,根据复制因素, Elasticsearch会维护每个分片的一个或多个副本,并确保每个分片的副本位于不同的节点上。

    对应

    定义文档类型并将其分配给特定索引的过程称为索引映射,映射类型或仅称为映射。 为了充分利用Elasticsearch ,正确的类型映射可能是您必须进行的最重要的设计练习之一。 让我们花一些时间详细讨论映射。

    每个映射都包含可选的元字段(它们通常从下划线'_'字符开始,例如_index_id_parent )和常规文档字段(或属性)。 每个字段(或属性)都有一个数据 类型 ,在Elasticsearch中它可以属于以下类别之一:

    • 简单数据类型
    • 复合数据类型
      • 对象 –索引内部对象,这些对象又可能包含内部对象本身
    • 专用数据类型
    • 范围数据类型:

    压力不够大,为文档的字段(属性)选择适当的数据类型是快速有效搜索(提供真正相关结果)的关键。 但是有一个问题:每种映射类型中的字段并不完全相互独立。 具有相同名称相同索引具有 不同映射类型的字段必须具有相同的映射定义 。 原因是内部将这些字段映射到同一字段

    回到我们的应用程序数据模型,让我们尝试利用我们刚刚获得的有关数据类型的知识,为books收藏定义最简单的映射类型。

    映射图书目录:首次尝试

    映射图书目录:首次尝试

    对于大多数书籍属性,映射数据类型非常简单,但是作者categories如何呢? 这些属性本质上包含Elasticsearch尚无直接数据类型的值的集合,…还是有?

    高级映射

    有趣的是, Elasticsearch实际上没有专用的数组或集合类型,但是默认情况下,任何字段都可以包含零个或多个(其数据类型)值。

    对于复杂的数据结构, Elasticsearch支持使用对象嵌套数据类型进行映射,以及在同一索引内的文档之间建立父子关系。 每种方法都有优点和缺点,但是为了学习如何使用这些技术,让我们将categories存储为books映射类型的嵌套属性,而authors将被表示为将books作为父对象的专用映射。

    映射图书目录:第二次(也是最后一次)

    映射图书目录:第二次(也是最后一次)

    这些是我们接近catalog索引的最终映射类型。 众所周知, JSONElasticsearch的一等公民,因此让我们了解一下典型索引映射在Elasticsearch实际理解的格式中的样子。

    {
      "mappings": {
        "books": {
          "_source" : {
            "enabled": true
          },
          "properties": {
            "title": { "type": "text" },
            "categories" : {
              "type": "nested",
              "properties" : {
                "name": { "type": "text" }
              }
            },
            "publisher": { "type": "keyword" },
            "description": { "type": "text" },
            "published_date": { "type": "date" },
            "isbn": { "type": "keyword" },
            "rating": { "type": "byte" }
           }
       },
       "authors": {
         "properties": {
           "first_name": { "type": "keyword" },
           "last_name": { "type": "keyword" }
         },
         "_parent": {
            "type": "books"
          }
        }
      }
    }

    您可能会感到惊讶,但是可能会省略字段和映射类型的明确定义。 Elasticsearch支持动态映射,因此在为文档建立索引时会自动添加新的映射类型和新的字段名称(在这种情况下, Elasticsearch决定应使用的字段数据类型)。

    要提及的另一个重要细节是,通过使用特殊的_meta属性,每个映射类型都可以具有与之关联的自定义元数据 。 这是一种非常有用的技术,稍后我们将在本教程中使用。

    索引编制

    一旦Elasticsearch定义了所有索引及其映射类型(或使用dynamic mapping推断),即可开始分析和索引文档。 这是一个非常复杂但有趣的过程 ,至少涉及分析器令牌生成 令牌过滤器字符过滤器

    Elasticsearch支持大量映射参数 ,可让您精确地根据需要定制索引,分析和搜索阶段。 例如,每个字段(或属性)都可以配置为使用自己的索引时间搜索时间分析器 ,支持同义词 ,应用词干分析 ,过滤停用词等等。 通过精心设计这些参数,您最终可能会拥有出色的搜索功能,但是相反的情况也是如此,使它们变得松散,并且每次都可能返回许多无关紧要的结果。

    如果您不需要所有这些,那么最好使用上一部分中的默认设置,而完全省略这些参数。 但是,这种情况很少发生。 举一个现实的例子,大多数时候我们的应用程序必须支持多种语言(和语言环境)。 幸运的是, Elasticsearch也在这里闪耀。

    在继续讨论下一个主题之前,您需要了解一个重要的约束。 一旦配置了映射类型,在大多数情况下, 它们将无法更新,因为它会自动假定相应集合中的所有文档都不再是最新的,应该重新编制索引。

    内部化(i18n)

    索引和分析文档的过程对文档的本地语言非常敏感。 默认情况下,如果在映射类型中未指定标准分析器 ,则Elasticsearch使用标准分析器 。 它适用于大多数语言,但是Elasticsearch为阿拉伯语,亚美尼亚语,巴斯克语,巴西语,保加利亚语,捷克语,丹麦语,荷兰语,英语,芬兰语,法语,德语,希腊语,印地语,匈牙利语,印度尼西亚语,爱尔兰语,意大利语提供专用的分析器 ,拉脱维亚语,立陶宛语,挪威语,波斯语,葡萄牙语,罗马尼亚语,俄语,西班牙语,瑞典语,土耳其语,泰语等等

    根据数据模型和业务案例,有几种方法可以用多种语言对同一文档建立索引。 例如,如果文档实例实际上以多种语言存在(翻译),则每种语言都具有一个索引可能是有意义的。

    万一文档被部分翻译, Elasticsearch在袖子中还有一个有趣的选项,称为multi-fields多字段允许以不同方式索引同一文档字段(属性)以用于不同目的(例如,支持多种语言)。 回到我们的books映射类型,我们可能已经将title属性定义为一个多字段属性,例如:

    "title": {
      "type": "text",
      "fields": {
        "en": { "type": "text", "analyzer": "english" },
        "fr": { "type": "text", "analyzer": "french" },
        "de": { "type": "text", "analyzer": "german" },
        ...
      }
    }

    这些不是唯一可用的选项,但是它们充分说明了Elasticsearch在满足相当复杂的需求方面的灵活性和成熟度。

    3.运行Elasticsearch

    Elasticsearch在许多方面都包含了简单性,其中之一是通过任何两个步骤即可在几乎任何平台上入门的非常简单的方法: 下载并运行 。 在接下来的两节中,我们将讨论启动和运行Elasticsearch的许多不同方法。

    独立实例

    Elasticsearch作为独立应用程序(或实例)运行是采取最快和最简单的方法。 只需下载您选择的软件包并在Linux / Unix / Mac操作系统上运行shell脚本即可:

    bin/elasticsearch

    或从Windows操作系统上的批处理文件中:

    bin\elasticsearch.bat

    就是这样,很简单,不是吗? 但是,在继续讨论更高级的选项之前,了解一下运行Elasticsearch实例的实际含义将很有用。 更确切地说,每次我们说要启动Elasticsearch实例时,实际上是在启动node实例。 这样,根据提供的配置(默认情况下,它存储在conf/elastisearch.yml文件中), Elasticsearch目前支持多种节点类型 。 在这方面,可以将每个正在运行的Elasticsearch独立实例配置为作为以下​​节点类型之一(或组合)运行:

    • 数据节点 :此类节点正在维护数据并对该数据执行操作(由node.data配置设置控制,默认情况下设置为true
    • 接收节点 :这些是特殊类型的节点,它们能够应用接收管道以便在对文档建立索引之前对其进行转换和丰富(它由node.ingest配置设置控制,默认情况下设置为true

    请注意,这还不是一个完整的节点类型列表,我们将在稍后学习更多。

    聚类

    Elasticsearch作为独立实例运行对于开发,学习或测试目的是有好处的,但是肯定不是生产系统的选择。 通常,在大多数实际部署中, Elasticsearch配置为在集群中运行:一个或多个节点的集合最好拆分为多个物理实例。 Elasticsearch集群管理所有数据,并在其所有节点上提供联合索引,聚合和搜索功能。

    每个Elasticsearch群集均由一个唯一的名称标识,该名称由cluster.name配置设置控制(默认设置为"elasticsearch" )。 节点通过引用其名称加入群集,因此这是非常重要的配置。 最后但并非最不重要的一点是,每个集群都有一个专用的主节点,该主节点负责执行集群范围的动作和操作。

    除适用于集群配置外, Elasticsearch还支持其他几种节点类型,除了我们已经知道的那些类型:

    • 符合资格的主节点 :这些类型的节点被标记为有资格被选举为主节点 (它由node.master配置设置控制,默认情况下设置为true
    • 仅协调节点 :这是一种特殊类型的节点,仅能路由请求,处理某些搜索阶段并分配批量索引,本质上表现为负载均衡器(当node.masternode.data时,该节点自动成为仅协调节点和node.ingest设置都设置为false
    • 部落节点 :这是一种特殊的仅协调节点 ,可以连接到多个集群并在所有集群中执行搜索或其他操作(由tribe.*控制tribe.*配置设置)

    默认情况下,如果未指定configuration,则每个Elasticsearch节点均配置为符合master资格data节点ingest节点 。 与独立实例类似, Elasticsearch群集实例可以从命令行快速启动:

    bin/elasticsearch -Ecluster.name=<cluster-name> -Enode.name=<node-name>

    或在Windows平台上:

    bin\elasticsearch.bat -Ecluster.name=<cluster-name> -Enode.name=<node-name>

    除了分片和复制外, Elasticsearch集群还具有高可用性和可扩展系统的所有属性,这些系统将有机地发展以满足您的应用程序需求。 需要注意的是,尽管投入了大量精力来稳定Elasticsearch集群的实现并涵盖了与不同类型的故障场景相关的许多极端情况,但到目前为止,仍不建议将Elasticsearch用作记录系统(或主要存储引擎)。您的数据)。

    嵌入应用

    不久之前(直到5.0版本分支), Elasticsearch完全支持在同一JVM进程(通常称为嵌入)中作为应用程序的一部分运行的选项。 尽管当然不建议这样做,但有时它非常有用,并且可以节省很多精力,例如在集成/系统/组件测试运行期间。

    这种情况最近有所改变,Elasticsearch的嵌入式版本不再得到正式支持,也不再推荐使用。 幸运的是,如果您确实需要嵌入式实例,例如在从较早的Elasticsearch版本缓慢迁移的同时, 仍然可以

    @Configuration
    public class ElasticsearchEmbeddedConfiguration {
      private static class EmbeddedNode extends Node {
        public EmbeddedNode(Settings preparedSettings) {
          super(
    	  InternalSettingsPreparer.prepareEnvironment(preparedSettings, null), 
    	  Collections.singletonList(Netty4Plugin.class)
    	);
        }
      }
    
      @Bean(initMethod = "start", destroyMethod = "stop")
      Node elasticSearchTestNode() throws NodeValidationException, IOException {
        return new EmbeddedNode(
          Settings
            .builder()
            .put(NetworkModule.TRANSPORT_TYPE_KEY, "netty4")
            .put(NetworkModule.HTTP_TYPE_KEY, "netty4")
            .put(NetworkModule.HTTP_ENABLED.getKey(), "true")              
            .put(Environment.PATH_HOME_SETTING.getKey(), home().getAbsolutePath())
            .put(Environment.PATH_DATA_SETTING.getKey(), data().getAbsolutePath())
            .build());
      }
    
      @Bean
      File home() throws IOException {
        return Files.createTempDirectory("elasticsearch-home-").toFile();
      }
    
      @Bean
      File data() throws IOException {
        return Files.createTempDirectory("elasticsearch-data-").toFile();
      }
    	
      @PreDestroy
      void destroy() throws IOException {
        FileSystemUtils.deleteRecursively(home());
        FileSystemUtils.deleteRecursively(data());
      }
    }

    尽管此代码段基于出色的Spring框架 ,但该想法非常简单,可以在任何基于JVM的应用程序中使用。 话虽如此,但请注意并重新考虑长期解决方案,而无需嵌入Elasticsearch

    作为容器运行

    诸如DockerCoreOS之类的工具的兴起以及容器的巨大普及以及基于容器的部署大大改变了我们对基础架构的看法,在许多情况下,也改变了我们的开发方法。

    换句话说,无需下载Elasticsearch并使用shell脚本或批处理文件运行它。 一切都是容器,可以使用单个docker命令将其拉出,配置和运行(很幸运,这里有一个官方的Elasticseach Dockerhub存储库 )。

    假设您的机器上已安装Docker ,让我们依靠默认配置运行单个Elasticsearch实例:

    docker run -d -p 9200:9200 -p 9300:9300 elasticsearch:5.2.0

    旋转Elasticsearch集群比使用shell脚本手动完成要复杂一些,但肯定要容易得多。 总的来说, Elasticsearch集群需要多播支持才能使节点彼此自动发现,但是不幸的是,使用Docker,您将需要退回到单播发现 (除非您已订阅以解锁商业功能 )。

    docker run -d -p 9200:9200 -p 9300:9300 --name es1 elasticsearch:5.2.0 -E cluster.name=es-catalog -E node.name=es1 -E transport.host=0.0.0.0
    docker run -d --name es2 --link=es1 elasticsearch:5.2.0 -E cluster.name=es-catalog -E node.name=es2 -E transport.host=0.0.0.0 -E discovery.zen.ping.unicast.hosts=es1
    docker run -d --name es3 --link=es1 elasticsearch:5.2.0 -E cluster.name=es-catalog -E node.name=es3 -E transport.host=0.0.0.0 -E discovery.zen.ping.unicast.hosts=es1

    启动容器后,应创建三个Elasticsearch节点的集群,并可以从http://localhost:9200访问主节点(如果支持本机Docker )。 如果由于某些原因您仍在Docker Machine上 (甚至是较旧的boot2docker ),则主节点将分别在http://<docker-machine-ip>:9200处公开。

    如果您正在积极使用Docker Compose ,那么某些限制将使您的生活变得复杂。 目前, Elasticsearch映像需要将一些参数传递到入口点(在命令行末尾看到的所有内容都是-E选项),但是Docker Compose还不支持这种功能(尽管您可以将自己的映像构建为解决方法)。

    在本教程中,我们将仅使用从Docker容器开始的Elasticsearch ,希望这是您早已采用的方法。

    4. Elasticsearch适合的地方

    搜索是Elasticsearch的关键功能之一,并且做得非常好。 但是, Elasticsearch不仅限于搜索,还提供了丰富的分析功能,其形状被称为聚合框架 ,该框架基于搜索查询进行数据聚合。 万一您需要对数据进行一些分析, Elasticsearch在这里也非常适合。

    尽管可能不会立即显现出来,但Elasticsearch可用于管理时间序列数据 (例如,指标,股票价格),甚至可以反向搜索图像 。 关于Elasticsearch的误解之一是它可以用作数据存储。 从某种程度上讲,它确实存储了数据,但是它没有提供与典型数据存储相同的保证。

    5.结论

    尽管我们在这里谈论了很多事情,但是Elasticsearch的大量有趣细节和有用功能还没有被涵盖。 我们的重点一直放在事物的开发方面,因此,重点一直放在理解Elasticsearch的基础上并Swift开始。 希望您已经感到兴奋和兴奋,可以马上开始阅读官方文档参考 ,因为还有更多有趣的话题正在讨论中。

    6.接下来

    在下一部分中,我们将通过探索和使用Elasticsearch公开的无数RESTful API (仅使用命令行和出色的curl / http工具进行武装)来从讨论进入操作。

    这篇文章的源代码可以在这里下载。

    翻译自: https://www.javacodegeeks.com/2017/02/elasticsearch-java-developers-introduction.html

    展开全文
  • ElasticSearch 是 Web 开发中最重要的一个分布式系统基础,在本场 Chat 中,你将会看到如下的内容: 什么是 ElasticSearch ElasticSearch 查询 ElasticSearch 索引 Java 操作 ES 总结 当前内容版权归码字科技所有...
  • Python西班牙协会网站 该网站是使用Python编写的静态网站生成器生成的。 内容是用编写的,位于文件夹中。 您不需要技术知识就可以将新内容添加到Web或编辑现有内容。 阅读我们的以了解如何从浏览器中提出更改建议...
  • viade_es2b:Viade ES2B-源码

    2021-05-06 03:22:20
    有关我们如何组织自己的更多信息,请 (西班牙语)。 部署方式 GitHub页面 该应用程序已部署在GitHubPages中,可以通过此进行访问。 负责部署的分支机构是 。 码头工人 如您所见,我们的应用程序可以部署在docker中...
  • 距一月份仅两个星期,我们已经收到 100份 ElasticCC (Elastic Community Conference)演示文稿,其中20份在 APJ(亚太/日本)中,近40份在 EMEA(欧洲/中东/非洲)和 NASA(北/南美洲)。这是一个了不起的开始,我们...

    Wow!进入一月份仅两个星期,我们已经收到 100份 ElasticCC (Elastic Community Conference) 演示文稿,其中20份在 APJ(亚太/日本)中,近40份在 EMEA(欧洲/中东/非洲)和 NASA(北/南美洲)。这是一个了不起的开始,我们还有更多的空间。由于我们知道假期后开始工作的艰辛,因此我们将征稿(CfP)延长至1月22日(星期五)UTC 23:59。因此,如果您一直想提交演讲,但又找不到时间,那么现在就有机会参加这个有趣的活动:https://sessionize.com/elastic-community-conference-2021/
     

    如果这是您第一次了解 ElasticCC,请快速浏览。简而言之,这是来自社区针对社区的免费技术会议。它对开发人员,从业人员,客户和合作伙伴开放-我们期待与大家进行交流!线上会议将于2月26日星期五下午在 EMEA 举行,并将持续至2月27日在 APJ 举行,这使其成为全球性活动。

    立即回复,以确保您不会错过任何精彩的会议。就像我们在公告中所说的那样,我们正在审核和接受正在进行的讨论。这意味着我们已经接受了一些会议,可以让您窥视即将展示的内容!
     

    安全第一

    对于我们的安全人群,我们进行了涉及各种主题的讨论。如果您的 SOC 比部门更像是“party of 1”,那么您可能会对使用 Elastic 解决小型企业安全性问题感兴趣。如果您像我一样热爱开源,则应该查看Elastic + TheHive:一个开源梦想。而且,如果您想了解其他人如何使用 Elastic Security,请观看Elastic Security(SIEM)进行网络/资产建模

    丰富多彩

    我喜欢 Elastic 社区的一件事是那里有多少个独特的用例。从诸如根据 Elasticsearch 中的流行度和用户行为来增强音乐搜索结果的应用案例到诸如处理关键医疗系统中的系统故障之类的关键案例,Elasticsearch 都可以进行任何调整。如果您喜欢学习最大限度地利用 Elastic Stack 的新方法,则需要参加这类会议Effortless Kibana :不到5分钟从 CSV 到 仪表板!和 Elasticsearch&GraphQL:一封情书。最后,我们的会议将展示如何使用 Elastic 来帮助您的日常(非工作)生活,例如使用Elastic机器学习功能管理1型糖尿病

    房子里的 Elasticians

    像您一样,Elasticians 也是社区成员,他们也有很多共同点。从 Elastic Support 团队,您可以了解有关像支持工程师一样对你的 Elasticsearch 集群进行故障排除的信息,即使我们希望您不需要它。我们的工程团队将带您深入研究新的 Elastic 数据流命名方案

    我们都讲 Elastic

    Elastic 社区是全球性的,因此,ElasticCC 包含英语以外的语言对我们很重要。在西班牙语中,您可以了解 Elasticsearch 和 Elastic Enterprise Search(Enterprise Search con Elasticsearch),或切换语言和解决方案,并以葡萄牙语学习 Elastic Observability(Introdução à observabilidade com o Elastic Stack)。如果您喜欢中文,请查看 PB 级 Elasticsearch 集群(PB 级扩展 Elasticsearch 运维与调优实践)的操作和调优,以及基于 Kubernetes 和 Docker 的 Elasticsearch 容器化的实现(基于kubernetes与Docker的Elasticsearch容器化编排部署的实践与应用)。另外,还使用韩语中的 shell 脚本(Shell Script 로 elasticsearch 운영 자동화 하기)自动执行 Elasticsearch 操作。我们几乎忘了提到比萨吗?还将举行有关在 Elasticsearch 中索引🍕表情符号以查找法式比萨饼的法语会议(Indexer des Emoji🍕dans Elasticsearch pour trouver des pizzas)。

    这不是一场没有 Swag 的社区活动

    虽然在此社区活动中我们没有实际的🍕,但要赢得贴纸和 Swag 还是会有一些特殊的挑战。因此,请准备好测试您的 Elastic 技能,并在笔记本电脑上保留一些新装饰的位置。 Elastic Community Conference 指日可待,因此这里有一个快速提醒:

    到时候见!

     

    译文:https://www.elastic.co/blog/elastic-community-conference-updates-cfp-extended-to-january-22

    展开全文
  • CursoSpringBoot-源码

    2021-02-08 12:51:31
    CursoSpringBoot ... Docker Pro插件插件中的Abordando acriaçãode um projeto,executandorequisições,segurança,excçes,métricas,monitoramento,banco de dados和geraçãode imagem。
  • Linux【第一篇总结】

    2021-08-31 19:53:47
    文章目录一、入门概述二、环境搭建三、走近Linux系统四、常用的基本命令4.1、目录管理4.2、基本属性4.3、文件内容查看4.4、Vim编辑器4.5、账号...Tomcat安装5.3、Docker(yum安装)5.4、宝塔面板(懒人式安装)六、扩展...

    一、入门概述

    我们为什么要学习Linux

    linux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板。就如同在国内再搞一个社交软件取代腾讯一样,想想而已基本不可能,因为用户已经习惯于使用微信交流,不是说技术上实现不了解而是老百姓已经习惯了,想让他们不用,即使他们自己不用亲戚朋友还是要用,没有办法的事情。

    用习惯了windows操作系统,再让大家切换到别的操作系统基本上是不可能的事情,改变一个人已经养成的习惯太难。没有办法深入到普通老百姓的生活中,并不意味着linux就没有用武之地了。在服务器端,在开发领域linux倒是越来越受欢迎,很多程序员都觉得不懂点linux都觉得不好意思,linux在开源社区的地位依然岿然不动。

    尤其是作为一个后端程序员,是必须要掌握Linux的,因为这都成为了你找工作的基础门槛了,所以不得不学习!

    Linux 简介

    Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

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

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

    Linux 发行版

    Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。

    Kali linux:安全渗透测试使用!(有兴趣做安全的同学可以了解一下!)

    目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

    Linux 应用领域

    今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL +PHP)组合。

    目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。

    • 巴西联邦政府由于支持 Linux 而世界闻名。

    • 有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果。

    • 印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux。

    • 中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux。

    • 在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。

    • 葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件。

    • 法国和德国同样开始逐步采用 Linux。

    Linux vs Windows

    二、环境搭建

    Linux 的安装,安装步骤比较繁琐(操作系统本身也是一个软件),现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用用!

    安装CentOS (在本地安装,这个不太建议,如果没有经济来源的话,可以考虑在本地搭建)

    Linux是一个操作系统,你也可以把自己电脑安装成双系统!

    虚拟机(VMware下载(收费的,注册码!):360一键安装(推荐,小白分分钟安装成功!)!)

    官网下载:

    安装完成后打开软件有如下界面:

    在虚拟机上安装CentOS7

    1、可以通过镜像进行安装! 下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/,下载完成后安装即可!安装操作系统和安装软件是一样的,注意:Linux磁盘分区的时候需要注意分区名即可!/boot /home!

    2、可以使用我已经制作好的镜像!(狂神制作好的一个自己的镜像!)使用百度云链接下载即可!

    链接:https://pan.baidu.com/s/1e0YEzN3BW0DDXFtMscvvVA 
    提取码:716m 
    复制这段内容后打开百度网盘手机App,操作更方便哦
    

    3、安装 VMware 虚拟机软件,然后打开我们的镜像即可使用!

    打开后的样子:

    VMware的使用方式:

    点击屏幕进入虚拟机、Ctrl + Alt 将聚焦退出虚拟机!

    开机后的页面:

    默认的用户是:kuangshen 密码是 123456

    root用户:root-123456

    大家下载完毕后,可以安装系统,然后根据我们的账号密码,来自己测试登录!

    那我们的本地Linux环境就准备好了!

    购买云服务器(有经济来源的话,可以购买阿里云服务器,因为这才是最近接公司中原生环境的!)

    云服务器就是一个远程电脑,服务器一般不会关机!

    虚拟机安装后占用空间,也会有些卡顿,我们作为程序员其实可以选择购买一台自己的服务器,这样的话更加接近真实线上工作;

    1、阿里云购买服务器:https://www.aliyun.com/minisite/goods?userCode=0phtycgr

    2、购买完毕后,获取服务器的ip地址,重置服务器密码,就可以远程登录了

    • 获取公网IP地址!
    • 修改自己的登录密码

    • 关于安全组的说明: (在阿里云这个很重要,自己需要开放什么端口来这里配置就好啦,我们在后面安装环境的时候会再次说明)

    3、下载 xShell 远程连接工具22,进行远程连接使用!建议使用360一键下载!还需要下载一个 xFtp 文件上传21!

    下载完毕后,直接打开即可!

    4、使用Xshell连接远程服务器!~

    登录用户名和密码之后,登录成功就是如下界面:

    这里就是我们的Linux操作系统了!以后的操作都在这里操作,项目也在这里进行发布!

    Ctrl + 鼠标滚轮,放大和缩小字体!

    上传文件使用xftp即可!

    Tomcat 需要 Java环境!我们后会按照JDK,到时候再测试吧,先学基本的Linux命令为主!

    远程环境安装!

    注意事项:

    如果要打开端口,需要在阿里云的安全组面板中开启对应的出入规则,不然的话会被阿里拦截!

    如果前期不好操作,可以推荐安装宝塔面板,傻瓜式管理服务器

    安装教程:https://www.bt.cn/bbs/thread-19376-1-1.html

    1、开启对应的端口

    2、一键安装

    3、安装完毕后会得到远程面板的地址,账号,密码,就可以登录了

    4、登录之后就可以可视化的安装环境和部署网站!

    关于域名

    如果自己的网站想要上线,就一定要购买一个域名然后进行备案;

    备案的话需要一些认证和时间,备完完毕后,就可以解析到自己的网站了,这个时候就可以使用域名来进行服务器的访问!

    三、走近Linux系统

    开机登录

    开机会启动许多程序。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。

    开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,密码是不显示的,输完回车即可!

    一般来说,用户的登录方式有三种:

    • 命令行登录
    • ssh登录
    • 图形界面登录

    最高权限账户为 root,可以操作一切!

    关机

    在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

    关机指令为:shutdown ;

    sync # 将数据由内存同步到硬盘中。 
    shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机: 
    shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机 
    shutdown –h now # 立马关机 
    shutdown –h 20:25 # 系统会在今天20:25关机 
    shutdown –h +10 # 十分钟后关机 
    shutdown –r now # 系统立马重启 
    shutdown –r +10 # 系统十分钟后重启 
    reboot # 就是重启,等同于 shutdown –r now 
    halt # 关闭系统,等同于shutdown –h now 和 poweroff
    

    最后总结一下,不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。

    系统目录结构

    1、一切皆文件

    2、根目录 / ,所有的文件都挂载在这个节点下

    登录系统后,在当前命令窗口下输入命令:

    ls/
    

    你会看到如下图所示:

    树状目录结构:

    以下是对这些目录的解释:

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

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

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

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

    • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

    • /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 fifiles目录。

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

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

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

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

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

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

    四、常用的基本命令

    4.1、目录管理

    绝对路径、相对路径

    绝对路径路径的全称:C:\ProgramData\360safe\xxx.xx

    比如说 360safe 目录下,那这个 xxx.xx 文件,对应我们的相对配置就 /xxx.xx

    cd : 切换目录命令!

    ./ : 当前目录

    cd … : 返回上一级目录

    ls (列出目录!)

    在Linux中 ls 可能是最常常被使用的 !

    -a参数:all ,查看全部的文件,包括隐藏文件

    -l 参数 列出所有的文件,包含文件的属性和权限,没有隐藏文件

    所有Linux可以组合使用!

    cd 命令 切换目录

    cd 目录名(绝对路径都是以 / 开头,相对路径,对于当前目录该如何寻找 …/…/)

    pwd 显示当前用户所在的目录!

    [root@kuangshen ~]# pwd 
    /root 
    [root@kuangshen ~]# cd /bin 
    [root@kuangshen bin]# pwd 
    /bin 
    [root@kuangshen bin]# cd /usr/local 
    [root@kuangshen local]# pwd 
    /usr/local
    

    mkdir 创建一个目录

    [root@kuangshen home]# mkdir test1 # 创建目录
    [root@kuangshen home]# ls
    install.sh kuangshen kuangstudy test1 www 
    [root@kuangshen home]# cd test1 
    [root@kuangshen test1]# cd .. 
    [root@kuangshen home]# mkdir test2/test3/test4 # 创建多级目录 
    mkdir: cannot create directory ‘test2/test3/test4’: No such file or directory [root@kuangshen home]# mkdir -p test2/test3/test4 
    [root@kuangshen home]# ls 
    install.sh kuangshen kuangstudy test1 test2 www 
    [root@kuangshen home]# cd test2 
    [root@kuangshen test2]# ls 
    test3 
    [root@kuangshen test2]# cd test3 
    [root@kuangshen test3]# ls 
    test4
    

    rmdir 删除目录

    [root@kuangshen test3]# cd /home 
    [root@kuangshen home]# ls 
    install.sh kuangshen kuangstudy test1 test2 www
    [root@kuangshen home]# rmdir test1 
    [root@kuangshen home]# ls 
    install.sh kuangshen kuangstudy test2 www 
    [root@kuangshen home]# rmdir test2 
    rmdir: failed to remove ‘test2’: Directory not empty 
    [root@kuangshen home]# rmdir -p test2 
    rmdir: failed to remove ‘test2’: Directory not empty 
    [root@kuangshen home]# rmdir -p test2/test3/test4 
    [root@kuangshen home]# mkdir -p test2/test3/test4 
    [root@kuangshen home]# rmdir test2/test3/test4 
    [root@kuangshen home]# ls 
    install.sh kuangshen kuangstudy test2 www 
    [root@kuangshen home]# mkdir -p test2/test3/test4 
    [root@kuangshen home]# ls 
    install.sh kuangshen kuangstudy test2 www 
    [root@kuangshen home]# rmdir -p test2/test3/test4 
    [root@kuangshen home]# ls 
    install.sh kuangshen kuangstudy www
    

    rmdir 仅能删除空的目录,如果下面存在文件,需要先删除文件,递归删除多个目录 -p 参数即可

    cp (复制文件或者目录)

    cp 原来的地方 新的地方!

    [root@kuangshen home]# cp install.sh kuangstudy # 拷贝文件至目录 
    [root@kuangshen home]# ls 
    install.sh kuangshen kuangstudy www 
    [root@kuangshen home]# cd kuangstudy/ 
    [root@kuangshen kuangstudy]# ls 
    install.sh 
    [root@kuangshen kuangstudy]# cd .. 
    [root@kuangshen home]# cp install.sh kuangstudy # 如果文件重复,就选则覆盖(y)或者 放弃(n)
    cp: overwrite ‘kuangstudy/install.sh’? y
    

    rm (移除文件或者目录!)

    -f 忽略不存在的文件,不会出现警告,强制删除!

    -r 递归删除目录!

    -i 互动,删除询问是否删除

    rm -rf / # 系统中所有的文件就被删除了,删库跑路就是这么操作的!
    
    [root@kuangshen kuangstudy]# ls 
    install.sh 
    [root@kuangshen kuangstudy]# rm -rf install.sh 
    [root@kuangshen kuangstudy]# ls
    

    mv 移动文件或者目录!重命名文件

    -f 强制

    -u 只替换已经更新过的文件

    [root@kuangshen home]# ls 
    install.sh kuangshen kuangstudy www 
    [root@kuangshen home]# mv install.sh kuangstudy/ # 移动文件 
    [root@kuangshen home]# ls 
    kuangshen kuangstudy www 
    [root@kuangshen home]# cd kuangstudy/ 
    [root@kuangshen kuangstudy]# ls 
    install.sh 
    [root@kuangshen kuangstudy]# cd .. 
    [root@kuangshen home]# ls 
    kuangshen kuangstudy www 
    [root@kuangshen home]# mv kuangstudy kuangstudy2 # 重命名文件夹! 
    [root@kuangshen home]# ls 
    kuangshen kuangstudy2 www
    

    4.2、基本属性

    十个字母 ;1 类型

    看懂文件属性 root kuangshen

    Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

    在Linux中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:

    实例中,boot文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。

    在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:

    • 当为[ d ]则是目录
    • 当为[ - ]则是文件;
    • 若是[ l ]则表示为链接文档 ( link fifile );
    • 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
    • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。

    接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。

    其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。

    要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

    每个文件的属性由左边第一部分的10个字符来确定(如下图):

    从左至右用0-9这些数字来表示。

    第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。

    其中:

    第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;

    第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;

    第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。

    对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。

    同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。

    文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。

    因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

    在以上实例中,boot 文件是一个目录文件,属主和属组都为 root。

    修改文件属性

    1、chgrp:更改文件属组

    chgrp [-R] 属组名 文件名
    

    -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

    2、chown:更改文件属主,也可以同时更改文件属组

    chown [–R] 属主名 文件名 
    chown [-R] 属主名:属组名 文件名
    

    3、chmod:更改文件9个属性(必须要掌握)

    你没有权限操作此文件!

    chmod [-R] xyz 文件或目录
    

    Linux文件属性有两种设置方法,一种是数字(常用的是数字),一种是符号。

    Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

    先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

    r:4   w:2   x:1 
    可读可写不可执行   rw-   6 
    可读可写不课执行   rwx   7 
    chomd  777  文件赋予所有用户可读可执行!
    

    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx—]分数则是:

    • owner = rwx = 4+2+1 = 7
    • group = rwx = 4+2+1 = 7
    • others= — = 0+0+0 = 0
    chmod 770 filename
    

    可以自己下去多进行测试!

    4.3、文件内容查看

    我们会经常使用到文件查看!

    Linux系统中使用以下命令来查看文件的内容:

    • cat 由第一行开始显示文件内容,用来读文章,或者读取配置文件啊,都使用cat名

    • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!

    • nl 显示的时候,顺道输出行号! 看代码的时候,希望显示行号! 常用

    • more 一页一页的显示文件内容,带余下内容的(空格代表翻页,enter 代表向下看一行, :f 行号)

    • less 与 more 类似,但是比 more 更好的是,他可以往前翻页! (空格下翻页,pageDown,pageUp键代表翻动页面!退出 q 命令,查找字符串 /要查询的字符向下查询,向上查询使用?要查询的字符串,n 继续搜寻下一个,N 上寻找!)

    • head 只看头几行 通过 -n 参数来控制显示几行!

    • tail 只看尾巴几行 -n 参数 要查看几行!

    你可以使用 *man [命令]*来查看各个命令的使用文档,如 :man cp。

    网络配置目录: cd /etc/sysconfig/network-scripts

    ifconfifig 命令查看网络配置!

    拓展:Linux 链接的概念(了解即可!)

    Linux的链接分为两种:硬链接、软链接!

    **硬链接:**A—B,假设B是A的硬链接,那么他们两个指向了同一个文件!允许一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删!

    软链接: 类似Window下的快捷方式,删除的源文件,快捷方式也访问不了!

    创建连接 ln 命令!

    touch 命令创建文件!

    echo 输入字符串,也可以输入到文件中!

    [root@kuangshen home]# touch f1 #创建一个f1文件
    [ root@kuangshen home] # 1s
    f1 instal1.sh kuangshen www
    [root@kuangshen home]# 1n f1 f2 #创建一个硬链接f2
    [root@kuangshen home]# 1s
    f1 f2 instal1.sh kuangshen www
    [root@kuangshen home]# 1n -S f1 f3 #创建一个软链接(符号连接) f3
    [root@kuangshen home]# 1s
    f1 f2 f3 instal1. sh kuangshen www
    [root@kuangshen home]# 11
    tota128
    -rw-r--r-- 2 root root 0 Mar 24 20:17 f1
    -rW-r--r-- 2 root root 0 Mar 24 20:17 f2
    1 rwxrwxrwx 1 root root 2 Mar 24 20:18 f3 -> f1
    - rw-r--r-- 1 root root 20078 Mar 4 16:48 instal1.sh
    drwxr-xr-x 2 root root 4096 Mar 23 21:25 kuangshen
    drwxrw---X 2 www www 4096 Mar 23 12:46 www
    [ root@kuangshen home]# echo "i 1ove kuangshen" >>f1 #给f1文件中写入-些字符串!
    [root@kuangshen home]# 1s
    f1 f2 f3 instal1.sh kuangshen www
    [root@kuangshen home]# clear
    [root@kuangshen home]# ll
    total 36
    -rw-r--r-- 2 root root 17 Mar 24 20:19 f1
    -rw-r--r-- 2 root root 17 Mar 24 20:19 f2
    1 rwx rwxrwx 1 root root  2 Mar 24 20:18 f3 -> f1
    -rw-r--r-- 1 root root 20078 Mar 4 16:48 instal1. sh
    drwxr-xr-x 2 root root 4096 Mar 23 21:25 kuangshen
    drwxrw---x 2 www www 4096 Mar 23 12:46 www
    [root@kuangshen home]# cat f1 # 査看f1
    i love kuangshen
    [root@kuangshen home]# cat f2 #査看f2
    i love kuangshen
    [root@kuangshen home]# cat f3 #査看f3
    i love kuangshen
    

    删除f1之后,查看f2 和 f3 的区别

    [root@kuangshen home]# rm -rf f1
    [root@kuangshen home]# 1s
    f2 f3 insta11. sh kuangshen www
    [ root@kuangshen home]# cat f2 # f2硬链接还在
    i 1 ove kuangshen
    [root@kuangshen home]# cat f3 # f3 (软连接、符号连接)快捷方式失效!
    cat: f3: No such file or di rectory
    

    4.4、Vim编辑器

    什么是Vim编辑器

    vim 通过一些插件可以实现和IDE一样的功能!

    Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。尤其是Linux中,必须要会使用Vim(查看内容,编辑内容,保存内容!)

    简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。

    vim 则可以说是程序开发者的一项很好用的工具。

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。

    连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

    vim 键盘图:

    三种使用模式

    基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。这三种模式的作用分别是:

    命令模式:

    用户刚刚启动 vi/vim,便进入了命令模式。

    此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

    以下是常用的几个命令:

    • i 切换到输入模式,以输入字符。

    • x 删除当前光标所在处的字符。

    • : 切换到底线命令模式,以在最底一行输入命令。 如果是编辑模式,需要先退出编辑模式!ESC

    若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

    命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

    输入模式:

    在命令模式下按下i就进入了输入模式。

    在输入模式中,可以使用以下按键:

    • 字符按键以及Shift组合,输入字符

    • ENTER,回车键,换行

    • BACK SPACE,退格键,删除光标前一个字符

    • DEL,删除键,删除光标后一个字符

    • 方向键,在文本中移动光标

    • HOME/END,移动光标到行首/行尾

    • Page Up/Page Down,上/下翻页

    • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线

    • ESC,退出输入模式,切换到命令模式

    底线命令模式

    在命令模式下按下:(英文冒号)就进入了底线命令模式。光标就移动到了最底下,就可以在这里输入一些底线命令了!

    底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

    在底线命令模式中,基本的命令有(已经省略了冒号):wq

    • q 退出程序

    • w 保存文件

    按ESC键可随时退出底线命令模式。

    简单的说,我们可以将这三个模式想成底下的图标来表示:

    完整的演示说明

    新建或者编辑文件,按 i 进入编辑模式,编写内容,编写完成后退出编辑模式,esc,退出之后进入底线命令模式 : wq 保存退出!

    Vim 按键说明

    除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用。

    第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

    第二部分:一般模式切换到编辑模式的可用的按钮说明

    第三部分:一般模式切换到指令行模式的可用的按钮说明

    以上标红的掌握熟练即可,其与的了解或者自己测一测即可,我们平时使用VIM 最多的就是修改下文件内容而已!

    4.5、账号管理

    你一般在公司中,用的应该都不是 root 账户!

    简介

    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

    用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

    每个用户账号都拥有一个唯一的用户名和各自的口令。

    用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

    实现用户账号的管理,要完成的工作主要有如下几个方面:

    • 用户账号的添加、删除与修改。

    • 用户口令的管理。

    • 用户组的管理。

    用户账号的管理

    用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

    添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。

    属主,属组

    useradd 命令 添加用户

    useradd -选项 用户名

    -m: 自动创建这个用户的主目录 /home/qinjiang

    -G : 给用户分配组!

    [root@kuangshen home]# useradd -m qinjiang 创建一个用户! 
    [root@kuangshen home]# ls 
    install.sh kuangshen qinjiang www
    

    理解一下本质:Linux中一切皆文件,这里的添加用户说白了就是往某一个文件中写入用户的信息了!/etc/passwd

    删除用户 userdel

    userdel -r qinjiang 删除用户的时候将他的目录页一并删掉!

    [root@kuangshen home]# userdel -r qinjiang 
    [root@kuangshen home]# ls 
    install.sh kuangshen www
    

    修改用户 usermod

    修改用户 usermod 对应修改的内容 修改那个用户

    [root@kuangshen home]# usermod -d /home/233 qinjiang
    

    修改完毕之后查看配置文件即可!

    切换用户!

    root用户

    1.切换用户的命令为:su username 【username是你的用户名哦】

    2.从普通用户切换到root用户,还可以使用命令:sudo su

    3.在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令

    4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root】

    $表示普通用户

    #表示超级用户,也就是root用户

    有的小伙伴在阿里云买完服务器后,主机名是一个随机字符串!

    用户的密码设置问题!

    我们一般通过root创建用户的时候!要配置密码!

    Linux上输入密码是不会显示的,你正常输入就可以了,并不是系统的问题!

    在公司中,你们一般拿不到公司服务器的 root 权限,都是一些分配的账号!

    如果是超级用户的话:

    passwd username: 
    new password: 
    re password:
    

    如果是普通用户:

    passwd 
    (current) UNIX password:
    new password: # 密码不能太过于简单! 
    re password:
    

    锁定账户!

    root,比如张三辞职了!冻结这个账号,一旦冻结,这个人就登录不上系统了!

    passwd -l qinjiang # 锁定之后这个用户就不能登录了! 
    passwd -d qinjiang # 没有密码也不能登录!
    

    在公司中,你一般触及不到 root 用户!作为一个开发一般你拿不到!

    这以上的基本命令,大家必须要掌握!但是自己玩的时候可以使用来学习!Linux是一个多用户的系统!

    4.6、用户组管理

    属主、属组

    每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root)。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

    用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

    创建一个用户组 groupadd

    创建完用户组后可以得到一个组的id,这个id是可以指定的! -g 520 , 若果不指定就是自增1

    删除用户组 groupdel

    修改用户组的权限信息和名字 groupmod -g -n

    用户如果要切换用户组怎么办呢?

    # 登录当前用户 qinjiang 
    $ newgrp root
    

    拓展:文件的查看!(了解即可)

    /etc/passwd

    用户名:口令(登录密码,我们不可见):用户标识号:组标识号:注释性描述:主目录:登录Shell
    

    这个文件中的每一行都代表这一个用户,我们可以从这里看出这个用户的主目录在那里,可以看到属于哪一个组!

    登录口令:把真正的加密后的用户口令字存放到/etc/shadow文件中,保证我们密码的安全性!

    用户组的所有信息都存放在/etc/group文件中。

    4.7、磁盘管理

    df (列出文件系统整体的磁盘使用量) du(检查磁盘空间使用量!)

    df!

    du!

    Mac 或者想使用Linux 挂载我们的一些本地磁盘或者文件!

    挂载:mount

    卸载:umount -f [挂载位置] 强制卸载

    除了这个之外,以后我们安装了JDK ,其实可以使用java中的一些命令来查看信息!

    4.8、进程管理

    Linux中一切皆文件

    (文件:读写执行(查看,创建,删除,移动,复制,编辑),权限(用户、用户组)。系统:(磁

    盘,进程))

    对于我们开发人员来说,其实Linux更多偏向于使用即可!

    基本概念!

    1、在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号!

    2、每一个进程呢,都会有一个父进程!

    3、进程可以有两种存在方式:前台!后台运行!

    4、一般的话服务都是后台运行的,基本的程序都是前台运行的!

    命令

    ps 查看当前系统中正在执行的各种进程的信息!

    ps -xx :

    • -a 显示当前终端运行的所有的进程信息(当前的进程一个)

    • -u 以用户的信息显示进程

    • -x 显示后台运行进程的参数!

    # ps -aux 查看所有的进程
    ps -aux|grep mysql 
    # | 在Linux这个叫做管道符 A|B 
    # grep 查找文件中符合条件的字符串!
    

    对于我们来说,这里目前只需要记住一个命令即可 ps -xx|grep 进程名字! 过滤进程信息!

    ps -ef:可以查看到父进程的信息

    ps -ef|grep mysql # 看父进程我们一般可以通过目录树结构来查看!
    
    # 进程树! 
    pstree -pu
    	-p 显示父id 
    	-u 显示用户组
    

    结束进程:杀掉进程,等价于window结束任务!

    kill -9 进程的id

    但是啊,我们平时写的一个Java代码死循环了,可以选择结束进程!杀进程

    kill -9 进程的id
    

    表示强制结束该进程!

    将Java程序打包发的时候讲解! nohup ,代表后台执行程序

    五、环境安装

    安装软件一般有三种方式:

    • rpm(Jdk:在线发布一个SringBoot项目!)

    • 解压缩(tomcat,启动并通过外网访问,发布网站)

    • yum在线安装(docker:直接安装运行跑起来docker就可以!)!

    5.1、JDK安装

    我们开发java程序必须要的环境!

    1、下载JDK rpm。去oralce 官网下载即可!

    2、安装java环境

    # 检测当前系统是否存在java环境! java -version
    # 如果有的话就需要卸载 
    # rpm -qa|grep jdk # 检测JDK版本信息 
    # rpm -e --nodeps jdk_ 
    
    # 卸载完毕后即可安装jdk 
    # rpm -ivk rpm包 
    
    # 配置环境变量!
    

    如果存在可以提前卸载:

    安装:

    配置环境变量: /etc/profile 在文件的最后面增加java的配置和 window安装环境变量一样!

    JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
    CLASSPATH=%JAVA_HOME%/lib;%JAVA_HOME%/jre/lib 
    PATH=$JAVA_HOME/bin;$JAVA_HOME/jre/bin 
    export PATH CLASSPATH JAVA_HOME
    

    让这个配置文件生效! source /etc/profile

    我们来发布一个项目试试!

    # 开启防火墙端口
    firewall-cmd --zone=public --add-port=9000/tcp --permanent 
    # 重启防火墙 
    systemctl restart firewalld.service
    # 查看所有开启的端口,如果是阿里云,需要配置安全组规则! 
    firewall-cmd --list-ports
    

    5.2、Tomcat安装

    ssm war 就需要放到tomcat 中运行!

    1、下载tomcat。官网下载即可 tomcat9 apache-tomcat-9.0.22.tar.gz

    2、解压这个文件

    tar -zxvf apache-tomcat-9.0.22.tar.gz
    

    3、启动tomcat测试! ./xxx.sh 脚本即可运行

    # 执行 ./startup.sh 
    # 停止 ./shotdown.sh
    

    如果防火墙8080 端口开了并且阿里云安全组也开放了这个时候就可以直接访问远程了!

    # 查看firewall服务状态 
    systemctl status firewalld 
    # 开启、重启、关闭、firewalld.service服务 
    # 开启 
    service firewalld start 
    # 重启 
    service firewalld restart 
    # 关闭 service firewalld stop 
    
    # 查看防火墙规则 
    firewall-cmd --list-all # 查看全部信息 
    firewall-cmd --list-ports # 只看端口信息 
    
    # 开启端口 
    开端口命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent 
    重启防火墙:systemctl restart firewalld.service 
    
    命令含义: 
    --zone #作用域 
    --add-port=80/tcp #添加端口,格式为:端口/通讯协议
    
    

    上传完毕的项目直接购买自己的域名,备案解析过去即可!1年级都会做!

    域名解析后,如果端口是80 - http 或者 443-https 可以直接访问,如果是 9000 8080,就需要通过Apcahe或者Nginx做一下反向代理即可,配置文件即可,十分之简单,大家如果想要上线自己的网站,到目前为止,那么你可以如愿以偿了!

    5.3、Docker(yum安装)

    联网的情况下 yum install -y yum源

    官网安装参考手册:https://docs.docker.com/install/linux/docker-ce/centos/

    我们现在是在Linu下执行,一定要联网 ,yum 在线安装!

    安装

    1、检测CentOS 7

    [root@kuangshen bin]# cat /etc/redhat-release
    CentOS Linux release 7.7.1908 (Core)
    

    2、安装我们的准备环境

    yum -y install 包名 # yum install 安装命令 -y 所有的提示都为 y 
    yum -y install gcc
    yum -y install gcc-c++
    

    3、清楚以前的版本!后面根据官网安装即可,

    5.4、宝塔面板(懒人式安装)

    具体的教程 https://www.bilibili.com/video/BV177411K7bH

    六、扩展:Vmware使用

    很多小伙伴,比较吝啬,买不起70一年的服务器 ! Vmware本地安装包!

    6.1、快照

    保留当前系统信息为快照,随时可以恢复,以防未来系统被你玩坏,就好比游戏中的归档!

    平时的话,我们每配置一个东西就可以拍摄一个快照,保留信息!

    6.2、本地网络配置

    大一学的计算机网络原理中有!

    需要保证 Linux虚拟机和本机处在同一个网段!

    windows

    Linux 也必须要配置到 对应的网段 192.168.0.110

    /etc/sysconfifig/network-scripts/

    桥接模式 : 192.168.0.110 192.168.0. 160

    一定要桥接到正确的网卡即可!

    静态的话就需要配置IP地址,IPADDR=192.168.0.110,以下是静态的网络配置,这两种方式,都可以让虚拟机连接外网从而实现网络开发!

    傻瓜式配置,只能在图形界面下有效!

    展开全文
  • Linux(笔记)

    万次阅读 2021-01-16 23:28:39
    西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。 葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh...

    开启端口时,宝塔面板和阿里云都要开启

    简介

    我们为什么要学习Linux

    linux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板。就如同在国内再搞一个社交软件取代腾讯一样,想想而已基本不可能,因为用户已经习惯于使用微信交流,不是说技术上实现不了解而是老百姓已经习惯了,想让他们不用,即使他们自己不用亲戚朋友还是要用,没有办法的事情。

    用习惯了windows操作系统,再让大家切换到别的操作系统基本上是不可能的事情,改变一个人已经养成的习惯太难。没有办法深入到普通老百姓的生活中,并不意味着linux就没有用武之地了。在服务器端,在开发领域linux倒是越来越受欢迎,很多程序员都觉得不懂点linux都觉得不好意思,linux在开源社区的地位依然岿然不动。

    尤其是作为一个后端程序员,是必须要掌握Linux的,因为这都成为了你找工作的基础门槛了,所以不得不学习!

    Linux 简介

    Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

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

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

    Linux 发行版

    Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。

    图片[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fmbSsOil-1610810834737)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

    目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

    图片[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D7qeSLyn-1610810834742)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

    Linux 应用领域

    今天各种场合都有使用各种 Linux 发行版,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合。

    目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。

    • 巴西联邦政府由于支持 Linux 而世界闻名。
    • 有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果。
    • 印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux。
    • 中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux。
    • 在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。
    • 葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件。
    • 法国和德国同样开始逐步采用 Linux。

    Linux vs Windows

    图片

    环境搭建

    Linux 的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用用!

    安装CentOS(虚拟机安装,耗资源)

    1、可以通过镜像进行安装!

    2、可以使用我已经制作好的镜像!视频中讲解了该种方式!

    3、安装 VMware 虚拟机软件,然后打开我们的镜像即可使用!

    购买云服务器(推荐)

    虚拟机安装后占用空间,也会有些卡顿,我们作为程序员其实可以选择购买一台自己的服务器,这样的话更加接近真实线上工作;

    1、阿里云购买服务器:https://www.aliyun.com/minisite/goods?userCode=0phtycgr

    2、购买完毕后,获取服务器的ip地址,重置服务器密码,就可以远程登录了

    3、下载 xShell 工具,进行远程连接使用!连接成功效果如下:

    图片

    注意事项:

    如果要打开端口,需要在阿里云的安全组面板中开启对应的出入规则,不然的话会被阿里拦截!

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mGTBlfA8-1610810834746)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116143409326.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EYWzErNf-1610810834746)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116143829213.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLaG6Itu-1610810834747)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116144807720.png)]

    如果前期不好操作,可以推荐安装宝塔面板,傻瓜式管理服务器

    安装教程:https://www.bt.cn/bbs/thread-19376-1-1.html

    1、开启对应的端口

    2、一键安装

    3、安装完毕后会得到远程面板的地址,账号,密码,就可以登录了

    4、登录之后就可以可视化的安装环境和部署网站!

    图片

    关于域名

    如果自己的网站想要上线,就一定要购买一个域名然后进行备案;

    备案的话需要一些认证和时间,备完完毕后,就可以解析到自己的网站了,这个时候就可以使用域名来进行服务器的访问!

    开机

    开机会启动许多程序。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。

    开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,密码是不显示的,输完回车即可!

    一般来说,用户的登录方式有三种:

    • 命令行登录
    • ssh登录
    • 图形界面登录

    最高权限账户为 root,可以操作一切!

    关机

    在linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

    关机指令为:shutdown ;

    sync # 将数据由内存同步到硬盘中。
    
    shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
    
    shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机
    
    shutdown –h now # 立马关机
    
    shutdown –h 20:25 # 系统会在今天20:25关机
    
    shutdown –h +10 # 十分钟后关机
    
    shutdown –r now # 系统立马重启
    
    shutdown –r +10 # 系统十分钟后重启
    
    reboot # 就是重启,等同于 shutdown –r now
    
    halt # 关闭系统,等同于shutdown –h now 和 poweroff
    

    最后总结一下,不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。

    系统目录结构

    登录系统后,在当前命令窗口下输入命令:

    ls /
    

    你会看到如下图所示:

    图片

    树状目录结构:(Linux的一切资源都挂载在这个 / 根节点下)

    图片

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hcyKnCGr-1610810834751)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

    以下是对这些目录的解释:

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

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

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

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

    • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

    • /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的目录结构为树状结构,最顶级的目录为根目录 /。

    其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。

    在开始本教程前我们需要先知道什么是绝对路径与相对路径。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-geTKFFCR-1610810834752)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116152230855.png)]

    绝对路径:

    路径的写法,由根目录 / 写起,例如:/usr/share/doc 这个目录。

    相对路径:

    路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成:cd …/man 这就是相对路径的写法啦!

    处理目录的常用命令

    接下来我们就来看几个常见的处理目录的命令吧:

    • ls: 列出目录
    • cd:切换目录
    • pwd:显示目前的目录
    • mkdir:创建一个新的目录
    • rmdir:删除一个空的目录
    • cp: 复制文件或目录
    • rm: 移除文件或目录
    • mv: 移动文件与目录,或修改文件与目录的名称

    你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。

    ls (列出目录)

    在Linux系统当中, ls 命令可能是最常被运行的。

    语法:

    [root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
    

    选项与参数:

    • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
    • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

    将目录下的所有文件列出来(含属性与隐藏档)

    [root@www ~]# ls -al
    

    cd (切换目录)

    cd是Change Directory的缩写,这是用来变换工作目录的命令。

    语法:

    cd [相对路径或绝对路径]
    

    测试:

    # 切换到用户目录下
    [root@kuangshen /]# cd home  
    
    # 使用 mkdir 命令创建 kuangstudy 目录
    [root@kuangshen home]# mkdir kuangstudy
    
    # 进入 kuangstudy 目录
    [root@kuangshen home]# cd kuangstudy
    
    # 回到上一级
    [root@kuangshen kuangstudy]# cd ..
    
    # 回到根目录
    [root@kuangshen kuangstudy]# cd /
    
    # 表示回到自己的家目录,亦即是 /root 这个目录
    [root@kuangshen kuangstudy]# cd ~
    

    接下来大家多操作几次应该就可以很好的理解 cd 命令的。

    pwd ( 显示目前所在的目录 )

    pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。

    [root@kuangshen kuangstudy]#pwd [-P]
    

    选项与参数:-P :显示出确实的路径,而非使用连接(link) 路径。

    测试:

    # 单纯显示出目前的工作目录
    [root@kuangshen ~]# pwd
    /root
    
    # 如果是链接,要显示真实地址,可以使用 -P参数
    [root@kuangshen /]# cd bin
    [root@kuangshen bin]# pwd -P
    /usr/bin
    

    mkdir (创建新目录)

    如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。

    mkdir [-mp] 目录名称
    

    选项与参数:

    • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
    • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

    测试:

    # 进入我们用户目录下
    [root@kuangshen /]# cd /home
    
    # 创建一个 test 文件夹
    [root@kuangshen home]# mkdir test
    
    # 创建多层级目录
    [root@kuangshen home]# mkdir test1/test2/test3/test4
    mkdir: cannot create directory ‘test1/test2/test3/test4’:
    No such file or directory  # <== 没办法直接创建此目录啊!
    
    # 加了这个 -p 的选项,可以自行帮你创建多层目录!
    [root@kuangshen home]# mkdir -p test1/test2/test3/test4
    
    # 创建权限为 rwx--x--x 的目录。
    [root@kuangshen home]# mkdir -m 711 test2
    [root@kuangshen home]# ls -l
    drwxr-xr-x 2 root root  4096 Mar 12 21:55 test
    drwxr-xr-x 3 root root  4096 Mar 12 21:56 test1
    drwx--x--x 2 root root  4096 Mar 12 21:58 test2
    

    rmdir ( 删除空的目录 )

    语法:

    rmdir [-p] 目录名称
    

    选项与参数:**-p :**连同上一级『空的』目录也一起删除

    测试:

    # 看看有多少目录存在?
    [root@kuangshen home]# ls -l
    drwxr-xr-x 2 root root  4096 Mar 12 21:55 test
    drwxr-xr-x 3 root root  4096 Mar 12 21:56 test1
    drwx--x--x 2 root root  4096 Mar 12 21:58 test2
    
    # 可直接删除掉,没问题
    [root@kuangshen home]# rmdir test
    
    # 因为尚有内容,所以无法删除!
    [root@kuangshen home]# rmdir test1
    rmdir: failed to remove ‘test1’: Directory not empty
    
    # 利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 依次删除。
    [root@kuangshen home]# rmdir -p test1/test2/test3/test4
    

    注意:这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录,后面我们会将!

    cp ( 复制文件或目录 )

    语法:

    [root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
    [root@www ~]# cp [options] source1 source2 source3 .... directory
    

    选项与参数:

    • **-a:**相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
    • **-p:**连同文件的属性一起复制过去,而非使用默认属性(备份常用);
    • **-d:**若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
    • **-r:**递归持续复制,用於目录的复制行为;(常用)
    • **-f:**为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
    • **-i:**若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
    • **-l:**进行硬式连结(hard link)的连结档创建,而非复制文件本身。
    • **-s:**复制成为符号连结档 (symbolic link),亦即『捷径』文件;
    • **-u:**若 destination 比 source 旧才升级 destination !

    测试:

    # 找一个有文件的目录,我这里找到 root目录
    [root@kuangshen home]# cd /root
    [root@kuangshen ~]# ls
    install.sh
    [root@kuangshen ~]# cd /home
    
    # 复制 root目录下的install.sh 到 home目录下
    [root@kuangshen home]# cp /root/install.sh /home
    [root@kuangshen home]# ls
    install.sh
    
    # 再次复制,加上-i参数,增加覆盖询问?
    [root@kuangshen home]# cp -i /root/install.sh /home
    cp: overwrite ‘/home/install.sh’? y # n不覆盖,y为覆盖
    

    rm ( 移除文件或目录 )

    语法:

    rm [-fir] 文件或目录
    

    选项与参数:

    • -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
    • -i :互动模式,在删除前会询问使用者是否动作
    • -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

    测试:

    # 将刚刚在 cp 的实例中创建的 install.sh删除掉!
    [root@kuangshen home]# rm -i install.sh
    rm: remove regular file ‘install.sh’? y
    # 如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!
    
    # 尽量不要在服务器上使用 rm -rf /
    

    mv ( 移动文件与目录,或修改名称 )

    语法:

    [root@www ~]# mv [-fiu] source destination
    [root@www ~]# mv [options] source1 source2 source3 .... directory
    

    选项与参数:

    • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
    • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
    • -u :若目标文件已经存在,且 source 比较新,才会升级 (update)

    测试:

    # 复制一个文件到当前目录
    [root@kuangshen home]# cp /root/install.sh /home
    
    # 创建一个文件夹 test
    [root@kuangshen home]# mkdir test
    
    # 将复制过来的文件移动到我们创建的目录,并查看
    [root@kuangshen home]# mv install.sh test
    [root@kuangshen home]# ls
    test
    [root@kuangshen home]# cd test
    [root@kuangshen test]# ls
    install.sh
    
    # 将文件夹重命名,然后再次查看!
    [root@kuangshen test]# cd ..
    [root@kuangshen home]# mv test mvtest
    [root@kuangshen home]# ls
    mvtest
    

    基本属性

    看懂文件属性

    Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

    在Linux中我们可以使用ll或者ls –l命令来显示一个文件的属性以及文件所属的用户和组,如:

    图片

    实例中,boot文件的第一个属性用"d"表示。"d"在Linux中代表该文件是一个目录文件。

    在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:

    • 当为[ d ]则是目录
    • 当为[ - ]则是文件;
    • 若是[ l ]则表示为链接文档 ( link file );
    • 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
    • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。

    接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。

    其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。

    要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

    每个文件的属性由左边第一部分的10个字符来确定(如下图):

    图片

    从左至右用0-9这些数字来表示。

    第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。

    其中:

    第1、4、7位表示读权限,如果用"r"字符表示,则有读权限,如果用"-"字符表示,则没有读权限;

    第2、5、8位表示写权限,如果用"w"字符表示,则有写权限,如果用"-"字符表示没有写权限;

    第3、6、9位表示可执行权限,如果用"x"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。

    对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。

    同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。

    文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。

    因此,Linux系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。

    在以上实例中,boot 文件是一个目录文件,属主和属组都为 root。

    修改文件属性

    chgrp:更改文件属组

    chgrp [-R] 属组名 文件名
    

    -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

    chown:更改文件属主,也可以同时更改文件属组

    chown [–R] 属主名 文件名
    chown [-R] 属主名:属组名 文件名
    

    chmod:更改文件9个属性

    chmod [-R] xyz 文件或目录
    

    Linux文件属性有两种设置方法,一种是数字,一种是符号。

    Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。

    先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

    r:4     w:2         x:1
    

    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx—] 分数则是:

    • owner = rwx = 4+2+1 = 7
    • group = rwx = 4+2+1 = 7
    • others= — = 0+0+0 = 0
    chmod 770 filename
    

    文件内容查看

    概述

    Linux系统中使用以下命令来查看文件的内容:

    • cat 由第一行开始显示文件内容
    • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
    • nl 显示的时候,顺道输出行号!
    • more 一页一页的显示文件内容
    • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
    • head 只看头几行
    • tail 只看尾巴几行

    你可以使用 *man [命令]*来查看各个命令的使用文档,如 :man cp。

    cat 由第一行开始显示文件内容

    语法:

    cat [-AbEnTv]
    

    选项与参数:

    • -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
    • -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
    • -E :将结尾的断行字节 $ 显示出来;
    • -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
    • -T :将 [tab] 按键以 ^I 显示出来;
    • -v :列出一些看不出来的特殊字符

    测试:

    # 查看网络配置: 文件地址 /etc/sysconfig/network-scripts/
    [root@kuangshen ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    

    tac

    tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:

    [root@kuangshen ~]# tac /etc/sysconfig/network-scripts/ifcfg-eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    DEVICE=eth0
    

    nl 显示行号

    语法:

    nl [-bnw] 文件
    

    选项与参数:

    • -b :指定行号指定的方式,主要有两种:-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);-b t :如果有空行,空的那一行不要列出行号(默认值);
    • -n :列出行号表示的方法,主要有三种:-n ln :行号在荧幕的最左方显示;-n rn :行号在自己栏位的最右方显示,且不加 0 ;-n rz :行号在自己栏位的最右方显示,且加 0 ;
    • -w :行号栏位的占用的位数。

    测试:

    [root@kuangshen ~]# nl /etc/sysconfig/network-scripts/ifcfg-eth0
    1DEVICE=eth0
    2BOOTPROTO=dhcp
    3ONBOOT=yes
    

    more 一页一页翻动

    在 more 这个程序的运行过程中,你有几个按键可以按的:

    • 空白键 (space):代表向下翻一页;
    • Enter :代表向下翻『一行』;
    • /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
    • :f :立刻显示出档名以及目前显示的行数;
    • q :代表立刻离开 more ,不再显示该文件内容。
    • b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
    [root@kuangshen etc]# more /etc/csh.login
    ....(中间省略)....
    --More--(28%) # 重点在这一行喔!你的光标也会在这里等待你的命令
    

    less 一页一页翻动(能上下)

    以下实例输出/etc/man.config文件的内容:

    less运行时可以输入的命令有:

    • 空白键 :向下翻动一页;
    • [pagedown]:向下翻动一页;
    • [pageup] :向上翻动一页;
    • /字串 :向下搜寻『字串』的功能;
    • ?字串 :向上搜寻『字串』的功能;
    • n :重复前一个搜寻 (与 / 或 ? 有关!)
    • N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
    • q :离开 less 这个程序;
    [root@kuangshen etc]# more /etc/csh.login
    ....(中间省略)....
    :   # 这里可以等待你输入命令!
    

    head 取出文件前面几行

    语法:

    head [-n number] 文件
    

    选项与参数:-n 后面接数字,代表显示几行的意思!

    默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:

    [root@kuangshen etc]# head -n 20 /etc/csh.login
    

    tail 取出文件后面几行

    语法:

    tail [-n number] 文件
    

    选项与参数:

    • -n :后面接数字,代表显示几行的意思

    默认的情况中,显示最后 10 行!若要显示最后 20 行,就得要这样:

    [root@kuangshen etc]# tail -n 20 /etc/csh.login
    

    链接(了解)

    Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。

    情况下,ln 命令产生硬链接。

    硬链接

    硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。

    硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

    软链接

    另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

    测试:

    [root@kuangshen /]# cd /home
    [root@kuangshen home]# touch f1 # 创建一个测试文件f1
    [root@kuangshen home]# ls
    f1
    [root@kuangshen home]# ln f1 f2     # 创建f1的一个硬连接文件f2
    [root@kuangshen home]# ln -s f1 f3   # 创建f1的一个符号连接文件f3
    [root@kuangshen home]# ls -li       # -i参数显示文件的inode节点信息
    397247 -rw-r--r-- 2 root root     0 Mar 13 00:50 f1
    397247 -rw-r--r-- 2 root root     0 Mar 13 00:50 f2
    397248 lrwxrwxrwx 1 root root     2 Mar 13 00:50 f3 -> f1
    

    从上面的结果中可以看出,硬连接文件 f2 与原文件 f1 的 inode 节点相同,均为 397247,然而符号连接文件的 inode 节点不同。

    # echo 字符串输出 >> f1 输出到 f1文件
    [root@kuangshen home]# echo "I am f1 file" >>f1
    [root@kuangshen home]# cat f1
    I am f1 file
    [root@kuangshen home]# cat f2
    I am f1 file
    [root@kuangshen home]# cat f3
    I am f1 file
    [root@kuangshen home]# rm -f f1
    [root@kuangshen home]# cat f2
    I am f1 file
    [root@kuangshen home]# cat f3
    cat: f3: No such file or directory
    

    通过上面的测试可以看出:当删除原始文件 f1 后,硬连接 f2 不受影响,但是符号连接 f1 文件无效;

    依此您可以做一些相关的测试,可以得到以下全部结论:

    • 删除符号连接f3,对f1,f2无影响;
    • 删除硬连接f2,对f1,f3也无影响;
    • 删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
    • 同时删除原文件f1,硬连接f2,整个文件会真正的被删除。

    后面的话,我们就开始学习Vim和用户磁盘相关的命令!从而修改配置!

    vim三种使用模式

    vim 键盘图:

    图片

    基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。这三种模式的作用分别是:

    命令模式

    用户刚刚启动 vi/vim,便进入了命令模式。

    此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

    以下是常用的几个命令:

    • i 切换到输入模式,以输入字符。
    • x 删除当前光标所在处的字符。
    • : 切换到底线命令模式,以在最底一行输入命令。

    若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

    命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

    输入模式

    在命令模式下按下i就进入了输入模式。

    在输入模式中,可以使用以下按键:

    • 字符按键以及Shift组合,输入字符
    • ENTER,回车键,换行
    • BACK SPACE,退格键,删除光标前一个字符
    • DEL,删除键,删除光标后一个字符
    • 方向键,在文本中移动光标
    • HOME/END,移动光标到行首/行尾
    • Page Up/Page Down,上/下翻页
    • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
    • ESC,退出输入模式,切换到命令模式

    底线命令模式

    在命令模式下按下:(英文冒号)就进入了底线命令模式。

    底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

    在底线命令模式中,基本的命令有(已经省略了冒号):

    • q 退出程序
    • w 保存文件

    按ESC键可随时退出底线命令模式。

    简单的说,我们可以将这三个模式想成底下的图标来表示:

    图片

    上手体验一下,在home目录下测试

    如果你想要使用 vi 来建立一个名为 kuangstudy.txt 的文件时,你可以这样做:

    [root@kuangshen home]# vim kuangstudy.txt
    

    注意:如果文件不存在会重新创建一个新的文件并且打开

    然后就会进入文件

    图片

    按下 i 进入输入模式(也称为编辑模式),开始编辑文字

    在一般模式之中,只要按下 i, o, a 等字符就可以进入输入模式了!

    在编辑模式当中,你可以发现在左下角状态栏中会出现 –INSERT- 的字样,那就是可以输入任意字符的提示。

    这个时候,键盘上除了 Esc 这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以你可以进行任何的编辑。

    图片

    按下 ESC 按钮回到一般模式

    好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下 Esc 这个按钮即可!马上你就会发现画面左下角的 – INSERT – 不见了!

    在一般模式中按下 :wq 储存后离开 vim!

    图片

    OK! 这样我们就成功创建了一个 kuangstudy.txt 的文件。

    Vim 按键说明

    除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以使用。

    第一部分:一般模式可用的光标移动、复制粘贴、搜索替换等

    移动光标的方法
    h 或 向左箭头键(←)光标向左移动一个字符
    j 或 向下箭头键(↓)光标向下移动一个字符
    k 或 向上箭头键(↑)光标向上移动一个字符
    l 或 向右箭头键(→)光标向右移动一个字符
    [Ctrl] + [f]屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
    [Ctrl] + [b]屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
    [Ctrl] + [d]屏幕『向下』移动半页
    [Ctrl] + [u]屏幕『向上』移动半页
    +光标移动到非空格符的下一行
    -光标移动到非空格符的上一行
    n< space>那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。
    0 或功能键[Home]这是数字『 0 』:移动到这一行的最前面字符处 (常用)
    $ 或功能键[End]移动到这一行的最后面字符处(常用)
    H光标移动到这个屏幕的最上方那一行的第一个字符
    M光标移动到这个屏幕的中央那一行的第一个字符
    L光标移动到这个屏幕的最下方那一行的第一个字符
    G移动到这个档案的最后一行(常用)
    nGn 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu)
    gg移动到这个档案的第一行,相当于 1G 啊!(常用)
    n< Enter>n 为数字。光标向下移动 n 行(常用)
    搜索替换
    /word向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可!(常用)
    ?word向光标之上寻找一个字符串名称为 word 的字符串。
    n这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串!
    N这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。
    删除、复制与粘贴
    x, X在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
    nxn 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。
    dd删除游标所在的那一整行(常用)
    nddn 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用)
    d1G删除光标所在到第一行的所有数据
    dG删除光标所在到最后一行的所有数据
    d$删除游标所在处,到该行的最后一个字符
    d0那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
    yy复制游标所在的那一行(常用)
    nyyn 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用)
    y1G复制游标所在行到第一行的所有数据
    yG复制游标所在行到最后一行的所有数据
    y0复制光标所在的那个字符到该行行首的所有数据
    y$复制光标所在的那个字符到该行行尾的所有数据
    p, Pp 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用)
    J将光标所在行与下一行的数据结合成同一行
    c重复删除多个数据,例如向下删除 10 行,[ 10cj ]
    u复原前一个动作。(常用)
    [Ctrl]+r重做上一个动作。(常用)

    第二部分:一般模式切换到编辑模式的可用的按钮说明

    进入输入或取代的编辑模式
    i, I进入输入模式(Insert mode):i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。(常用)
    a, A进入输入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用)
    o, O进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』;O 为在目前光标所在处的上一行输入新的一行!(常用)
    r, R进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用)
    [Esc]退出编辑模式,回到一般模式中(常用)

    第三部分:一般模式切换到指令行模式的可用的按钮说明

    指令行的储存、离开等指令
    :w将编辑的数据写入硬盘档案中(常用)
    :w!若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊!
    :q离开 vi (常用)
    :q!若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
    注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~
    :wq储存后离开,若为 :wq! 则为强制储存后离开 (常用)
    ZZ这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开!
    :w [filename]将编辑的数据储存成另一个档案(类似另存新档)
    :r [filename]在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面
    :n1,n2 w [filename]将 n1 到 n2 的内容储存成 filename 这个档案。
    :! command暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中看 /home 底下以 ls 输出的档案信息!
    :set nu显示行号,设定之后,会在每一行的前缀显示该行的行号
    :set nonu与 set nu 相反,为取消行号!

    账号管理

    简介

    Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

    用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

    每个用户账号都拥有一个唯一的用户名和各自的口令。

    用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

    实现用户账号的管理,要完成的工作主要有如下几个方面:

    • 用户账号的添加、删除与修改。
    • 用户口令的管理。
    • 用户组的管理。

    用户账号的管理

    用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

    添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。

    添加账号 useradd

    useradd 选项 用户名
    

    参数说明:

    • 选项 :

      • -c comment 指定一段注释性描述。
      • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
      • -g 用户组 指定用户所属的用户组。
      • -G 用户组,用户组 指定用户所属的附加组。
      • -m 使用者目录如不存在则自动建立。
      • -s Shell文件 指定用户的登录Shell。
      • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
    • 用户名 :

      • 指定新账号的登录名。

    测试:

    # 此命令创建了一个用户kuangshen,其中-m选项用来为登录名kuangshen产生一个主目录 /home/kuangshen
    [root@kuangshen home]# useradd -m kuangshen
    

    增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。

    切换用户

    1.切换用户的命令为:su username 【username是你的用户名哦】

    2.从普通用户切换到root用户,还可以使用命令:sudo su

    3.在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令

    4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root】

    $表示普通用户

    #表示超级用户,也就是root用户

    删除帐号

    如果一个用户的账号不再使用,可以从系统中删除。

    删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

    删除一个已有的用户账号使用userdel命令,其格式如下:

    userdel 选项 用户名
    

    常用的选项是 -r,它的作用是把用户的主目录一起删除。

    [root@kuangshen home]# userdel -r kuangshen
    

    此命令删除用户kuangshen在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

    修改帐号

    修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

    修改已有用户的信息使用usermod命令,其格式如下:

    usermod 选项 用户名
    

    常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

    例如:

    # usermod -s /bin/ksh -d /home/z –g developer kuangshen
    

    此命令将用户kuangshen的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q0c1Ei0h-1610810834762)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116192427223.png)]

    用户口令管理

    用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

    指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。

    命令的格式为:

    passwd 选项 用户名
    

    可使用的选项:

    • -l 锁定口令,即禁用账号。
    • -u 口令解锁。
    • -d 使账号无口令。
    • -f 强迫用户下次登录时修改口令。

    如果默认用户名,则修改当前用户的口令。

    例如,假设当前用户是kuangshen,则下面的命令修改该用户自己的口令:

    $ passwd
    Old password:******
    New password:*******
    Re-enter new password:*******
    

    如果是超级用户,可以用下列形式指定任何用户的口令:

    # passwd kuangshen
    New password:*******
    Re-enter new password:*******
    

    普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。

    为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。

    为用户指定空口令时,执行下列形式的命令:

    # passwd -d kuangshen
    

    此命令将用户 kuangshen的口令删除,这样用户 kuangshen下一次登录时,系统就不再允许该用户登录了。

    passwd 命令还可以用 -l(lock) 选项锁定某一用户,使其不能登录,例如:

    # passwd -l kuangshen
    

    用户组管理

    每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

    用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

    增加用户组

    使用groupadd命令

    groupadd 选项 用户组
    

    可以使用的选项有:

    • -g GID 指定新用户组的组标识号(GID)。
    • -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

    实例1:

    # groupadd group1
    

    此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。

    实例2:

    # groupadd -g 101 group2
    

    此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。

    删除用户组,

    使用groupdel命令

    groupdel 用户组
    

    例如:

    # groupdel group1
    

    此命令从系统中删除组group1。

    修改用户组

    的属性使用groupmod命令

    groupmod 选项 用户组
    

    常用的选项有:

    • -g GID 为用户组指定新的组标识号。
    • -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
    • -n新用户组 将用户组的名字改为新名字
    # 此命令将组group2的组标识号修改为102。
    groupmod -g 102 group2
    
    # 将组group2的标识号改为10000,组名修改为group3。
    groupmod –g 10000 -n group3 group2
    

    切换组

    如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。

    用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:

    $ newgrp root
    

    这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。

    /etc/passwd

    完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。

    与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。

    下面分别介绍这些文件的内容。

    /etc/passwd文件是用户管理工作涉及的最重要的一个文件。

    Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

    这个文件对所有用户都是可读的。它的内容类似下面的例子:

    # cat /etc/passwd
    
    root:x:0:0:Superuser:/:
    daemon:x:1:1:System daemons:/etc:
    bin:x:2:2:Owner of system commands:/bin:
    sys:x:3:3:Owner of system files:/usr/sys:
    adm:x:4:4:System accounting:/usr/adm:
    uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
    auth:x:7:21:Authentication administrator:/tcb/files/auth:
    cron:x:9:16:Cron daemon:/usr/spool/cron:
    listen:x:37:4:Network daemon:/usr/net/nls:
    lp:x:71:18:Printer administrator:/usr/spool/lp:
    

    从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:

    用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
    

    1)"用户名"是代表用户账号的字符串。

    通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(😃,因为冒号在这里是分隔符。

    为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。

    2)“口令”一些系统中,存放着加密后的用户口令字。

    虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。

    3)“用户标识号”是一个整数,系统内部用它来标识用户。

    一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。

    通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。

    4)“组标识号”字段记录的是用户所属的用户组。

    它对应着/etc/group文件中的一条记录。

    5)“注释性描述”字段记录着用户的一些个人情况。

    例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用作finger命令的输出。

    6)“主目录”,也就是用户的起始工作目录。

    它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。

    7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。

    Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。

    系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。

    用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。

    利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。

    8)系统中有一类用户称为伪用户(pseudo users)。

    这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

    常见的伪用户如下所示:

    伪 用 户 含 义
    bin 拥有可执行的用户命令文件
    sys 拥有系统文件
    adm 拥有帐户文件
    uucp UUCP使用
    lp lp或lpd子系统使用
    nobody NFS使用
    

    /etc/shadow

    1、除了上面列出的伪用户外,还有许多标准的伪用户,例如:audit, cron, mail, usenet等,它们也都各自为相关的进程和文件所需要。

    由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

    2、/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

    它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:

    登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
    
    1. "登录名"是与/etc/passwd文件中的登录名相一致的用户账号
    2. "口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
    3. "最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
    4. "最小时间间隔"指的是两次修改口令之间所需的最小天数。
    5. "最大时间间隔"指的是口令保持有效的最大天数。
    6. "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
    7. "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。
    8. "失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

    /etc/group

    用户组的所有信息都存放在/etc/group文件中。

    将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。

    每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不同的组。

    当一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。

    用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。

    用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

    组名:口令:组标识号:组内用户列表
    
    1. "组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。

    2. "口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。

    3. "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。

    4. "组内用户列表"是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

    磁盘管理

    概述

    Linux磁盘管理好坏直接关系到整个系统的性能问题。

    Linux磁盘管理常用命令为 df、du。

    • df :列出文件系统的整体磁盘使用量
    • du:检查磁盘空间使用量

    df检查文件系统的磁盘空间占用情况

    df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

    语法:

    df [-ahikHTm] [目录或文件名]
    

    选项与参数:

    • -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
    • -k :以 KBytes 的容量显示各文件系统;
    • -m :以 MBytes 的容量显示各文件系统;
    • -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
    • -H :以 M=1000K 取代 M=1024K 的进位方式;
    • -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
    • -i :不用硬盘容量,而以 inode 的数量来显示

    测试:

    # 将系统内所有的文件系统列出来!
    # 在 Linux 底下如果 df 没有加任何选项
    # 那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!
    [root@kuangshen /]# df
    Filesystem     1K-blocks   Used Available Use% Mounted on
    devtmpfs          889100       0    889100   0% /dev
    tmpfs             899460     704    898756   1% /dev/shm
    tmpfs             899460     496    898964   1% /run
    tmpfs             899460       0    899460   0% /sys/fs/cgroup
    /dev/vda1       41152812 6586736  32662368  17% /
    tmpfs             179896       0    179896   0% /run/user/0
    # 将容量结果以易读的容量格式显示出来
    [root@kuangshen /]# df -h
    Filesystem     Size Used Avail Use% Mounted on
    devtmpfs       869M     0 869M   0% /dev
    tmpfs           879M 708K 878M   1% /dev/shm
    tmpfs           879M 496K 878M   1% /run
    tmpfs           879M     0 879M   0% /sys/fs/cgroup
    /dev/vda1       40G  6.3G   32G  17% /
    tmpfs           176M     0 176M   0% /run/user/0
    # 将系统内的所有特殊文件格式及名称都列出来
    [root@kuangshen /]# df -aT
    Filesystem     Type       1K-blocks   Used Available Use% Mounted on
    sysfs         sysfs               0       0         0    - /sys
    proc           proc                0       0         0    - /proc
    devtmpfs       devtmpfs       889100       0    889100   0% /dev
    securityfs     securityfs          0       0         0    - /sys/kernel/security
    tmpfs         tmpfs          899460     708    898752   1% /dev/shm
    devpts         devpts              0       0         0    - /dev/pts
    tmpfs         tmpfs          899460     496    898964   1% /run
    tmpfs         tmpfs          899460       0    899460   0% /sys/fs/cgroup
    cgroup         cgroup              0       0         0    - /sys/fs/cgroup/systemd
    pstore         pstore              0       0         0    - /sys/fs/pstore
    cgroup         cgroup              0       0         0    - /sys/fs/cgroup/freezer
    cgroup         cgroup              0       0         0    - /sys/fs/cgroup/cpuset
    cgroup         cgroup              0       0         0    - /sys/fs/cgroup/hugetlb
    cgroup         cgroup              0       0         0    - /sys/fs/cgroup/blkio
    cgroup         cgroup              0       0         0    - /sys/fs/cgroup/net_cls,net_prio
    cgroup         cgroup              0       0         0    - /sys/fs/cgroup/memory
    cgroup         cgroup              0       0         0    - /sys/fs/cgroup/pids
    cgroup         cgroup              0       0         0    - /sys/fs/cgroup/cpu,cpuacct
    cgroup         cgroup              0       0         0    - /sys/fs/cgroup/devices
    cgroup         cgroup              0       0         0    - /sys/fs/cgroup/perf_event
    configfs       configfs            0       0         0    - /sys/kernel/config
    /dev/vda1     ext4         41152812 6586748  32662356  17% /
    systemd-1      -                   -       -         -    - /proc/sys/fs/binfmt_misc
    mqueue         mqueue              0       0         0    - /dev/mqueue
    debugfs       debugfs             0       0         0    - /sys/kernel/debug
    hugetlbfs     hugetlbfs           0       0         0    - /dev/hugepages
    tmpfs         tmpfs          179896       0    179896   0% /run/user/0
    binfmt_misc   binfmt_misc         0       0         0    - /proc/sys/fs/binfmt_misc
    # 将 /etc 底下的可用的磁盘容量以易读的容量格式显示
    
    [root@kuangshen /]# df -h /etc
    Filesystem     Size Used Avail Use% Mounted on
    /dev/vda1       40G  6.3G   32G  17% /
    

    du对文件和目录磁盘使用的空间的查看

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。

    语法:

    du [-ahskm] 文件或目录名称
    

    选项与参数:

    • -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
    • -h :以人们较易读的容量格式 (G/M) 显示;
    • -s :列出总量而已,而不列出每个各别的目录占用容量;
    • -S :不包括子目录下的总计,与 -s 有点差别。
    • -k :以 KBytes 列出容量显示;
    • -m :以 MBytes 列出容量显示;

    测试:

    # 只列出当前目录下的所有文件夹容量(包括隐藏文件夹):
    # 直接输入 du 没有加任何选项时,则 du 会分析当前所在目录的文件与目录所占用的硬盘空间。
    [root@kuangshen home]# du
    16./redis
    8./www/.oracle_jre_usage  # 包括隐藏文件的目录
    24./www
    48.                        # 这个目录(.)所占用的总量
    # 将文件的容量也列出来
    [root@kuangshen home]# du -a
    4./redis/.bash_profile
    4./redis/.bash_logout    
    ....中间省略....
    4./kuangstudy.txt # 有文件的列表了
    48.
    # 检查根目录底下每个目录所占用的容量
    [root@kuangshen home]# du -sm /*
    0/bin
    146/boot
    .....中间省略....
    0/proc
    .....中间省略....
    1/tmp
    3026/usr  # 系统初期最大就是他了啦!
    513/var
    2666/www
    

    通配符 * 来代表每个目录。

    与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。

    磁盘挂载与卸除

    根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为“挂载点”,解除此关联关系的过程称之为“卸载”

    Linux 的磁盘挂载使用mount命令,卸载使用umount命令。

    磁盘挂载语法:

    mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
    

    测试:

    # 将 /dev/hdc6 挂载到 /mnt/hdc6 上面!
    [root@www ~]# mkdir /mnt/hdc6
    [root@www ~]# mount /dev/hdc6 /mnt/hdc6
    [root@www ~]# df
    Filesystem           1K-blocks     Used Available Use% Mounted on
    /dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6
    

    磁盘卸载命令 umount 语法:

    umount [-fn] 装置文件名或挂载点
    

    选项与参数:

    • -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
    • -n :不升级 /etc/mtab 情况下卸除。

    卸载/dev/hdc6

    [root@www ~]# umount /dev/hdc6
    

    进程管理

    Linux中一切皆文件(文件:读写执行(查看,创建,删除,移动,复制,编辑),权限(用户、用户组),系统 :(磁盘,进程) )

    对于我们开发人员来说,其实Linux更多偏向于使用即可!

    基本概念

    1. 在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号
    2. 每一个进程都会有一个父进程
    3. 进程可以有两种存在方式:前台、后台运行
    4. 一般的话服务都是后台运行的,基本程序都是前台运行的

    命令

    ps 查看当前系统中正在执行的各种进程信息

    ps -xx:

    • -a:显示当前终端运行的所有的进程信息(当前的进程一个)
    • -u:以用户的信息显示进程
    • -x:显示后台运行的进程的参数
    # ps -aux 查看所有的进程
    ps -aux|grep mysql
    # | 在Linux中这个叫做管道符  A|B
    # grep 查找文件中符合条件的字符串
    

    对于我们来说,这里目前只需要记住一个命令即可 ps -xx|grep 进程名字 过滤进程信息

    ps -ef 可以查看到父进程的信息

    ps -ef|grep mysql # 看父进程我们一般可以通过目录树结构来查看!
    
    # 进程树
    pstree -pu
    	-p 显示父id
    	-u 显示用户组
    

    kill -9 进程的id

    杀掉进程,等价于windows结束任务

    jdk安装(rpm安装)

    1、rpm下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html

    2、如果有安装openjdk 则卸载

    [root@kuangshen ~]# java -version
    java version "1.8.0_121"
    Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
    # 检查
    [root@kuangshen ~]# rpm -qa|grep jdk
    jdk1.8.0_121-1.8.0_121-fcs.x86_64
    # 卸载 -e --nodeps 强制删除
    [root@kuangshen ~]# rpm -e --nodeps jdk1.8.0_121-1.8.0_121-fcs.x86_64
    [root@kuangshen ~]# java -version
    -bash: /usr/bin/java: No such file or directory  # OK
    

    3、安装JDK

    # 安装java rpm
    [root@kuangshen kuangshen]# rpm -ivh jdk-8u221-linux-x64.rpm
    
    # 安装完成后配置环境变量 文件:/etc/profile
    JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
    CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
    PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
    export PATH CLASSPATH JAVA_HOME
    # 保存退出
    
    # 让新增的环境变量生效!
    source /etc/profile
    
    # 测试 java -version
    [root@kuangshen java]# java -version
    java version "1.8.0_221"
    Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IrUeLyIl-1610810834763)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116213036418.png)]

    发布一个项目试试

    查看防火墙开启了的端口号

    firewall-cmd --list-ports

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VNYMyQmx-1610810834764)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116215239279.png)]

    确保Linux的防火墙端口是开启的,如果是阿里云,需要保证阿里云的安全组策略是开放的!

    # 查看firewall服务状态
    systemctl status firewalld
    
    # 开启、重启、关闭、firewalld.service服务
    # 开启
    service firewalld start
    # 重启
    service firewalld restart
    # 关闭
    service firewalld stop
    
    # 查看防火墙规则
    firewall-cmd --list-all    # 查看全部信息
    firewall-cmd --list-ports  # 只看端口信息
    
    # 开启端口
    开端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
    重启防火墙:systemctl restart firewalld.service
    
    命令含义:
    --zone #作用域
    --add-port=80/tcp  #添加端口,格式为:端口/通讯协议
    --permanent   #永久生效,没有此参数重启后失效
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CV8MBJ0q-1610810834765)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116220548641.png)]

    Tomcat安装(解压缩安装)

    1、安装好了Java环境后我们可以测试下Tomcat!准备好Tomcat的安装包!

    2、将文件移动到/usr/tomcat/下,并解压!

    [root@kuangshen kuangshen]# mv apache-tomcat-9.0.22.tar.gz /usr
    [root@kuangshen kuangshen]# cd /usr
    [root@kuangshen usr]# ls
    apache-tomcat-9.0.22.tar.gz
    [root@kuangshen usr]# tar -zxvf apache-tomcat-9.0.22.tar.gz   # 解压
    

    3、运行Tomcat,进入bin目录,和我们以前在Windows下看的都是一样的

    # 执行:startup.sh -->启动tomcat
    # 执行:shutdown.sh -->关闭tomcat
    ./startup.sh
    ./shutdown.sh
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HxteBuIh-1610810834766)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116221904060.png)]

    安装Docker(yum安装)

    基于 CentOS 7 安装

    1. 官网安装参考手册:https://docs.docker.com/install/linux/docker-ce/centos/

    2. 确定你是CentOS7及以上版本

      [root@192 Desktop]# cat /etc/redhat-release
      CentOS Linux release 7.2.1511 (Core)
      
    3. yum安装gcc相关(需要确保 虚拟机可以上外网 )

      yum -y install gcc
      yum -y install gcc-c++
      
    4. 卸载旧版本

      yum -y remove docker docker-common docker-selinux docker-engine
      # 官网版本
      yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine
      
    5. 安装需要的软件包

      yum install -y yum-utils device-mapper-persistent-data lvm2
      
    6. 设置stable镜像仓库

      # 错误
      yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
      ## 报错
      [Errno 14] curl#35 - TCP connection reset by peer
      [Errno 12] curl#35 - Timeout
      
      # 正确推荐使用国内的
      yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      
    7. 更新yum软件包索引

      yum makecache fast
      
    8. 安装Docker CE

      yum -y install docker-ce docker-ce-cli containerd.io
      
    9. 启动docker

      systemctl start docker
      
    10. 测试

      docker version
      
      docker run hello-world
      
      docker images
      

    宝塔面板安装

    https://www.bilibili.com/video/av91821322

    说明:后面我们会在Linux搭建很多环境,每个环境的搭建留在每个对应的课程中去讲解、比如Redis、Kafka、Elasticsearch等等…

    远程数据库

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4BxlHwjS-1610810834767)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116230645050.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f9IgDKMx-1610810834767)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116231139327.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rf7kbxQo-1610810834768)(C:\Users\王东梁\AppData\Roaming\Typora\typora-user-images\image-20210116231701787.png)]

    展开全文
  • 该应用程序基于docker-compose ,稍后我们将作为Packer的依赖项进行安装。 使用Packer构建映像 (Building the Image with Packer) Let’s get our hands dirty! For this, we need to create a folder somewhere in...
  • 全部下载地址如下(官方链接): 简体中文 ...http://download.windowsupdate.com/msdownload/update/software/updt/2009/05/windows6.1-kb967828-x86-es-es_72d101c9a0fd316fac0d5b5fc77058104ac8207e.exe 希伯来语 ...
  • 从零带你学Linux

    2021-03-02 14:07:09
    从零带你学Linux 1.linux概述 这里是基于Java全栈开发的Linux,而不是运维级别! 我们为什么要在这个时间学习Linux?Java全栈开发的我们要掌握哪些知识?...搜索引擎(ElasticSearch) 集群分布式
  • 这次实验是为了之后一个月里大概150个微服务的迁移作准备,所有这些服务支撑着西班牙在线市场的运营。当我们将应用程序部署到Kubernetes上,并且将一些生产流量导入其中之后,事情开始有些不妙了。Kubernetes上的...
  • Linux入门学习笔记

    2021-07-31 21:29:28
    环境搭建2.1 安装CentOS(虚拟机安装,耗资源)2.2 购买云服务器(推荐)3. 走近Linux系统3.1 开机登录3.2 关机3.3 系统目录结构4. 常用的基本命令(重点掌握)4.1 目录管理4.1.1 绝对路径和相对路径4.1.2 ls(列出...
  • + (NSString *)DPLocalizedString:(NSString *)translation_key { NSString * s = NSLocalizedString(translation_key, nil); if (![CURR_LANG isEqual:@"en"] && ![CURR_LANG isEqual:@"es"]) {
  • vs2019离线下载安装包

    千次阅读 2019-09-23 07:06:26
    官方的离线安装说明-->点击打开 1.下载 vs2019引导程序,选择你所需的版本下载,我选择了企业版 vs_enterprise__184447765.1558180718.exe 2.设置命令参数(命令参数说明),启动vs2019引导程序下载 命令...
  • 有许多途径来安装和运行Redis服务器,比如下载其源码并执行编译和安装。 如果你使用的是Windows,Microsoft在 此处 维护了Redis的安装程序。 在Linux上,你可以通过操作系统的软件包管理器安装Redis。 Mac OS X用户...
  • Elasticsearch 。 8. Services 当应用规模足够大时,很可能需要将一些服务拆分出来。这些服务并不向外部提供,而是提供给Web Application Servers以及其他内部服务。在Storyblocks,我们有很多这样的服务: ...
  • 我说过我将首先添加西班牙语(语言代码es),因此执行以下命令: (venv) $ pybabel init -i messages.pot -d app/translations -l es creating catalog app/translations/es/LC_MESSAGES/messages.po based on ...
  • Flask 教程 第二十二章:后台作业

    千次阅读 2018-08-22 08:40:46
    有许多途径来安装和运行Redis服务器,比如下载其源码并执行编译和安装。 如果你使用的是Windows,Microsoft在 此处 维护了Redis的安装程序。 在Linux上,你可以通过操作系统的软件包管理器安装Redis。 Mac OS X用户...
  • 传说中的800句记7000词

    万次阅读 2016-09-11 10:43:56
    登录 | 注册 ZHB_McCoy的专栏 目录视图摘要视图订阅 一键管理你的代码 攒课--我的学习我做主 【hot】直播技术精选 ...传说中的800句记7000词
  • 这时,用于记录监控这些用途的工具比如(Elasticsearch - Logstash或FluentD - Kibana)成为了这些新的架构中不可或缺的部分,增加了它的受欢迎程度。 通过所有这些新工具/库包,我们享受了一个更完整的生态系统,...
  • mesos 群聊天记录

    2017-12-30 01:12:00
    Elasticsearch 2016-10-25 11:05:11 差不多先生 做搜索的 2016-10-25 11:05:28 mesos群主 没有 2016-10-25 11:06:27 差不多先生 哦,你们那边的主要语言是什么语言? 2016-10-25 11:07:09 mesos群主 java go ruby ...
  • Linux基础

    2021-08-13 10:22:40
    西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。 葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh...
  • 这时,用于记录监控这些用途的工具比如(Elasticsearch - Logstash或FluentD - Kibana)成为了这些新的架构中不可或缺的部分,增加了它的受欢迎程度。 通过所有这些新工具/库包,我们享受了一个更完整的生态系统...
  • Linux笔记

    2021-09-17 17:55:22
    西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。 葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh...

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

dockerkibana安装es