<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>文章 on Thinking</title>
    <link>https://varkai.com/posts/</link>
    <description>Recent content in 文章 on Thinking</description>
    <generator>Hugo</generator>
    <language>zh</language>
    <copyright>2026</copyright>
    <lastBuildDate>Fri, 23 Aug 2024 21:10:00 +0800</lastBuildDate>
    <atom:link href="https://varkai.com/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>群晖 NAS 共享文件占用排查</title>
      <link>https://varkai.com/posts/9ac49acb/</link>
      <pubDate>Fri, 23 Aug 2024 21:10:00 +0800</pubDate>
      <guid>https://varkai.com/posts/9ac49acb/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;公司使用群晖 NAS 搭建了文件共享平台，大家通过 SMB 共享的方式映射为网络驱动器使用，但是有个问题，就是当一个人打开 Word 或 Excel 文件编辑时，其他人打开相同的文件会提示文件处于锁定状态，某某正在编辑，只能以只读的方式打开，根据提示无法获知具体是谁占用的文件。&lt;/p&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/9ac49acb/1.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;那有没有办法知道具体是哪个 NAS 用户或者哪个电脑 IP 占用的了？当然是有的，下面给出解决方法。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;解决方法&#34;&gt;解决方法&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;首先打开群晖 NAS 的 SSH 功能。依次点击 &lt;code&gt;控制面板&lt;/code&gt; &amp;gt; &lt;code&gt;终端机和SNMP&lt;/code&gt;，然后勾选 &lt;code&gt;启动 SSH 功能&lt;/code&gt;，最后点击 &lt;code&gt;应用&lt;/code&gt; 按钮即可。&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/9ac49acb/2.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;使用终端工具连接 NAS 主机，我这里使用的 MobaXterm，输入 NAS 的 IP 地址和 SSH 端口号（没修改的情况下默认为：22）后点击 &lt;code&gt;OK&lt;/code&gt; 按钮进行连接。&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/9ac49acb/3.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;输入 NAS 系统的管理员账号和密码后就进入到 NAS 系统的 Shell 环境了。&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/9ac49acb/4.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/9ac49acb/5.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;切换为 root 用户，输入 &lt;code&gt;sudo -i&lt;/code&gt;，这里会提示你输入密码，这个密码就是上面的 NAS 管理员账号的密码。&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/9ac49acb/6.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;执行命令 &lt;code&gt;smbstatus -L&lt;/code&gt;，该命令会列出共享文件夹中所有被锁定的文件的信息。在返回的列表中找到需要排查的锁定文件，记住该文件最前面的 &lt;code&gt;Pid&lt;/code&gt;，比如我这里是 &lt;code&gt;8204&lt;/code&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/9ac49acb/7.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;根据前面的 &lt;code&gt;Pid&lt;/code&gt;，执行 &lt;code&gt;smbstatus -b | grep 8204&lt;/code&gt; 命令，该命令会列出此 Pid 对应的 NAS 账号和电脑 IP 信息。&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/9ac49acb/8.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;hr&gt;</description>
    </item>
    <item>
      <title>使用 WireGuard 组网实现内网穿透</title>
      <link>https://varkai.com/posts/53d88863/</link>
      <pubDate>Mon, 01 Jul 2024 22:00:00 +0800</pubDate>
      <guid>https://varkai.com/posts/53d88863/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;最近有个需求，就是希望在公司或者外面的时候能够访问到家里提供的网络服务，例如：文件共享、照片存储等。但是我家里的网络没有提供公网地址，在外面是无法直接访问的，几经搜寻之后，发现可以使用 WireGurad 组件虚拟专用局域网实现内网的穿透，从而实现在外面访问家里的内网服务。&lt;/p&gt;
&lt;p&gt;本文将介绍如何在 Debian 12 上安装和配置 WireGuard，它将充当中转服务器。还将展示如何在 Linux、Windows 和 macOS 上将 WireGuard 配置为客户端。客户端的流量将通过 Debian 12 服务器进行路由。&lt;/p&gt;
&lt;p&gt;通过 WireGuard 组建虚拟专用网络，可用于防止中间人攻击、匿名上网、绕过受地理限制的内容或允许在家工作的同事安全地连接到公司网络。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;wireguard-是什么&#34;&gt;WireGuard 是什么&lt;/h2&gt;
&lt;p&gt;下面是 WireGuard 官网的介绍：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;WireGuard 是一种极其简单但快速且现代的 VPN，它利用了最先进的加密技术。它的目标是比 IPsec 更快、更简单、更精简和更有用，同时避免令人头疼的问题。其旨在提供比 OpenVPN 更高的性能。WireGuard 被设计为在嵌入式接口和超级计算机等上运行的通用 VPN，适用于许多不同的环境。虽然最初仅支持 Linux，但现在可以跨平台（Windows、macOS、BSD、iOS、Android）广泛部署。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;通过 WireGuard 可以将广域网上的主机连接起来，形成一个局域网。只需要有一台具有固定公网 IP 的服务器，就可以将其作为我们搭建的局域网的中心节点，让其他的主机（不论是否有公网IP，不论是否在NAT内），都通过这个中心节点和彼此相连。由此就构建了一个中心辐射型的局域网，实现了内网穿透等功能。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;前提条件&#34;&gt;前提条件&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;公网服务器：&lt;/strong&gt; 一台具有公网 IP 地址的 Linux 服务器，我这里采用的是 Debian 12 系统，这台服务器充当中转站，负责将外部请求转发到相应的内部网络。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;内网服务器：&lt;/strong&gt; 在家庭内网中，也需要准备一台 Linux 服务器做内部局域网的地址转发。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;网络拓扑&#34;&gt;网络拓扑&lt;/h2&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/53d88863/1.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Peer1&lt;/strong&gt; - 公网服务器（OS：Debian 12）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Peer2&lt;/strong&gt; - 家庭内网服务器 （OS：Debian12）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Peer3&lt;/strong&gt; - 需要访问家庭网络的外部客户端（OS：任意 WireGuard 支持的平台，有关 WireGuard 所有受支持平台的安装说明，请访问 &lt;a href=&#34;https://wireguard.com/install/&#34;&gt;https://wireguard.com/install/&lt;/a&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;wireguard-组网配置&#34;&gt;WireGuard 组网配置&lt;/h2&gt;
&lt;h3 id=&#34;配置-peer1-中继服务器&#34;&gt;配置 Peer1 中继服务器&lt;/h3&gt;
&lt;h4 id=&#34;安装-wireguard&#34;&gt;安装 WireGuard&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt install wireguard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h4 id=&#34;配置-wireguard&#34;&gt;配置 WireGuard&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;生成服务端密钥对&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;执行以下命令后，将在 &lt;code&gt;/etc/wireguard&lt;/code&gt; 目录下生成私钥文件 &lt;code&gt;privatekey&lt;/code&gt; 和公钥文件 &lt;code&gt;publickey&lt;/code&gt; ：&lt;/p&gt;</description>
    </item>
    <item>
      <title>RAID 级别对比</title>
      <link>https://varkai.com/posts/79f629a6/</link>
      <pubDate>Wed, 15 Feb 2023 17:01:20 +0800</pubDate>
      <guid>https://varkai.com/posts/79f629a6/</guid>
      <description>&lt;p&gt;&lt;strong&gt;RAID 级别对比表格：&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;RAID级别&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;最小硬盘数&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;可用容量&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;容错性&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;冗余性&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;热备盘选项&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;读性能&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;随机写性能&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;连续写性能&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RAID 0&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;n ≥ 2&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;n&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;无&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;无&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;无&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;高&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;高&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;高&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RAID 1&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;n ≥ 2&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;1&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;有&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;镜像&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;有&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;中&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;低&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;低&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RAID 5&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;n ≥ 3&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;n-1&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;有&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;奇偶校验&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;有&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;高&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;低&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;中&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RAID 6&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;n ≥ 4&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;n-2&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;有&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;奇偶校验&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;有&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;高&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;低&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;低&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;RAID 10&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;n ≥ 4（n为偶数）&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;n/2&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;有&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;镜像&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;有&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;中&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;中&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;中&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;raid-级别详解&#34;&gt;RAID 级别详解&lt;/h2&gt;
&lt;h3 id=&#34;raid-0&#34;&gt;RAID 0&lt;/h3&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/79f629a6/1.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;至少需要硬盘数&lt;/strong&gt;：2&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用 SOCKS5 代理加速 GitHub 克隆</title>
      <link>https://varkai.com/posts/749d0bab/</link>
      <pubDate>Wed, 10 Jun 2020 22:18:09 +0800</pubDate>
      <guid>https://varkai.com/posts/749d0bab/</guid>
      <description>&lt;p&gt;因为众所周知的原因，国内从 GitHub 上克隆代码是非常非常的慢的，只能利用梯子曲线救国了，但是就算梯子打开全局系统代理，对 &lt;code&gt;git clone&lt;/code&gt; 也是没有用的，经过一番搜寻和实践，终于找到利用梯子加速的方法：&lt;/p&gt;
&lt;p&gt;只要在 &lt;code&gt;~/.ssh&lt;/code&gt; 目录下新建一个 &lt;code&gt;config&lt;/code&gt; 文件，并写入以下内容：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 这里的 -a none 是 NO-AUTH 模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 详情参见 https://bitbucket.org/gotoh/connect/wiki/Home 中的 More detail 一节&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 将 SOCKS5 代理地址替换成自己的地址&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ProxyCommand connect -S 127.0.0.1:7890 -a none %h %p
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Host github.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  User git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Port &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Hostname github.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;# 这里是 ssh 的私钥地址，注意修改路径为你的路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  IdentityFile &lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\Users\username\.ssh\id_rsa&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  TCPKeepAlive yes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Host ssh.github.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  User git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Port &lt;span class=&#34;m&#34;&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Hostname ssh.github.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;# 这里是 ssh 的私钥地址，注意修改路径为你的路径&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  IdentityFile &lt;span class=&#34;s2&#34;&gt;&amp;#34;C:\Users\username\.ssh\id_rsa&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  TCPKeepAlive yes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;到这里就可以打开你的梯子，享受 GitHub 克隆时飞一般的感觉！&lt;/p&gt;</description>
    </item>
    <item>
      <title>VMware ESXi 使用 NUT 实现断电自动关机</title>
      <link>https://varkai.com/posts/8320366f/</link>
      <pubDate>Fri, 29 May 2020 11:09:52 +0800</pubDate>
      <guid>https://varkai.com/posts/8320366f/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;这篇文章主要讲解 VMware ESXi 下安装 NUT 客户端实现断电自动关机，同样的，NUT 在 ESXi 下也提供了现成的软件包，我们只需要安装并配置好就行了，我这里采用的 ESXi 版本是 VMware ESXi 6.7.0 Update 3，其他版本应该也是通用的。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;准备工作&#34;&gt;准备工作&lt;/h2&gt;
&lt;p&gt;ESXi 默认是关闭主机 SSH 功能的，但是我们后续会使用到，所以我们首先要去 WEB 后台开启，进入 WEB 后台，打开 &lt;code&gt;管理&lt;/code&gt;后，切换到 &lt;code&gt;服务&lt;/code&gt; 选项卡，最后找到列表中的 &lt;code&gt;TSM&lt;/code&gt; 和 &lt;code&gt;TSM-SSH&lt;/code&gt; 服务将其启动，这样 SSH 功能就临时可以用了。&lt;/p&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/8320366f/1.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;另外需要修改 ESXi 的默认软件安装策略，否则会阻止软件的安装，进入 WEB 后台后，打开 &lt;code&gt;管理&lt;/code&gt;，切换到 &lt;code&gt;安全和用户&lt;/code&gt; 选项卡，点击左侧的 &lt;code&gt;接受级别&lt;/code&gt; 会弹出软件接受级别的设置，我们将其修改为 &lt;code&gt;社区&lt;/code&gt;。&lt;/p&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/8320366f/2.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;p&gt;接着，我们下载 ESXi 平台下的 NUT 客户端软件包（下载地址：&lt;a href=&#34;http://rene.margar.fr/download/1483/&#34;&gt;NutClient-ESXi&lt;/a&gt;），将下载好的软件包上传到 ESXi 的 &lt;code&gt;/tmp&lt;/code&gt; 目录待安装使用。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;安装-nut-客户端&#34;&gt;安装 NUT 客户端&lt;/h2&gt;
&lt;p&gt;通过 SSH 连接到 ESXi 主机，然后进入到 &lt;code&gt;/tmp&lt;/code&gt; 目录后，解压缩 NUT 软件包，最后执行安装脚本 &lt;code&gt;upsmon-install.sh&lt;/code&gt;，返回如下的安装信息代表安装成功了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 下使用 NUT 实现断电自动关机</title>
      <link>https://varkai.com/posts/f5bf0730/</link>
      <pubDate>Thu, 28 May 2020 08:47:43 +0800</pubDate>
      <guid>https://varkai.com/posts/f5bf0730/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;在前面 &lt;a href=&#34;https://varkai.com/posts/0e7551f9&#34;&gt;《群晖和UPS的联姻》&lt;/a&gt; 中，我们完成了群晖连接 UPS 并实现了断电自动关机，同时也启用了网络 UPS 服务器，但这也只限于和 UPS 直接连接的群晖，其他局域网中的服务器还无法监控 UPS 的状态，前面提到，服务器上安装 NUT 客户端软件就能实现，所以这一回主要讲解如何在 Linux 系统下安装 NUT 客户端软件并实现断电自动关机。&lt;/p&gt;
&lt;p&gt;我这里使用的 Linux 发行版是 Ubuntu server 20.04 LTS，所以 Debian 系的发行版安装配置都是一样的，其他的发行版操作大同小异。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;准备工作&#34;&gt;准备工作&lt;/h2&gt;
&lt;p&gt;首先我们需要先进到群晖 WEB 后台，依次打开 &lt;code&gt;控制面板&lt;/code&gt; - &lt;code&gt;硬件和电源&lt;/code&gt;，切换到 &lt;code&gt;不断电系统&lt;/code&gt; 选项卡，找到 &lt;code&gt;启用网络 UPS 服务器&lt;/code&gt;，确保已经勾选，接着点击下方的 &lt;code&gt;允许的 DiskStation 设备&lt;/code&gt;， 这时会弹出一个输入 IP 的对话框，这里填写的 IP 地址是局域网其他需要网络监控 UPS 状态的服务器 IP 地址，只有在这里列出的 IP 地址所对应的服务器才能实现网络监控，这里最多支持5台服务器，我这里 Ubuntu server 的 IP 是 192.168.98.210，我们把它填进去后点击确认就行了。&lt;/p&gt;
&lt;figure class=&#34;align-center &#34;&gt;
    &lt;img loading=&#34;lazy&#34; src=&#34;https://varkai.com/images/f5bf0730/1.png#center&#34;/&gt; 
&lt;/figure&gt;

&lt;hr&gt;
&lt;h2 id=&#34;安装-nut-客户端&#34;&gt;安装 NUT 客户端&lt;/h2&gt;
&lt;p&gt;NUT 提供了源码，我们可以直接源码编译安装，但太麻烦了，而且基本上各大发行版的软件仓库都有现成的包，所以我们直接用 apt 安装就行了。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sudo apt install nut-client
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安装好后，我们可以检查下是否安装成功，在终端执行 &lt;code&gt;upsc ups@192.168.99.10&lt;/code&gt; 后，如果能够显示网络 UPS 的详细信息则代表安装成功了，其中 &lt;code&gt;192.168.99.10&lt;/code&gt; 是网络 UPS 服务器的 IP 地址，在这里也就是群晖的 IP 地址。&lt;/p&gt;</description>
    </item>
    <item>
      <title>群晖和 UPS 的联姻</title>
      <link>https://varkai.com/posts/0e7551f9/</link>
      <pubDate>Tue, 26 May 2020 21:22:24 +0800</pubDate>
      <guid>https://varkai.com/posts/0e7551f9/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;之前公司停过几次电，虽然公司机房配有 UPS（不断电系统）和停电电话报警系统，但是停电时间无法确定，也没办法保证不漏接报警电话，所以机房里面的服务器设备还是存在很大的意外断电隐患，所以比较理想的方式就是市电断开后，所有的服务器实现自动关机，经过大量的查阅资料，然后经过反复的测试，最终得以应用到机房中，进一步保障了设备的安全，也因此有了这一系列文章。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;nut-介绍&#34;&gt;NUT 介绍&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://networkupstools.org/&#34;&gt;NUT&lt;/a&gt; 是 Network UPS Tools 的简称，它是一款非常强大的网络 UPS 监控工具，支持大多数的 UPS 设备，包括：APC、Belkin、Best Power、MGE、Tripp-Lite 等，而且它还支持作为监控服务器模式，这样不仅能监控本地连接的 UPS 设备状态，局域网内的其他设备安装该软件的客户端后，不仅可以获得监控服务器所连接的 UPS 状态，也能接收到断电信息，及时的进行自动关机操作，最棒的是，该软件是免费开源的，在 Windows、Linux、Mac 以及 ESXi 平台都能使用，而知名的 NAS 制造商群晖（Synology）和威联通（QNAP）都直接原生集成了该软件，而我前面的设想都基于该软件实现。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;ups-监控服务器&#34;&gt;UPS 监控服务器&lt;/h2&gt;
&lt;p&gt;这篇文章主要是介绍如何搭建一台 UPS 监控服务器，所需条件：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一台支持能和计算机通讯并且支持断电通知的 UPS。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;因为机房的旧 UPS 不支持与计算机通讯，所以又买了一台 APC BR550G-CN，基本上 APC 家的大部分 UPS 都能很好的支持。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;一台安装了监控 UPS 状态软件（NUT）的主机。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;公司有一台群晖 NAS，而群晖系统本身就集成了 NUT 软件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;原来这台群晖是接入到旧的 UPS 的，现在只需要将群晖电源插入新的 UPS，然后将 APC 附赠的 RJ 网卡转 USB 数据线，RJ 插口一头插入 APC 的数据口，USB 插头插入群晖的 USB 口，这样就可以通过群晖监控 UPS 状态了。&lt;/p&gt;
&lt;p&gt;登录群晖 WEB 后台后，依次打开 &lt;code&gt;控制面板&lt;/code&gt; - &lt;code&gt;硬件和电源&lt;/code&gt;，切换到 &lt;code&gt;不断电系统&lt;/code&gt; 选项卡，首先必须勾选 &lt;code&gt;启用 UPS 支持&lt;/code&gt;，群晖才能和 UPS 联动，然后下面有三个选项：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oracle 使用数据泵进行数据导出导入</title>
      <link>https://varkai.com/posts/2454662a/</link>
      <pubDate>Sun, 09 Jun 2019 14:46:23 +0800</pubDate>
      <guid>https://varkai.com/posts/2454662a/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;从 Oracle Database 10g 开始提供了新的导出导入工具-数据泵，expdp 和 impdp 分别对应导出和导入命令，我们先看看它的主要特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持并行处理导入、导出任务。&lt;/li&gt;
&lt;li&gt;支持暂停和重启动导入、导出任务。&lt;/li&gt;
&lt;li&gt;支持通过 Database Link 的方式导出或导入远端数据库中的对象。&lt;/li&gt;
&lt;li&gt;支持在导入时通过 Remap_schema、Remap_datafile、Remap_tablespace 几个参数实现导入过程中自动修改对象属主、 数据文件或数据所在表空间。&lt;/li&gt;
&lt;li&gt;导入/导出时提供了非常细粒度的对象控制。通过 Include、Exclude 两个参数，甚至可以详细制定是否包含或不包含某个对象。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;下面是 expdp/impdp 和 exp/imp 的区别：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;exp 和 imp 是客户端工具程序，它们既可以在客户端使用，也可以在服务端使用。&lt;/li&gt;
&lt;li&gt;expdp 和 impdp 是服务端的工具程序，他们只能在 Oracle 服务端使用，不能在客户端使用。&lt;/li&gt;
&lt;li&gt;imp 只适用于 exp 导出的文件，不适用于 expdp 导出文件，impdp 只适用于 expdp 导出的文件，而不适用于 exp 导出文件。&lt;/li&gt;
&lt;li&gt;对于 Oracle Database 10g 以上的服务器，使用 exp 通常不能导出0行数据的空表，而此时必须使用 expdp 导出。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;label1&#34;&gt;创建导出导入目录&lt;/h2&gt;
&lt;p&gt;首先我们需要在数据库服务器上创建一个用来保存导出文件的目录，我这里设置为 &lt;code&gt;oracle&lt;/code&gt; 用户目录下的 &lt;code&gt;dmp&lt;/code&gt; 目录，绝对路径为 &lt;code&gt;/home/oracle/dmp&lt;/code&gt;，使用 &lt;code&gt;oracle&lt;/code&gt; 用户登入服务器并创建该目录：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mkdir ~/dmp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后进入 &lt;code&gt;sqlplus&lt;/code&gt; 环境：&lt;/p&gt;</description>
    </item>
    <item>
      <title>Oracle Linux 7 安装 Oracle Database 12c</title>
      <link>https://varkai.com/posts/9095ce34/</link>
      <pubDate>Sat, 08 Jun 2019 14:43:31 +0800</pubDate>
      <guid>https://varkai.com/posts/9095ce34/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;之前工作数据库一直使用的 Oracle Database 11g，所使用的系统是 Oracle Linux 6，鉴于两者都比较老旧，而且都停止维护支持了，所以今后再部署数据库，肯定会使用较新的系统和数据库，于是这一阵先在虚拟机里折腾折腾，把安装文档整理出来，方便以后安装部署，下面是我的安装环境：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;虚拟机软件：VMware Workstation 15 Pro&lt;!-- raw HTML omitted --&gt;
虚拟机：Oracle Linux 7.8&lt;!-- raw HTML omitted --&gt;
数据库：Oracle Database 12c Release 2&lt;!-- raw HTML omitted --&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;下面是安装 Oracle 12c 数据库对系统的一些关键要求：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;分类&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;要求&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;内存&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;至少1GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;/tmp&lt;/code&gt; 目录&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;至少1GB&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;&lt;code&gt;swap&lt;/code&gt; 分区&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;内存在1GB到2GB之间：大小为内存的1.5倍&lt;!-- raw HTML omitted --&gt;内存在2GB到16GB之间：大小和内存大小一致&lt;!-- raw HTML omitted --&gt;内存大于16GB：大小为16GB&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;安装环境配置&#34;&gt;安装环境配置&lt;/h2&gt;
&lt;p&gt;首先通过 SSH 连接或者本地登入到 Oracle Linux 系统，以下命令执行用户除非特别指出，默认为 root 用户。&lt;/p&gt;
&lt;h3 id=&#34;配置-hosts-和-network&#34;&gt;配置 hosts 和 network&lt;/h3&gt;
&lt;p&gt;这里需要在 &lt;code&gt;/etc/hosts&lt;/code&gt; 文件中添加一行主机 IP 指向 HOSTNAME 的一行记录，另外需要在 &lt;code&gt;/etc/sysconfig/network&lt;/code&gt; 文件中添加一行 &lt;code&gt;HOSTNAME&lt;/code&gt; 的变量，如果这里不设置，数据库安装过程中的网络配置会报错。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git 仓库删除所有提交历史记录</title>
      <link>https://varkai.com/posts/380d8302/</link>
      <pubDate>Mon, 20 May 2019 10:32:59 +0800</pubDate>
      <guid>https://varkai.com/posts/380d8302/</guid>
      <description>&lt;p&gt;我们有时候需要整理 Git 提交记录，让仓库成为一个干净的新仓库，经过大量网上搜寻以及自己的反复测试，步骤如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先创建一个新的分支&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git checkout --orphan latest_branch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;然后把所有文件添加到Git仓库&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git add -A
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;提交更改&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git commit -am &lt;span class=&#34;s2&#34;&gt;&amp;#34;commit message&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;删除主分支&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git branch -D master
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;重命名当前分支为主分支&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git branch -m master
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;最后强制更新远程仓库&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ git push -f origin master
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>Oracle 数据库归档日志详解</title>
      <link>https://varkai.com/posts/f8db08fe/</link>
      <pubDate>Sun, 28 Apr 2019 22:50:17 +0800</pubDate>
      <guid>https://varkai.com/posts/f8db08fe/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;
&lt;p&gt;Oracle 数据库在数据出错时可以使用 &lt;code&gt;重做日志 (Redo Log)&lt;/code&gt;进行恢复，重做日志分为两部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在线重做日志文件 (Online Redo Log Files)&lt;/li&gt;
&lt;li&gt;归档日志文件 (Archive Redo Log Files)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里主要说一下归档日志 (Archive Log)，在线重做日志大小毕竟是有限的，当都写满了的时候，就面临着2个选择，第一个就是把以前在线重做日志从头擦除开始继续写，第二种就是把以前的在线重做日志先进行备份，然后对被备份的日志擦除开始写新的在线 Redo Log，数据库如果采用这种生成归档日志的模式的话，就是归档日志模式 (ARCHIVELOG)，反之如果不生成归档日志，就是非归档日志模式 (NOARCHIVELOG)。&lt;/p&gt;
&lt;p&gt;Oracle 数据库默认采用的是非归档模式，假如说一共有三个重做日志组，当三个日志组全部写满之后将从第一个日志组开始循环记录，并且第一个日志组中的内容将被彻底覆盖，这样，如果数据库崩溃了，就没办法恢复很早之前的数据了。而使用归档模式后，这样写入日志循环的时候，会先把日志组中的数据写入到归档日志中，然后才会被覆盖，这样恢复问题就解决了，下面是一些常用的操作。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;改变数据库归档模式&#34;&gt;改变数据库归档模式&lt;/h2&gt;
&lt;p&gt;首先使用 &lt;code&gt;oracle&lt;/code&gt; 用户登入数据库服务器，然后进入 &lt;code&gt;sqlplus&lt;/code&gt; 环境：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sqlplus /nolog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;使用管理员连接到数据库：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SQL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CONN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;AS&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SYSDBA&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看当前归档模式，显示为非归档模式：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SQL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LOG_MODE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;V$DATABASE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;     
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;LOG_MODE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;------------
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;NOARCHIVELOG&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;改变归档日志模式前要先关闭数据库：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SQL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SHUTDOWN&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;IMMEDIATE&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;数据库以 &lt;code&gt;MOUNT&lt;/code&gt; 方式启动：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;SQL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;STARTUP&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;MOUNT&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启用归档模式：&lt;/p&gt;</description>
    </item>
    <item>
      <title>DNS 引发的 Oracle 数据库监听故障解决</title>
      <link>https://varkai.com/posts/5737da7e/</link>
      <pubDate>Thu, 28 Feb 2019 20:19:58 +0800</pubDate>
      <guid>https://varkai.com/posts/5737da7e/</guid>
      <description>&lt;p&gt;今天上午公司 Oracle 数据库连接非常的慢，甚至无法连接，于是决定先重启服务器看问题是否解决，重启后问题依旧，登入服务器查看监听状态，发现一直停留在正在连接状态。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ su - oracle
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ lsnrctl status
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;LSNRCTL &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; Linux: Version 11.2.0.1.0 - Production on 03-4月 -2019 13:58:55
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Copyright &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;c&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; 1991, 2009, Oracle.  All rights reserved.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Connecting to &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;DESCRIPTION&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ADDRESS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PROTOCOL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;TCP&lt;span class=&#34;o&#34;&gt;)(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;localhost&lt;span class=&#34;o&#34;&gt;)(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PORT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1521&lt;span class=&#34;o&#34;&gt;)))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;后经网上几番查阅并尝试，发现是服务器配置了公共 DNS，可能公共 DNS 出现了故障，导致连接监听缓慢，把 DNS 配置注释掉后就恢复正常了。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ vi /etc/resolv.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Generated by NetworkManager&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# nameserver 119.29.29.29&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;还有一个方法就是修改 &lt;code&gt;sshd&lt;/code&gt; 配置文件，将 &lt;code&gt;UseDNS&lt;/code&gt; 参数设置为 &lt;code&gt;no&lt;/code&gt;，不解析 DNS&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linux 系统释放 Cached 内存</title>
      <link>https://varkai.com/posts/4badafaa/</link>
      <pubDate>Sat, 25 Aug 2018 21:22:52 +0800</pubDate>
      <guid>https://varkai.com/posts/4badafaa/</guid>
      <description>&lt;h2 id=&#34;查看内存使用情况&#34;&gt;查看内存使用情况&lt;/h2&gt;
&lt;p&gt;在终端执行 &lt;code&gt;free -h&lt;/code&gt;，可以查询系统内存的具体使用情况，可以看到我这里 &lt;code&gt;cached&lt;/code&gt; 占用了17G的内存。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ free -h
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;             total       used       free     shared    buffers     cached
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Mem:           62G        18G        43G        14G       284M        17G
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-/+ buffers/cache:       1.1G        61G
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Swap:          31G         0B        31G
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;释放-cached&#34;&gt;释放 cached&lt;/h2&gt;
&lt;p&gt;为了安全起见，首先使用 &lt;code&gt;sync&lt;/code&gt; 命令将系统 &lt;code&gt;buffer&lt;/code&gt; 中的数据强制写入硬盘中，然后再执行内存释放命令，其中有3种释放方式，可以根据下方备注选择相应的方式。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 释放 pagecache&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sync
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &amp;gt; /proc/sys/vm/drop_caches
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 释放 dentries and inodes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sync
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &amp;gt; /proc/sys/vm/drop_caches
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 释放 pagecache, dentries and inodes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ sync
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; &amp;gt; /proc/sys/vm/drop_caches
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;还原系统默认配置&#34;&gt;还原系统默认配置&lt;/h2&gt;
&lt;p&gt;释放内存后，再将内存释放方式还原成默认。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
