<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Shell on 七三的小站</title>
        <link>https://www.bg7pbp.com/tags/shell/</link>
        <description>Recent content in Shell on 七三的小站</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>WangYan</copyright>
        <lastBuildDate>Sat, 09 Nov 2024 00:00:00 +0800</lastBuildDate><atom:link href="https://www.bg7pbp.com/tags/shell/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>使用 Oh My Posh 设置自定义提示符</title>
        <link>https://www.bg7pbp.com/p/oh-my-posh-custom-prompt/</link>
        <pubDate>Sat, 09 Nov 2024 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/oh-my-posh-custom-prompt/</guid>
        <description>&lt;h2 id=&#34;目录&#34;&gt;目录  &lt;!-- omit from toc --&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#1-%E5%AE%89%E8%A3%85-nerd-font&#34;&gt;1. 安装 Nerd Font&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#2-%E5%AE%89%E8%A3%85-oh-my-posh&#34;&gt;2. 安装 Oh My Posh&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#21-%E5%AE%89%E8%A3%85-oh-my-posh-for-powershell&#34;&gt;2.1. 安装 Oh My Posh for PowerShell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#22-%E5%AE%89%E8%A3%85-oh-my-posh-for-wsl&#34;&gt;2.2. 安装 Oh My Posh for WSL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#3-%E9%80%89%E6%8B%A9%E5%B9%B6%E5%BA%94%E7%94%A8-oh-my-posh-%E4%B8%BB%E9%A2%98&#34;&gt;3. 选择并应用 Oh My Posh 主题&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#31-%E5%BA%94%E7%94%A8-powershell-%E6%8F%90%E7%A4%BA%E7%AC%A6%E4%B8%BB%E9%A2%98&#34;&gt;3.1. 应用 PowerShell 提示符主题&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#32-%E5%BA%94%E7%94%A8-wsl-%E6%8F%90%E7%A4%BA%E7%AC%A6%E4%B8%BB%E9%A2%98&#34;&gt;3.2. 应用 WSL 提示符主题&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://ohmyposh.dev/&#34;&gt;Oh My Posh&lt;/a&gt; 是适用于任何 shell 的自定义提示引擎，支持使用内置主题和自定义主题，能够为 GIT 提供状态颜色编码和自定义提示符支持。&lt;/p&gt;
&lt;h2 id=&#34;1-安装-nerd-font&#34;&gt;1. 安装 Nerd Font&lt;/h2&gt;
&lt;p&gt;自定义命令提示符通常使用字形来设置样式，若要在终端中查看所有字形，则需要安装 &lt;a href=&#34;https://www.nerdfonts.com/font-downloads&#34;&gt;Nerd Font&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Nerd Font&lt;/code&gt; 是带图标的字库，能够从 Font Awesome、Devicons、Octicons 等图标库中添加了大量额外的字形。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;shell&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&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;oh-my-posh font install
&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;# 直接安装 MesloLGM Nerd 字体&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;oh-my-posh font install meslo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;LGM&lt;/code&gt; 代表标准间距大小， &lt;code&gt;Mono&lt;/code&gt; 用于终端，&lt;code&gt;Propo&lt;/code&gt; 用于GUI界面，&lt;/p&gt;
&lt;h2 id=&#34;2-安装-oh-my-posh&#34;&gt;2. 安装 Oh My Posh&lt;/h2&gt;
&lt;h3 id=&#34;21-安装-oh-my-posh-for-powershell&#34;&gt;2.1. 安装 Oh My Posh for PowerShell&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;shell&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&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;c1&#34;&gt;# https://github.com/JanDeDobbeleer/oh-my-posh/releases/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;winget install JanDeDobbeleer.OhMyPosh -s winget
&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;# 手动添加环境变量&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;nv&#34;&gt;$env&lt;/span&gt;:Path +&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;;C:\Users\user\AppData\Local\Programs\oh-my-posh\bin&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;22-安装-oh-my-posh-for-wsl&#34;&gt;2.2. 安装 Oh My Posh for WSL&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;shell&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -s https://ohmyposh.dev/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash -s&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;3-选择并应用-oh-my-posh-主题&#34;&gt;3. 选择并应用 Oh My Posh 主题&lt;/h2&gt;
&lt;p&gt;可在 &lt;a href=&#34;https://ohmyposh.dev/docs/themes&#34;&gt;Oh My Posh 主题页面&lt;/a&gt; 浏览主题的完整列表。&lt;/p&gt;
&lt;h3 id=&#34;31-应用-powershell-提示符主题&#34;&gt;3.1. 应用 PowerShell 提示符主题&lt;/h3&gt;
&lt;p&gt;首先，修改 PowerShell 执行策略，将 PowerShell 执行策略设置为不受限制。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;shell&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Get-ExecutionPolicy -List &lt;span class=&#34;c1&#34;&gt;# list&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;set-ExecutionPolicy -ExecutionPolicy Unrestricted &lt;span class=&#34;c1&#34;&gt;# add&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine &lt;span class=&#34;c1&#34;&gt;# remove&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;选择主题，并更新 PowerShell 配置文件。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;shell&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&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;new-item -type file -path &lt;span class=&#34;nv&#34;&gt;$profile&lt;/span&gt; -force
&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;# 编辑&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;# C:\Users\WangYan\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;code &lt;span class=&#34;nv&#34;&gt;$PROFILE&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&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;c1&#34;&gt;# 将 jandedobbeleer 替换为你选择的主题。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;oh-my-posh init pwsh --config &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$env&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:POSH_THEMES_PATH\jandedobbeleer.omp.json&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; Invoke-Expression&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;32-应用-wsl-提示符主题&#34;&gt;3.2. 应用 WSL 提示符主题&lt;/h3&gt;
&lt;p&gt;修改配置文件 &lt;code&gt;.profile&lt;/code&gt; 应用主题&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;shell&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt;&amp;gt; ~/.profile &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; EOF
&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;s&#34;&gt;eval &amp;#34;$(oh-my-posh init bash --config /home/wangyan/.cache/oh-my-posh/themes/jandedobbeleer.omp.json)&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;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;shell&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt;&amp;gt; ~/.zshrc &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; EOF
&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;s&#34;&gt;eval &amp;#34;$(oh-my-posh init zsh --config /home/wangyan/.cache/oh-my-posh/themes/jandedobbeleer.omp.json)&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;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;参考文档：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://learn.microsoft.com/zh-cn/windows/terminal/tutorials/custom-prompt-setup#customize-your-powershell-prompt-with-oh-my-posh&#34;&gt;使用 Oh My Posh 为 PowerShell 或 WSL 设置自定义提示符&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>命令行的艺术</title>
        <link>https://www.bg7pbp.com/p/art-of-command-line/</link>
        <pubDate>Wed, 29 Jul 2015 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/art-of-command-line/</guid>
        <description>&lt;h2 id=&#34;目录&#34;&gt;目录  &lt;!-- omit from toc --&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%BF%85%E8%AF%BB&#34;&gt;必读&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%9F%BA%E7%A1%80&#34;&gt;基础&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E6%97%A5%E5%B8%B8%E4%BD%BF%E7%94%A8&#34;&gt;日常使用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E6%96%87%E4%BB%B6%E5%8F%8A%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86&#34;&gt;文件及数据处理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E7%B3%BB%E7%BB%9F%E8%B0%83%E8%AF%95&#34;&gt;系统调试&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%80%E8%A1%8C%E4%BB%A3%E7%A0%81&#34;&gt;一行代码&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%86%B7%E9%97%A8%E4%BD%86%E6%9C%89%E7%94%A8&#34;&gt;冷门但有用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BB%85%E9%99%90-mac-%E7%B3%BB%E7%BB%9F&#34;&gt;仅限 Mac 系统&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E6%9B%B4%E5%A4%9A%E8%B5%84%E6%BA%90&#34;&gt;更多资源&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%85%8D%E8%B4%A3%E5%A3%B0%E6%98%8E&#34;&gt;免责声明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E6%8E%88%E6%9D%83%E6%9D%A1%E6%AC%BE&#34;&gt;授权条款&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;熟练使用命令行是一种常常被忽视或被认为难以掌握的技能，但实际上，它可以提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时发现的一些关于命令行的使用的小技巧的摘要。有些小技巧是非常基础的，而另外一些则是相当复杂的甚至晦涩难懂的。这篇文章并不长，但当你能够熟练掌握这里列出的所有技巧时，你就学会了很多关于命令行的东西了。&lt;/p&gt;
&lt;p&gt;本文转自 &lt;a href=&#34;https://github.com/jlevy/the-art-of-command-line&#34;&gt;《The Art of Command Line》&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://gitter.im/jlevy/the-art-of-command-line?utm_source=badge&amp;amp;utm_medium=badge&amp;amp;utm_campaign=pr-badge&amp;amp;utm_content=badge&#34;&gt;&lt;img src=&#34;https://badges.gitter.im/Join%20Chat.svg&#34; alt=&#34;Join the chat at https://gitter.im/jlevy/the-art-of-command-line&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%BF%85%E8%AF%BB&#34;&gt;必读&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%9F%BA%E7%A1%80&#34;&gt;基础&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E6%97%A5%E5%B8%B8%E4%BD%BF%E7%94%A8&#34;&gt;日常使用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E6%96%87%E4%BB%B6%E5%8F%8A%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86&#34;&gt;文件及数据处理&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E7%B3%BB%E7%BB%9F%E8%B0%83%E8%AF%95&#34;&gt;系统调试&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%80%E8%A1%8C%E4%BB%A3%E7%A0%81&#34;&gt;一行代码&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%86%B7%E9%97%A8%E4%BD%86%E6%9C%89%E7%94%A8&#34;&gt;冷门但有用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BB%85%E9%99%90-mac-%E7%B3%BB%E7%BB%9F&#34;&gt;仅限 Mac 系统&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E6%9B%B4%E5%A4%9A%E8%B5%84%E6%BA%90&#34;&gt;更多资源&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%85%8D%E8%B4%A3%E5%A3%B0%E6%98%8E&#34;&gt;免责声明&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E6%8E%88%E6%9D%83%E6%9D%A1%E6%AC%BE&#34;&gt;授权条款&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;必读&#34;&gt;必读&lt;/h2&gt;
&lt;p&gt;涵盖范围：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这篇文章对刚接触命令行的新手以及具有命令行使用经验的人都有用处。本文致力于做到覆盖面广（尽量包括一切重要的内容），具体（给出最常见的具体的例子）以及简洁（避免一些不必要的东西以及一些偏题的可以在其他地方翻阅到文献的东西）。 每个小技巧在某个特定情境下都是基本的或能够显著地节约时间。&lt;/li&gt;
&lt;li&gt;本文为 Linux 所写，除了&lt;a href=&#34;#%E4%BB%85%E9%99%90-mac-%E7%B3%BB%E7%BB%9F&#34;&gt;仅限 Mac 系统&lt;/a&gt;节。其它节中的大部分内容都适用于其它 Unix 系统或 Mac 系统，甚至 Cygwin。&lt;/li&gt;
&lt;li&gt;本文关注于交互式 Bash，尽管很多技巧适用于其他 shell 或 Bash 脚本。&lt;/li&gt;
&lt;li&gt;本文包括了“标准的”Unix 命令和需要安装特定包的命令，只要它们足够重要。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意事项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为了能在一页内展示尽量多的东西，一些具体的信息会被间接的包含在引用页里。聪明机智的你如果掌握了使用 Google 搜索引擎的基本思路与命令，那么你将可以查阅到更多的详细信息。使用 &lt;code&gt;apt-get&lt;/code&gt;／&lt;code&gt;yum&lt;/code&gt;／&lt;code&gt;dnf&lt;/code&gt;／&lt;code&gt;pacman&lt;/code&gt;／&lt;code&gt;pip&lt;/code&gt;／&lt;code&gt;brew&lt;/code&gt;（以及其它合适的包管理器）来安装新程序。&lt;/li&gt;
&lt;li&gt;使用 &lt;a href=&#34;http://explainshell.com/&#34;&gt;Explainshell&lt;/a&gt; 去获取相关命令、参数、管道等内容的解释。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;基础&#34;&gt;基础&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;学习 Bash 的基础知识。具体来说，输入 &lt;code&gt;man bash&lt;/code&gt; 并至少全文浏览一遍; 它很简单并且不长。其他的 shell 可能很好用，但 Bash 功能强大且几乎所有情况下都是可用的 （ &lt;em&gt;只&lt;/em&gt;学习 zsh，fish 或其他的 shell 的话，在你自己的电脑上会显得很方便，但在很多情况下会限制你，比如当你需要在服务器上工作时）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学习并掌握至少一个基于文本的编辑器。通常 Vim （&lt;code&gt;vi&lt;/code&gt;） 会是你最好的选择。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学会如何使用 &lt;code&gt;man&lt;/code&gt; 命令去阅读文档。学会使用 &lt;code&gt;apropos&lt;/code&gt; 去查找文档。了解有些命令并不对应可执行文件，而是Bash内置的，可以使用 &lt;code&gt;help&lt;/code&gt; 和 &lt;code&gt;help -d&lt;/code&gt; 命令获取帮助信息。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学会使用 &lt;code&gt;&amp;gt;&lt;/code&gt; 和 &lt;code&gt;&amp;lt;&lt;/code&gt; 来重定向输出和输入，学会使用 &lt;code&gt;|&lt;/code&gt; 来重定向管道。明白 &lt;code&gt;&amp;gt;&lt;/code&gt; 会覆盖了输出文件而 &lt;code&gt;&amp;gt;&amp;gt;&lt;/code&gt; 是在文件未添加。了解标准输出 stdout 和标准错误 stderr。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学会使用通配符 &lt;code&gt;*&lt;/code&gt; （或许再算上 &lt;code&gt;?&lt;/code&gt; 和 &lt;code&gt;{&lt;/code&gt;&amp;hellip;&lt;code&gt;}&lt;/code&gt;） 和引用以及引用中 &lt;code&gt;&#39;&lt;/code&gt; 和 &lt;code&gt;&amp;quot;&lt;/code&gt; 的区别。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;熟悉 Bash 任务管理工具：&lt;code&gt;&amp;amp;&lt;/code&gt;，&lt;strong&gt;ctrl-z&lt;/strong&gt;，&lt;strong&gt;ctrl-c&lt;/strong&gt;，&lt;code&gt;jobs&lt;/code&gt;，&lt;code&gt;fg&lt;/code&gt;，&lt;code&gt;bg&lt;/code&gt;，&lt;code&gt;kill&lt;/code&gt; 等。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解 &lt;code&gt;ssh&lt;/code&gt;，以及基本的无密码认证，&lt;code&gt;ssh-agent&lt;/code&gt;，&lt;code&gt;ssh-add&lt;/code&gt; 等。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学会基本的文件管理：&lt;code&gt;ls&lt;/code&gt; 和 &lt;code&gt;ls -l&lt;/code&gt; （了解 &lt;code&gt;ls -l&lt;/code&gt; 中每一列代表的意义），&lt;code&gt;less&lt;/code&gt;，&lt;code&gt;head&lt;/code&gt;，&lt;code&gt;tail&lt;/code&gt; 和 &lt;code&gt;tail -f&lt;/code&gt; （甚至 &lt;code&gt;less +F&lt;/code&gt;），&lt;code&gt;ln&lt;/code&gt; 和 &lt;code&gt;ln -s&lt;/code&gt; （了解硬链接与软链接的区别），&lt;code&gt;chown&lt;/code&gt;，&lt;code&gt;chmod&lt;/code&gt;，&lt;code&gt;du&lt;/code&gt; （硬盘使用情况概述：&lt;code&gt;du -hk *&lt;/code&gt;）。 关于文件系统的管理，学习 &lt;code&gt;df&lt;/code&gt;，&lt;code&gt;mount&lt;/code&gt;，&lt;code&gt;fdisk&lt;/code&gt;，&lt;code&gt;mkfs&lt;/code&gt;，&lt;code&gt;lsblk&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学习基本的网络管理：&lt;code&gt;ip&lt;/code&gt; 或 &lt;code&gt;ifconfig&lt;/code&gt;，&lt;code&gt;dig&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;熟悉正则表达式，以及 &lt;code&gt;grep&lt;/code&gt;／&lt;code&gt;egrep&lt;/code&gt; 里不同参数的作用，例如 &lt;code&gt;-i&lt;/code&gt;，&lt;code&gt;-o&lt;/code&gt;，&lt;code&gt;-A&lt;/code&gt;，和 &lt;code&gt;-B&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学会使用 &lt;code&gt;apt-get&lt;/code&gt;，&lt;code&gt;yum&lt;/code&gt;，&lt;code&gt;dnf&lt;/code&gt; 或 &lt;code&gt;pacman&lt;/code&gt; （取决于你使用的 Linux 发行版）来查找或安装包。确保你的环境中有 &lt;code&gt;pip&lt;/code&gt; 来安装基于 Python 的命令行工具 （部分程序使用 &lt;code&gt;pip&lt;/code&gt; 来安装会很简单）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;日常使用&#34;&gt;日常使用&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在 Bash 中，可以使用 &lt;strong&gt;Tab&lt;/strong&gt; 自动补全参数，使用 &lt;strong&gt;ctrl-r&lt;/strong&gt; 搜索命令行历史。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在 Bash 中，使用 &lt;strong&gt;ctrl-w&lt;/strong&gt; 删除你键入的最后一个单词，使用 &lt;strong&gt;ctrl-u&lt;/strong&gt; 删除整行，使用 &lt;strong&gt;alt-b&lt;/strong&gt; 和 &lt;strong&gt;alt-f&lt;/strong&gt; 按单词移动，使用 &lt;strong&gt;ctrl-k&lt;/strong&gt; 从光标处删除到行尾，使用 &lt;strong&gt;ctrl-l&lt;/strong&gt; 清屏。键入 &lt;code&gt;man readline&lt;/code&gt; 查看 Bash 中的默认快捷键，内容很多。例如 &lt;strong&gt;alt-.&lt;/strong&gt; 循环地移向前一个参数，以及 &lt;strong&gt;alt-&lt;/strong&gt;* 展开通配符。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;你喜欢的话，可以键入 &lt;code&gt;set -o vi&lt;/code&gt; 来使用 vi 风格的快捷键。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;键入 &lt;code&gt;history&lt;/code&gt; 查看命令行历史记录。其中有许多缩写，例如 &lt;code&gt;!$&lt;/code&gt;（最后键入的参数）和 &lt;code&gt;!!&lt;/code&gt;（最后键入的命令），尽管通常被 &lt;strong&gt;ctrl-r&lt;/strong&gt; 和 &lt;strong&gt;alt-.&lt;/strong&gt; 取代。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;回到上一个工作路径：&lt;code&gt;cd -&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你输入命令的时候改变了主意，按下 &lt;strong&gt;alt-#&lt;/strong&gt; 在行首添加 &lt;code&gt;#&lt;/code&gt;（将你输入的命令视为注释），并回车。这样做的话，之后你可以很方便的利用命令行历史回到你刚才输入到一半的命令。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;xargs&lt;/code&gt; （ 或 &lt;code&gt;parallel&lt;/code&gt;）。他们非常给力。注意到你可以控制每行参数个数（&lt;code&gt;-L&lt;/code&gt;）和最大并行数（&lt;code&gt;-P&lt;/code&gt;）。如果你不确定它们是否会按你想的那样工作，先使用 &lt;code&gt;xargs echo&lt;/code&gt; 查看一下。此外，使用 &lt;code&gt;-I{}&lt;/code&gt; 会很方便。例如：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      find . -name &lt;span class=&#34;s1&#34;&gt;&amp;#39;*.py&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs grep some_function
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      cat hosts &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; xargs -I&lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; ssh root@&lt;span class=&#34;o&#34;&gt;{}&lt;/span&gt; hostname&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;pstree -p&lt;/code&gt; 有助于展示进程树。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;pgrep&lt;/code&gt; 和 &lt;code&gt;pkill&lt;/code&gt; 根据名字查找进程或发送信号。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解你可以发往进程的信号的种类。比如，使用 &lt;code&gt;kill -STOP [pid]&lt;/code&gt; 停止一个进程。使用 &lt;code&gt;man 7 signal&lt;/code&gt; 查看详细列表。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;nohup&lt;/code&gt; 或 &lt;code&gt;disown&lt;/code&gt; 使一个后台进程持续运行。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;netstat -lntp&lt;/code&gt; 或 &lt;code&gt;ss -plat&lt;/code&gt; 检查哪些进程在监听端口（默认是检查 TCP 端口; 使用参数 &lt;code&gt;-u&lt;/code&gt; 检查 UDP 端口）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;有关打开套接字和文件，请参阅 &lt;code&gt;lsof&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用&lt;code&gt;alias&lt;/code&gt;来创建常用命令的快捷形式。例如：&lt;code&gt;alias ll=&#39;ls -latr&#39;&lt;/code&gt;使你可以方便地执行&lt;code&gt;ls -latr&lt;/code&gt;命令。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在 Bash 脚本中，使用 &lt;code&gt;set -x&lt;/code&gt; 去调试输出，尽可能的使用严格模式，使用 &lt;code&gt;set -e&lt;/code&gt; 令脚本在发生错误时退出而不是继续运行，使用 &lt;code&gt;set -o pipefail&lt;/code&gt; 严谨地对待错误（尽管问题可能很微妙）。当牵扯到很多脚本时，使用 &lt;code&gt;trap&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在 Bash 脚本中，子 shell（使用括号&lt;code&gt;(...)&lt;/code&gt;）是一种便捷的方式去组织参数。一个常见的例子是临时地移动工作路径，代码如下：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# do something in current dir&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;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; /some/other/dir &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; other-command&lt;span class=&#34;o&#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;# continue in original dir&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在 Bash 中，注意到其中有许多形式的扩展。检查变量是否存在：&lt;code&gt;${name:?error message}&lt;/code&gt;。例如，当 Bash 脚本需要一个参数时，可以使用这样的代码 &lt;code&gt;input_file=${1:?usage: $0 input_file}&lt;/code&gt;。数学表达式：&lt;code&gt;i=$(( (i + 1) % 5 ))&lt;/code&gt;。序列：&lt;code&gt;{1..10}&lt;/code&gt;。 截断字符串：&lt;code&gt;${var%suffix}&lt;/code&gt; 和 &lt;code&gt;${var#prefix}&lt;/code&gt;。例如，假设 &lt;code&gt;var=foo.pdf&lt;/code&gt;，那么 &lt;code&gt;echo ${var%.pdf}.txt&lt;/code&gt; 将输出 &lt;code&gt;foo.txt&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;通过使用 &lt;code&gt;&amp;lt;(some command)&lt;/code&gt; 可以将输出视为文件。例如，对比本地文件 &lt;code&gt;/etc/hosts&lt;/code&gt; 和一个远程文件：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;sh&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      diff /etc/hosts &amp;lt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;ssh somehost cat /etc/hosts&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;了解 Bash 中的“here documents”，例如 &lt;code&gt;cat &amp;lt;&amp;lt;EOF ...&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在 Bash 中，同时重定向标准输出和标准错误，&lt;code&gt;some-command &amp;gt;logfile 2&amp;gt;&amp;amp;1&lt;/code&gt;。通常，为了保证命令不会在标准输入里残留一个打开了的文件句柄导致你当前所在的终端无法操作，添加 &lt;code&gt;&amp;lt;/dev/null&lt;/code&gt; 是一个好习惯。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;man ascii&lt;/code&gt; 查看具有十六进制和十进制值的ASCII表。&lt;code&gt;man unicode&lt;/code&gt;，&lt;code&gt;man utf-8&lt;/code&gt;，以及 &lt;code&gt;man latin1&lt;/code&gt; 有助于你去了解通用的编码信息。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;screen&lt;/code&gt; 或 &lt;a href=&#34;https://tmux.github.io/&#34;&gt;&lt;code&gt;tmux&lt;/code&gt;&lt;/a&gt; 来使用多个屏幕，当你在使用 ssh 时（保存 session 信息）将尤为有用。另一个轻量级的解决方案是 &lt;code&gt;dtach&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ssh 中，了解如何使用 &lt;code&gt;-L&lt;/code&gt; 或 &lt;code&gt;-D&lt;/code&gt;（偶尔需要用 &lt;code&gt;-R&lt;/code&gt;）去开启隧道是非常有用的，例如当你需要从一台远程服务器上访问 web。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对 ssh 设置做一些小优化可能是很有用的，例如这个 &lt;code&gt;~/.ssh/config&lt;/code&gt; 文件包含了防止特定环境下断开连接、压缩数据、多通道等选项：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;text&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;      TCPKeepAlive=yes
      ServerAliveInterval=15
      ServerAliveCountMax=6
      Compression=yes
      ControlMaster auto
      ControlPath /tmp/%r@%h:%p
      ControlPersist yes&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;部分其他的关于 ssh 的选项是安全敏感且应当小心启用的。例如在可信任的网络中：&lt;code&gt;StrictHostKeyChecking=no&lt;/code&gt;，&lt;code&gt;ForwardAgent=yes&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;获取文件的八进制格式权限，使用类似如下的代码：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;sh&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      stat -c &lt;span class=&#34;s1&#34;&gt;&amp;#39;%A %a %n&amp;#39;&lt;/span&gt; /etc/timezone&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;a href=&#34;https://github.com/mooz/percol&#34;&gt;&lt;code&gt;percol&lt;/code&gt;&lt;/a&gt; 或者 &lt;a href=&#34;https://github.com/junegunn/fzf&#34;&gt;&lt;code&gt;fzf&lt;/code&gt;&lt;/a&gt; 可以交互式地从另一个命令输出中选取值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;fpp&lt;/code&gt;（&lt;a href=&#34;https://github.com/facebook/PathPicker&#34;&gt;PathPicker&lt;/a&gt;）可以与基于另一个命令(例如 &lt;code&gt;git&lt;/code&gt;）输出的文件交互。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将 web 服务器上当前目录下所有的文件（以及子目录）暴露给你所处网络的所有用户，使用：&lt;code&gt;python -m SimpleHTTPServer 7777&lt;/code&gt; （使用端口 7777 和 Python 2）或&lt;code&gt;python -m http.server 7777&lt;/code&gt; （使用端口 7777 和 Python 3）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以某种权限执行命令，使用&lt;code&gt;sudo&lt;/code&gt;（root 权限）或&lt;code&gt;sudo -u&lt;/code&gt;（其他用户）。使用&lt;code&gt;su&lt;/code&gt;或者&lt;code&gt;sudo bash&lt;/code&gt;来启动一个以对应用户权限运行的 shell。使用&lt;code&gt;su -&lt;/code&gt;模拟其他用户的登录。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;文件及数据处理&#34;&gt;文件及数据处理&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;在当前路径下通过文件名定位一个文件，&lt;code&gt;find . -iname &#39;*something*&#39;&lt;/code&gt;（或类似的）。在所有路径下通过文件名查找文件，使用 &lt;code&gt;locate something&lt;/code&gt; （但请记住 &lt;code&gt;updatedb&lt;/code&gt; 可能没有对最近新建的文件建立索引）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;a href=&#34;https://github.com/ggreer/the_silver_searcher&#34;&gt;&lt;code&gt;ag&lt;/code&gt;&lt;/a&gt; 在源代码或数据文件里检索（比 &lt;code&gt;grep -r&lt;/code&gt; 更好）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;将HTML转为文本：&lt;code&gt;lynx -dump -stdin&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Markdown，HTML，以及所有文档格式之间的转换，试试 &lt;a href=&#34;http://pandoc.org/&#34;&gt;&lt;code&gt;pandoc&lt;/code&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你不得不处理 XML，&lt;code&gt;xmlstarlet&lt;/code&gt; 宝刀未老。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;a href=&#34;http://stedolan.github.io/jq/&#34;&gt;&lt;code&gt;jq&lt;/code&gt;&lt;/a&gt; 处理 JSON。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Excel 或 CSV 文件的处理，&lt;a href=&#34;https://github.com/onyxfish/csvkit&#34;&gt;csvkit&lt;/a&gt; 提供了 &lt;code&gt;in2csv&lt;/code&gt;，&lt;code&gt;csvcut&lt;/code&gt;，&lt;code&gt;csvjoin&lt;/code&gt;，&lt;code&gt;csvgrep&lt;/code&gt; 等工具。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关于 Amazon S3，&lt;a href=&#34;https://github.com/s3tools/s3cmd&#34;&gt;&lt;code&gt;s3cmd&lt;/code&gt;&lt;/a&gt; 很方便而 &lt;a href=&#34;https://github.com/bloomreach/s4cmd&#34;&gt;&lt;code&gt;s4cmd&lt;/code&gt;&lt;/a&gt; 更快。Amazon 官方的 &lt;a href=&#34;https://github.com/aws/aws-cli&#34;&gt;&lt;code&gt;aws&lt;/code&gt;&lt;/a&gt; 是其他 AWS 相关工作的基础。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解如何使用 &lt;code&gt;sort&lt;/code&gt; 和 &lt;code&gt;uniq&lt;/code&gt;，包括 uniq 的 &lt;code&gt;-u&lt;/code&gt; 参数和 &lt;code&gt;-d&lt;/code&gt; 参数，详见后文一行代码节。另外可以了解一下 &lt;code&gt;comm&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解如何使用 &lt;code&gt;cut&lt;/code&gt;，&lt;code&gt;paste&lt;/code&gt; 和 &lt;code&gt;join&lt;/code&gt; 来更改文件。很多人都会使用 &lt;code&gt;cut&lt;/code&gt;，但几乎都不会使用 &lt;code&gt;join&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解如何运用 &lt;code&gt;wc&lt;/code&gt; 去计算新行数（&lt;code&gt;-l&lt;/code&gt;），字符数（&lt;code&gt;-m&lt;/code&gt;），单词数（&lt;code&gt;-w&lt;/code&gt;）以及字节数（&lt;code&gt;-c&lt;/code&gt;）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解如何使用 &lt;code&gt;tee&lt;/code&gt; 将标准输入复制到文件甚至标准输出，例如 &lt;code&gt;ls -al | tee file.txt&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解语言环境对许多命令行工具的微妙影响，包括排序的顺序和性能。大多数 Linux 的安装过程会将 &lt;code&gt;LANG&lt;/code&gt; 或其他有关的变量设置为符合本地的设置。意识到当你改变语言环境时，排序的结果可能会改变。明白国际化可能会时 sort 或其他命令运行效率下降&lt;em&gt;许多倍&lt;/em&gt;。某些情况下（例如集合运算）你可以放心的使用 &lt;code&gt;export LC_ALL=C&lt;/code&gt; 来忽略掉国际化并使用基于字节的顺序。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解 &lt;code&gt;awk&lt;/code&gt; 和 &lt;code&gt;sed&lt;/code&gt; 关于数据的简单处理的用法。例如，将文本文件中第三列的所有数字求和：&lt;code&gt;awk &#39;{ x += $3 } END { print x }&#39;&lt;/code&gt;. 这可能比同等作用的 Python 代码块三倍且代码量少三倍。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;替换一个或多个文件中出现的字符串：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;sh&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      perl -pi.bak -e &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/old-string/new-string/g&amp;#39;&lt;/span&gt; my-files-*.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;依据某种模式批量重命名多个文件，使用 &lt;code&gt;rename&lt;/code&gt;。对于复杂的重命名规则，&lt;a href=&#34;https://github.com/jlevy/repren&#34;&gt;&lt;code&gt;repren&lt;/code&gt;&lt;/a&gt; 或许有帮助。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;sh&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;c1&#34;&gt;# Recover backup files foo.bak -&amp;gt; foo:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      rename &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/\.bak$//&amp;#39;&lt;/span&gt; *.bak
&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;# Full rename of filenames，directories，and contents foo -&amp;gt; bar:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      repren --full --preserve-case --from foo --to bar .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;shuf&lt;/code&gt; 从一个文件中随机选取行。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解 &lt;code&gt;sort&lt;/code&gt; 的参数。处理数字方面，使用 &lt;code&gt;-n&lt;/code&gt; 或者 &lt;code&gt;-h&lt;/code&gt; 来处理可读性数字（例如 &lt;code&gt;du -h&lt;/code&gt; 的输出）。明白键的工作原理（&lt;code&gt;-t&lt;/code&gt; 和 &lt;code&gt;-k&lt;/code&gt;）。例如，注意到你需要 &lt;code&gt;-k1，1&lt;/code&gt; 来仅按第一个域来排序，而 &lt;code&gt;-k1&lt;/code&gt; 意味着按整行排序。稳定排序（&lt;code&gt;sort -s&lt;/code&gt;）在某些情况下很有用。例如，以第二个域为主关键字，第一个域为次关键字进行排序，你可以使用 &lt;code&gt;sort -k1，1 | sort -s -k2，2&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你想在 Bash 命令行中写 tab 制表符，按下 &lt;strong&gt;ctrl-v&lt;/strong&gt; &lt;strong&gt;[Tab]&lt;/strong&gt; 或键入 &lt;code&gt;$&#39;\t&#39;&lt;/code&gt; （后者可能更好，因为你可以复制粘贴它）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;标准的源代码对比及合并工具是 &lt;code&gt;diff&lt;/code&gt; 和 &lt;code&gt;patch&lt;/code&gt;。使用 &lt;code&gt;diffstat&lt;/code&gt; 查看变更总览数据。注意到 &lt;code&gt;diff -r&lt;/code&gt; 对整个文件夹有效。使用 &lt;code&gt;diff -r tree1 tree2 | diffstat&lt;/code&gt; 查看变更总览数据。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;对于二进制文件，使用 &lt;code&gt;hd&lt;/code&gt; 使其以十六进制显示以及使用 &lt;code&gt;bvi&lt;/code&gt; 来编辑二进制。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;同样对于二进制文件，使用 &lt;code&gt;strings&lt;/code&gt;（包括 &lt;code&gt;grep&lt;/code&gt; 等等）允许你查找一些文本。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;二进制文件对比（Delta 压缩），使用 &lt;code&gt;xdelta3&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;iconv&lt;/code&gt; 更改文本编码。而更高级的用法，可以使用 &lt;code&gt;uconv&lt;/code&gt;，它支持一些高级的 Unicode 功能。例如，这条命令将所有元音字母转为小写并移除了：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;sh&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      uconv -f utf-8 -t utf-8 -x &lt;span class=&#34;s1&#34;&gt;&amp;#39;::Any-Lower; ::Any-NFD; [:Nonspacing Mark:] &amp;gt;; ::Any-NFC; &amp;#39;&lt;/span&gt; &amp;lt; input.txt &amp;gt; output.txt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;拆分文件，查看 &lt;code&gt;split&lt;/code&gt;（按大小拆分）和 &lt;code&gt;csplit&lt;/code&gt;（按模式拆分）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;zless&lt;/code&gt;，&lt;code&gt;zmore&lt;/code&gt;，&lt;code&gt;zcat&lt;/code&gt; 和 &lt;code&gt;zgrep&lt;/code&gt;对压缩过的文件进行操作。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;系统调试&#34;&gt;系统调试&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;curl&lt;/code&gt; 和 &lt;code&gt;curl -I&lt;/code&gt; 可以便捷地被应用于 web 调试中，它们的好兄弟 &lt;code&gt;wget&lt;/code&gt; 也可以，或者是更潮的 &lt;a href=&#34;https://github.com/jakubroztocil/httpie&#34;&gt;&lt;code&gt;httpie&lt;/code&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;iostat&lt;/code&gt;、&lt;code&gt;netstat&lt;/code&gt;、&lt;code&gt;top&lt;/code&gt; （&lt;code&gt;htop&lt;/code&gt; 更佳）和 &lt;code&gt;dstat&lt;/code&gt; 去获取硬盘、cpu 和网络的状态。熟练掌握这些工具可以使你快速的对系统的当前状态有一个大概的认识。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若要对系统有一个深度的总体认识，使用 &lt;a href=&#34;https://github.com/nicolargo/glances&#34;&gt;&lt;code&gt;glances&lt;/code&gt;&lt;/a&gt;。它在一个终端窗口中向你提供一些系统级的数据。这对于快速的检查各个子系统非常有帮助。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;若要了解内存状态，运行并理解 &lt;code&gt;free&lt;/code&gt; 和 &lt;code&gt;vmstat&lt;/code&gt; 的输出。尤其注意“cached”的值，它指的是 Linux 内核用来作为文件缓存的内存大小，因此它与空闲内存无关。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Java 系统调试则是一件截然不同的事，一个可以用于 Oracle 的 JVM 或其他 JVM 上的调试的小技巧是你可以运行 &lt;code&gt;kill -3 &amp;lt;pid&amp;gt;&lt;/code&gt; 同时一个完整的栈轨迹和堆概述（包括 GC 的细节）会被保存到标准输出/日志文件。JDK 中的 &lt;code&gt;jps&lt;/code&gt;，&lt;code&gt;jstat&lt;/code&gt;，&lt;code&gt;jstack&lt;/code&gt;，&lt;code&gt;jmap&lt;/code&gt; 很有用。&lt;a href=&#34;https://github.com/aragozin/jvm-tools&#34;&gt;SJK tools&lt;/a&gt; 更高级.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;mtr&lt;/code&gt; 去跟踪路由，用于确定网络问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用 &lt;code&gt;ncdu&lt;/code&gt; 来查看磁盘使用情况，它比常用的命令，如 &lt;code&gt;du -sh *&lt;/code&gt;，更节省时间。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;查找正在使用带宽的套接字连接或进程，使用 &lt;code&gt;iftop&lt;/code&gt; 或 &lt;code&gt;nethogs&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ab&lt;/code&gt; 工具（捆绑于 Apache）可以简单粗暴地检查 web 服务器的性能。对于更复杂的负载测试，使用 &lt;code&gt;siege&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;wireshark&lt;/code&gt;，&lt;code&gt;tshark&lt;/code&gt; 和 &lt;code&gt;ngrep&lt;/code&gt; 可用于复杂的网络调试。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解 &lt;code&gt;strace&lt;/code&gt; 和 &lt;code&gt;ltrace&lt;/code&gt;。这俩工具在你的程序运行失败、挂起甚至崩溃，而你却不知道为什么或你想对性能有个总体的认识的时候是非常有用的。注意 profile 参数（&lt;code&gt;-c&lt;/code&gt;）和附加到一个运行的进程参数 （&lt;code&gt;-p&lt;/code&gt;）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解使用 &lt;code&gt;ldd&lt;/code&gt; 来检查共享库。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;了解如何运用 &lt;code&gt;gdb&lt;/code&gt; 连接到一个运行着的进程并获取它的堆栈轨迹。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;学会使用 &lt;code&gt;/proc&lt;/code&gt;。它在调试正在出现的问题的时候有时会效果惊人。比如：&lt;code&gt;/proc/cpuinfo&lt;/code&gt;，&lt;code&gt;/proc/xxx/cwd&lt;/code&gt;，&lt;code&gt;/proc/xxx/exe&lt;/code&gt;，&lt;code&gt;/proc/xxx/fd/&lt;/code&gt;，&lt;code&gt;/proc/xxx/smaps&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;当调试一些之前出现的问题的时候，&lt;code&gt;sar&lt;/code&gt; 非常有用。它展示了 cpu、内存以及网络等的历史数据。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关于更深层次的系统分析以及性能分析，看看 &lt;code&gt;stap&lt;/code&gt;（&lt;a href=&#34;https://sourceware.org/systemtap/wiki&#34;&gt;SystemTap&lt;/a&gt;），&lt;a href=&#34;http://en.wikipedia.org/wiki/Perf_(Linux)&#34;&gt;&lt;code&gt;perf&lt;/code&gt;&lt;/a&gt;，以及&lt;a href=&#34;https://github.com/draios/sysdig&#34;&gt;&lt;code&gt;sysdig&lt;/code&gt;&lt;/a&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;查看你当前使用的系统，使用 &lt;code&gt;uname&lt;/code&gt; 或者 &lt;code&gt;uname -a&lt;/code&gt; （Unix／kernel 信息） or &lt;code&gt;lsb_release -a&lt;/code&gt; （Linux 发行版信息）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无论什么东西工作得很欢乐时试试 &lt;code&gt;dmesg&lt;/code&gt;（可能是硬件或驱动问题）。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;一行代码&#34;&gt;一行代码&lt;/h2&gt;
&lt;p&gt;一些命令组合的例子：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当你需要对文本文件做集合交、并、差运算时，结合使用 &lt;code&gt;sort&lt;/code&gt;/&lt;code&gt;uniq&lt;/code&gt; 很有帮助。假设 &lt;code&gt;a&lt;/code&gt; 与 &lt;code&gt;b&lt;/code&gt; 是两内容不同的文件。这种方式效率很高，并且在小文件和上G的文件上都能运用 （&lt;code&gt;sort&lt;/code&gt; 不被内存大小约束，尽管在 &lt;code&gt;/tmp&lt;/code&gt; 在一个小的根分区上时你可能需要 &lt;code&gt;-T&lt;/code&gt; 参数），参阅前文中关于 &lt;code&gt;LC_ALL&lt;/code&gt; 和 &lt;code&gt;sort&lt;/code&gt; 的 &lt;code&gt;-u&lt;/code&gt; 参数的部分。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;sh&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      cat a b &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq &amp;gt; c   &lt;span class=&#34;c1&#34;&gt;# c is a union b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      cat a b &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq -d &amp;gt; c   &lt;span class=&#34;c1&#34;&gt;# c is a intersect b&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      cat a b b &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq -u &amp;gt; c   &lt;span class=&#34;c1&#34;&gt;# c is set difference a - b&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;grep . *&lt;/code&gt; 来阅读检查目录下所有文件的内容，例如检查一个充满配置文件的目录比如 &lt;code&gt;/sys&lt;/code&gt;、&lt;code&gt;/proc&lt;/code&gt;、&lt;code&gt;/etc&lt;/code&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;计算文本文件第三列中所有数的和（可能比同等作用的 Python 代码快三倍且代码量少三倍）：&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;sh&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{ x += $3 } END { print x }&amp;#39;&lt;/span&gt; myfile&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;如果你想在文件树上查看大小\日期，这可能看起来像递归版的 &lt;code&gt;ls -l&lt;/code&gt; 但比 &lt;code&gt;ls -lR&lt;/code&gt; 更易于理解：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;sh&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      find . -type f -ls&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;假设你有一个类似于 web 服务器日志文件的文本文件，并且一个确定的值只会出现在某些行上，假设一个 &lt;code&gt;acct_id&lt;/code&gt; 参数在URI中。如果你想计算出每个 &lt;code&gt;acct_id&lt;/code&gt; 值有多少次请求，使用如下代码：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;sh&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      cat access.log &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; egrep -o &lt;span class=&#34;s1&#34;&gt;&amp;#39;acct_id=[0-9]+&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; cut -d&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; -f2 &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; uniq -c &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort -rn&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;运行这个函数从这篇文档中随机获取一条小技巧（解析 Markdown 文件并抽取项目）：&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;sh&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;function&lt;/span&gt; taocl&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#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;        curl -s https://raw.githubusercontent.com/jlevy/the-art-of-command-line/master/README.md &lt;span class=&#34;p&#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;          pandoc -f markdown -t html &lt;span class=&#34;p&#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;          xmlstarlet fo --html --dropdtd &lt;span class=&#34;p&#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;          xmlstarlet sel -t -v &lt;span class=&#34;s2&#34;&gt;&amp;#34;(html/body/ul/li[count(p)&amp;gt;0])[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$RANDOM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; mod last()+1]&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#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;          xmlstarlet unesc &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; fmt -80
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;冷门但有用&#34;&gt;冷门但有用&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;expr&lt;/code&gt;：计算表达式或正则匹配&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;m4&lt;/code&gt;：简单地宏处理器&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;yes&lt;/code&gt;：多次打印字符串&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cal&lt;/code&gt;：漂亮的日历&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;env&lt;/code&gt;：执行一个命令（脚本文件中很有用）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;printenv&lt;/code&gt;：打印环境变量（调试时或在使用脚本文件时很有用）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;look&lt;/code&gt;：查找以特定字符串开头的单词&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cut&lt;/code&gt;、&lt;code&gt;paste&lt;/code&gt; 和 &lt;code&gt;join&lt;/code&gt;：数据修改&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;fmt&lt;/code&gt;：格式化文本段落&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;pr&lt;/code&gt;：将文本格式化成页/列形式&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;fold&lt;/code&gt;：包裹文本中的几行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;column&lt;/code&gt;：将文本格式化成多列或表格&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;expand&lt;/code&gt; 和 &lt;code&gt;unexpand&lt;/code&gt;：制表符与空格之间转换&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;nl&lt;/code&gt;：添加行号&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;seq&lt;/code&gt;：打印数字&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;bc&lt;/code&gt;：计算器&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;factor&lt;/code&gt;：分解因数&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;gpg&lt;/code&gt;：加密并签名文件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;toe&lt;/code&gt;：terminfo entries 列表&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;nc&lt;/code&gt;：网络调试及数据传输&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;socat&lt;/code&gt;：套接字代理，与 &lt;code&gt;netcat&lt;/code&gt; 类似&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;slurm&lt;/code&gt;：网络可视化&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;dd&lt;/code&gt;：文件或设备间传输数据&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;file&lt;/code&gt;：确定文件类型&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tree&lt;/code&gt;：以树的形式显示路径和文件，类似于递归的 &lt;code&gt;ls&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;stat&lt;/code&gt;：文件信息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tac&lt;/code&gt;：反向输出文件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;shuf&lt;/code&gt;：文件中随机选取几行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;comm&lt;/code&gt;：一行一行的比较排序过的文件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;pv&lt;/code&gt;：监视通过管道的数据&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;hd&lt;/code&gt; 和 &lt;code&gt;bvi&lt;/code&gt;：保存或编辑二进制文件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;strings&lt;/code&gt;：从二进制文件中抽取文本&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;tr&lt;/code&gt;：转换字母&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;iconv&lt;/code&gt; 或 &lt;code&gt;uconv&lt;/code&gt;：简易的文件编码&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;split&lt;/code&gt; 和 &lt;code&gt;csplit&lt;/code&gt;：分割文件&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;units&lt;/code&gt;：将一种计量单位转换为另一种等效的计量单位（参阅 &lt;code&gt;/usr/share/units/definitions.units&lt;/code&gt;）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;7z&lt;/code&gt;：高比例的文件压缩&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ldd&lt;/code&gt;：动态库信息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;nm&lt;/code&gt;：提取 obj 文件中的符号&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ab&lt;/code&gt;：性能分析 web 服务器&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;strace&lt;/code&gt;：系统调用调试&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;mtr&lt;/code&gt;：更好的网络调试跟踪工具&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;cssh&lt;/code&gt;：可视化的并发 shell&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;rsync&lt;/code&gt;：通过 ssh 或本地文件系统同步文件和文件夹&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;wireshark&lt;/code&gt; 和 &lt;code&gt;tshark&lt;/code&gt;：抓包和网络调试工具&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ngrep&lt;/code&gt;：网络层的 grep&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;host&lt;/code&gt; 和 &lt;code&gt;dig&lt;/code&gt;：DNS 查找&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;lsof&lt;/code&gt;：列出当前系统打开文件的工具以及查看端口信息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;dstat&lt;/code&gt;：系统状态查看&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/nicolargo/glances&#34;&gt;&lt;code&gt;glances&lt;/code&gt;&lt;/a&gt;：高层次的多子系统总览&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;iostat&lt;/code&gt;：CPU 和硬盘状态&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;htop&lt;/code&gt;：top 的加强版&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;last&lt;/code&gt;：登入记录&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;w&lt;/code&gt;：查看处于登录状态的用户&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;id&lt;/code&gt;：用户/组 ID 信息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;sar&lt;/code&gt;：系统历史数据&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;iftop&lt;/code&gt; 或 &lt;code&gt;nethogs&lt;/code&gt;：套接字及进程的网络利用&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;ss&lt;/code&gt;：套接字数据&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;dmesg&lt;/code&gt;：引导及系统错误信息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;hdparm&lt;/code&gt;：SATA/ATA 磁盘更改及性能分析&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;lsb_release&lt;/code&gt;：Linux 发行版信息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;lsblk&lt;/code&gt;：列出块设备信息：以树形展示你的磁盘以及磁盘分区信息&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;lshw&lt;/code&gt;，&lt;code&gt;lscpu&lt;/code&gt;，&lt;code&gt;lspci&lt;/code&gt;，&lt;code&gt;lsusb&lt;/code&gt; 和 &lt;code&gt;dmidecode&lt;/code&gt;：查看硬件信息，包括 CPU、BIOS、RAID、显卡、USB设备等&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;fortune&lt;/code&gt;，&lt;code&gt;ddate&lt;/code&gt; 和 &lt;code&gt;sl&lt;/code&gt;：额，这主要取决于你是否认为蒸汽火车和莫名其妙的名人名言是否“有用”&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;仅限-mac-系统&#34;&gt;仅限 Mac 系统&lt;/h2&gt;
&lt;p&gt;以下是&lt;em&gt;仅限于&lt;/em&gt; Mac 系统的技巧&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;用 &lt;code&gt;brew&lt;/code&gt; （Homebrew）或者 &lt;code&gt;port&lt;/code&gt; （MacPorts）进行包管理。这些可以用来在 Mac 系统上安装以上的大多数命令。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用 &lt;code&gt;pbcopy&lt;/code&gt; 复制任何命令的输出到桌面应用，用 &lt;code&gt;pbpaste&lt;/code&gt; 粘贴输入。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;用 &lt;code&gt;open&lt;/code&gt; 或者 &lt;code&gt;open -a /Applications/Whatever.app&lt;/code&gt; 使用桌面应用打开文件。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Spotlight： 用 &lt;code&gt;mdfind&lt;/code&gt; 搜索文件，用 &lt;code&gt;mdls&lt;/code&gt; 列出元数据（例如照片的 EXIF 信息）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;注意 Mac 系统是基于 BSD UNIX 的，许多命令（例如 &lt;code&gt;ps&lt;/code&gt;，&lt;code&gt;ls&lt;/code&gt;，&lt;code&gt;tail&lt;/code&gt;，&lt;code&gt;awk&lt;/code&gt;，&lt;code&gt;sed&lt;/code&gt;）都和 Linux 中有些微的不同，这些极大的被 System V-style Unix 和 GNU 工具影响。你可以通过标题为 &amp;ldquo;BSD General Commands Manual&amp;rdquo; 的 man 页面发现这些不同。在有些情况下 GNU 版本的命令也可能被安装（例如 &lt;code&gt;gawk&lt;/code&gt; 和 &lt;code&gt;gsed&lt;/code&gt; 对应 GNU 中的 awk 和 sed ）。如果要写跨平台的 Bash 脚本，避免使用这些命令（例如，考虑 Python 或者 &lt;code&gt;perl&lt;/code&gt; ）或者经过仔细的测试。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;更多资源&#34;&gt;更多资源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/alebcay/awesome-shell&#34;&gt;awesome-shell&lt;/a&gt;：一份精心组织的命令行工具及资源的列表。&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://redsymbol.net/articles/unofficial-bash-strict-mode/&#34;&gt;Strict mode&lt;/a&gt;：为了编写更好的脚本文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;免责声明&#34;&gt;免责声明&lt;/h2&gt;
&lt;p&gt;除去特别微小的任务，记录下这些代码以便他人查看。责任往往伴随着能力，&lt;em&gt;可以&lt;/em&gt;做并不意味着应该做。&lt;/p&gt;
&lt;h2 id=&#34;授权条款&#34;&gt;授权条款&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;http://creativecommons.org/licenses/by-sa/4.0/&#34;&gt;&lt;img src=&#34;https://i.creativecommons.org/l/by-sa/4.0/88x31.png&#34; alt=&#34;Creative Commons License&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文使用授权协议 &lt;a href=&#34;http://creativecommons.org/licenses/by-sa/4.0/&#34;&gt;Creative Commons Attribution-ShareAlike 4.0 International License&lt;/a&gt;。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Transmission 一键安装包</title>
        <link>https://www.bg7pbp.com/p/transmission-one-click-install/</link>
        <pubDate>Fri, 26 Oct 2012 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/transmission-one-click-install/</guid>
        <description>&lt;p&gt;&lt;a href=&#34;http://www.transmission.com/&#34;&gt;Transmission&lt;/a&gt; 跟 &lt;a href=&#34;http://libtorrent.rakshasa.no/&#34;&gt;rtorrent&lt;/a&gt; 和 &lt;a href=&#34;http://deluge-torrent.org/&#34;&gt;Deluge&lt;/a&gt; 一样都是linux上非常流行的bt客户端。Transmission一键安装包是使用Linux Shell语言编写，用于在Linux操作系统上一键安装Transmission。&lt;/p&gt;
&lt;p&gt;详细介绍及安装步骤请前往项目地址查看。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/wangyan/trans&#34;&gt;https://github.com/wangyan/trans&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;补充说明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持32位和64位系统&lt;/li&gt;
&lt;li&gt;配置文件路径是 /usr/local/transmission/etc/settings.json.bak&lt;/li&gt;
&lt;li&gt;官方文档地址：&lt;a href=&#34;https://trac.transmissionbt.com/wiki&#34;&gt;https://trac.transmissionbt.com/wiki&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>LANMP 一键安装包正式发布</title>
        <link>https://www.bg7pbp.com/p/lanmp-one-click-install/</link>
        <pubDate>Thu, 02 Aug 2012 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/lanmp-one-click-install/</guid>
        <description>&lt;h2 id=&#34;目录&#34;&gt;目录  &lt;!-- omit from toc --&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#%E9%A1%B9%E7%9B%AE%E4%B8%BB%E9%A1%B5&#34;&gt;项目主页：&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3&#34;&gt;帮助文档：&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8&#34;&gt;安装和使用&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E8%81%94%E7%B3%BB%E6%96%B9%E5%BC%8F&#34;&gt;联系方式&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LANMP 指的是 Linux + Apache + Nginx + MySQL + PHP 运行环境。LANMP 一键安装包是用于在 Linux 系统中自动安装和配置 LANMP 运行环境。&lt;/p&gt;
&lt;p&gt;关于 LANMP 一键安装包的简介、特点以及安装使用方法，下面项目主页和帮助文档中有很详细说明，不再重复介绍。&lt;/p&gt;
&lt;h2 id=&#34;项目主页&#34;&gt;项目主页：&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/wangyan/lanmp/&#34;&gt;https://github.com/wangyan/lanmp/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;帮助文档&#34;&gt;帮助文档：&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/wangyan/lanmp/wiki&#34;&gt;https://github.com/wangyan/lanmp/wiki&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;安装和使用&#34;&gt;安装和使用&lt;/h2&gt;
&lt;p&gt;详细安装和使用说明请参阅  &lt;a href=&#34;https://github.com/wangyan/lanmp/wiki&#34;&gt;Wiki 文档&lt;/a&gt;&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yum -y install screen git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;screen -S lanmp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/wangyan/lanmp.git
&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;cd&lt;/span&gt; lanmp &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;虚拟主机管理&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; lanmp/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./vhost_add.sh &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;./vhost_del.sh &lt;span class=&#34;c1&#34;&gt;#删除&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;联系方式&#34;&gt;联系方式&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Email: &lt;a href=&#34;mailto:WangYan@188.com&#34;&gt;WangYan@188.com&lt;/a&gt; （推荐）
Gtalk: &lt;a href=&#34;mailto:myidwy@gmail.com&#34;&gt;myidwy@gmail.com&lt;/a&gt;
Q Q群：138082163
Twitter：@wang_yan&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;结语：该LANMP一键安装包，虽然个人用了很长时间，期间也一直在修修补补，但肯定还不完善，欢迎大家提出意见哈。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Linux自动备份Shell脚本</title>
        <link>https://www.bg7pbp.com/p/linux-auto-backup-shell-script/</link>
        <pubDate>Wed, 21 Dec 2011 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/linux-auto-backup-shell-script/</guid>
        <description>&lt;h2 id=&#34;目录&#34;&gt;目录  &lt;!-- omit from toc --&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%80%E7%89%B9%E7%82%B9%E4%B8%8E%E5%8A%9F%E8%83%BD&#34;&gt;一、特点与功能&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BA%8C%E4%B8%8B%E8%BD%BD%E4%B8%8E%E4%BD%BF%E7%94%A8&#34;&gt;二、下载与使用&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#21%E4%B8%8B%E8%BD%BD%E8%84%9A%E6%9C%AC&#34;&gt;2.1、下载脚本&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#22%E8%AE%BE%E7%BD%AEcron%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B&#34;&gt;2.2、设置cron守护进程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#23%E5%AE%89%E8%A3%85%E9%99%84%E5%8A%A0%E8%BD%AF%E4%BB%B6&#34;&gt;2.3、安装附加软件&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%89%E9%85%8D%E7%BD%AE%E9%80%89%E9%A1%B9&#34;&gt;三、配置选项&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%A4%87%E4%BB%BD%E6%95%B0%E6%8D%AE%E5%AD%98%E6%94%BE%E7%9B%AE%E5%BD%95&#34;&gt;备份数据存放目录&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#mysql%E5%A4%87%E4%BB%BD%E9%80%89%E9%A1%B9&#34;&gt;MySQL备份选项&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#web%E5%A4%87%E4%BB%BD%E9%80%89%E9%A1%B9&#34;&gt;web备份选项&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#ftp%E5%A4%87%E4%BB%BD%E9%80%89%E9%A1%B9&#34;&gt;FTP备份选项&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#scp%E5%A4%87%E4%BB%BD%E9%80%89%E9%A1%B9&#34;&gt;SCP备份选项&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#amazon-s3%E5%A4%87%E4%BB%BD%E9%80%89%E9%A1%B9&#34;&gt;Amazon S3备份选项&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%9B%9B%E5%BB%BA%E8%AE%AE%E5%8F%8D%E9%A6%88&#34;&gt;四、建议反馈&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BA%94%E6%9B%B4%E6%96%B0%E5%8E%86%E5%8F%B2&#34;&gt;五、更新历史&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;VPS自动备份Shell脚本，用于Linux系统上一键备份和管理MySQL数据库以及Web数据，并自动上传至远程备份服务器。&lt;/p&gt;
&lt;h2 id=&#34;一特点与功能&#34;&gt;一、特点与功能&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;纯shell脚本，使用简单，技术门槛低，容易修改，删除即可卸载。&lt;/li&gt;
&lt;li&gt;可指定数据备份频率及保存的备份数量，能自动删除不必要的旧备份。&lt;/li&gt;
&lt;li&gt;可指定多个需要备份的Mysql数据库，甚至排除某个数据库不备份。&lt;/li&gt;
&lt;li&gt;可指定多个需要备份的数据目录，甚至支持二级目录打包备份。&lt;/li&gt;
&lt;li&gt;支持本地和多重备份(ftp,scp,amazon s3)，异地备份可选完全和增量备份。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;二下载与使用&#34;&gt;二、下载与使用&lt;/h2&gt;
&lt;h3 id=&#34;21下载脚本&#34;&gt;2.1、下载脚本&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://gist.github.com/1505857&#34;&gt;https://gist.github.com/1505857&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget http://www.wangyan.cloud/download/shell/vps_auto_backup.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod &lt;span class=&#34;m&#34;&gt;100&lt;/span&gt; vps_auto_backup.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir /var/shell &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; mv vps_auto_backup.sh /var/shell&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;22设置cron守护进程&#34;&gt;2.2、设置cron守护进程&lt;/h3&gt;
&lt;p&gt;自动执行频率可随意设置，一般一小时一次就足够了。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;crontab -e
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; * * * * /bin/bash  /var/shell/vps_auto_backup.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;23安装附加软件&#34;&gt;2.3、安装附加软件&lt;/h3&gt;
&lt;p&gt;如果你需要进行远程FTP、SCP备份，则需安装lftp、expect。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;yum -y install lftp expect &lt;span class=&#34;c1&#34;&gt;#centos&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt-get -y install lftp expect &lt;span class=&#34;c1&#34;&gt;#ubuntu&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;三配置选项&#34;&gt;三、配置选项&lt;/h2&gt;
&lt;h3 id=&#34;备份数据存放目录&#34;&gt;备份数据存放目录&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;BACKUP_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/root/vps-bak&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;mysql备份选项&#34;&gt;MySQL备份选项&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 是否启用Mysql备份，0是关闭，1是启用。&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;nv&#34;&gt;ENABLE_MYSQL_BACKUP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 数据库备份时间间隔，1小时=3600秒。&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;nv&#34;&gt;MYSQL_BACKUP_CYCLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;43200&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 数据库备份保存数量，默认保存最近4次备份。&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;# 例如：一天备份二次，需要保存最近二天备份，则此处填&amp;#34;4&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;&lt;span class=&#34;nv&#34;&gt;MYSQL_BACKUP_NUM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;4&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&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;nv&#34;&gt;MYSQL_HOST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;localhost&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;&lt;span class=&#34;nv&#34;&gt;MYSQL_USER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;root&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;&lt;span class=&#34;nv&#34;&gt;MYSQL_PWD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;123456&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 需要备份的数据库名，多个数据库要用空格分开，all表示所有数据库。&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;nv&#34;&gt;MYSQL_DB_NAMES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;all&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 需要排除备份的数据库名，多个数据库要用&amp;#34;|&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;&lt;span class=&#34;nv&#34;&gt;MYSQL_EXCLUDE_DB&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;phpmyadmin|information_schema|performance_schema&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;web备份选项&#34;&gt;web备份选项&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 是否启用Web数据本地备份，0是关闭，1是启用。&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;nv&#34;&gt;ENABLE_LOCAL_BACKUP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 数据备份时间间隔，1小时=3600秒。&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;nv&#34;&gt;WWW_BACKUP_CYCLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;86400&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 数据备份保存数量，默认保存最近2次备份。&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;# 例如：一天备份一次，需要保存最近二天备份，则此处填&amp;#34;2&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;&lt;span class=&#34;nv&#34;&gt;WWW_BACKUP_NUM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;2&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&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;nv&#34;&gt;WWW_BACKUP_DIRS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/home /var/www&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 需要备份的数据源目录深度，文件夹=0，文件夹+子文件夹=1&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;nv&#34;&gt;WWW_BACKUP_DEPTH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;ftp备份选项&#34;&gt;FTP备份选项&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 是否启用远程FTP备份，0是关闭，1是启用。&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;nv&#34;&gt;ENABLE_FTP_BACKUP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# FTP备份间隔，0表示禁用，1小时=3600秒&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;nv&#34;&gt;FTP_BACKUP_CYCLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# FTP备份模式，完全备份=0，增量备份=1&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;nv&#34;&gt;FTP_BACKUP_MODE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 远程FTP存储备份文件夹，如果不存在，则脚本会自动创建。&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;nv&#34;&gt;FTP_REMOTE_DIR&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;vps-bak&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 远程FTP主机、用户名、密码。&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;nv&#34;&gt;FTP_HOSTNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;192.168.8.128&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;&lt;span class=&#34;nv&#34;&gt;FTP_USERNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;test&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;&lt;span class=&#34;nv&#34;&gt;FTP_PASSWORD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;test&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;scp备份选项&#34;&gt;SCP备份选项&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 是否启用远程scp备份，0是关闭，1是启用。&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;# 注意：为支持免证书登陆，需安装“expect”（yum -y install expect）&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;nv&#34;&gt;ENABLE_SCP_BACKUP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# SCP备份间隔，0表示禁用，1小时=3600秒&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;nv&#34;&gt;SCP_BACKUP_CYCLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&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;nv&#34;&gt;SCP_HOST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;192.168.8.128&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;&lt;span class=&#34;nv&#34;&gt;SCP_USER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;root&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;&lt;span class=&#34;nv&#34;&gt;SCP_PASSWD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;123456&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&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;nv&#34;&gt;SCP_REMOTE_PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/root/vps-bak&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;amazon-s3备份选项&#34;&gt;Amazon S3备份选项&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 是否启用Amazon s3备份，0是关闭，1是启用。&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;nv&#34;&gt;ENABLE_S3_BACKUP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Amazon s3 备份间隔，0表示禁用，1小时=3600秒&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;nv&#34;&gt;S3_BACKUP_CYCLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Amazon s3备份模式，完全备份=0，增量备份=1&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;nv&#34;&gt;S3_BACKUP_MODE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Amazon s3　BUCKET名称，如果不存在，则脚本会自动创建。&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;nv&#34;&gt;S3_BUCKET&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;vps-bak&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Amazon access key&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;nv&#34;&gt;ACCESS_KEY_ID&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;123456&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Amazon secret access key&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;nv&#34;&gt;SECRET_ACCESS_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;123456&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;四建议反馈&#34;&gt;四、建议反馈&lt;/h2&gt;
&lt;p&gt;如果您发现脚本存在错误或有更好的建议，可直接留言或发邮件至：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;lt;myidwy(at)gmail.com&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;五更新历史&#34;&gt;五、更新历史&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2011.12.23: 更新至0.2版，支持自定义远程备份频率、优化代码减少冗余。&lt;/li&gt;
&lt;li&gt;2012.01.26: 更新至0.3版，修复在特定条件下，备份时间间隔值设置无效。&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>nginx开机自启动init脚本</title>
        <link>https://www.bg7pbp.com/p/nginx-init-script/</link>
        <pubDate>Sat, 19 Nov 2011 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/nginx-init-script/</guid>
        <description>&lt;p&gt;适用于源码编译安装nginx的用户，支持RedHat、CentOS、Debian、Ubuntu等发行版，支持start|stop|restart|reload 四个基本操作，非常简单实用。&lt;/p&gt;
&lt;h2 id=&#34;一使用方法&#34;&gt;一、使用方法&lt;/h2&gt;
&lt;p&gt;1、安装&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget http://www.wangyan.cloud/download/conf/init.d.nginx -P /etc/init.d/nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod &lt;span class=&#34;m&#34;&gt;755&lt;/span&gt;  /etc/init.d/nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chkconfig --add nginx &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;RedHat&lt;span class=&#34;o&#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;update-rc.d -f nginx defaults &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;debian&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;2、卸载&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chkconfig --del nginx &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;RedHat&lt;span class=&#34;o&#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;update-rc.d -f nginx remove &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;debian&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;3、使用实例&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;service nginx stop
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;service nginx start
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;service nginx restart
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;service nginx reload&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;二脚本内容&#34;&gt;二、脚本内容&lt;/h2&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#! /bin/bash
&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;c1&#34;&gt;# nginx      Start up the nginx server daemon&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;c1&#34;&gt;# chkconfig: 2345 55 25&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;# Description: starts and stops the nginx web server&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;c1&#34;&gt;### BEGIN INIT INFO&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;# Provides:          nginx&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;# Required-Start:    $all&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;# Required-Stop:     $all&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;# Default-Start:     2 3 4 5&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;# Default-Stop:      0 1 6&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;# Description:       starts and stops the nginx web server&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;### END INIT INFO&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&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;# Author: WangYan &amp;lt;webmaster@wangyan.org&amp;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;# Version:1.0 (2011.19.15)&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&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;# To install:&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;#   copy this file to /etc/init.d/nginx&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;#   shell&amp;gt; chkconfig --add nginx (RedHat)&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;#   shell&amp;gt; update-rc.d -f nginx defaults (debian)&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&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;# To uninstall:&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;#   shell&amp;gt; chkconfig --del nginx (RedHat)&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;#   shell&amp;gt; update-rc.d -f nginx remove&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;nginx
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;DAEMON&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/nginx/sbin/&lt;span class=&#34;nv&#34;&gt;$NAME&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;nv&#34;&gt;CONFIGFILE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/usr/local/nginx/conf/&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;PIDFILE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/var/run/&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;.pid
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ULIMIT&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10240&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&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;set&lt;/span&gt; -e
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; -x &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DAEMON&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;do_start&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Starting &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; ...&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;    &lt;span class=&#34;nb&#34;&gt;ulimit&lt;/span&gt; -SHn &lt;span class=&#34;nv&#34;&gt;$ULIMIT&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;nv&#34;&gt;$DAEMON&lt;/span&gt; -c &lt;span class=&#34;nv&#34;&gt;$CONFIGFILE&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;o&#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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;do_stop&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Shutting down &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; ...&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;    &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;cat &lt;span class=&#34;nv&#34;&gt;$PIDFILE&lt;/span&gt;&lt;span class=&#34;sb&#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;o&#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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;do_reload&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Reloading &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; ...&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;    &lt;span class=&#34;nb&#34;&gt;kill&lt;/span&gt; -HUP &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;cat &lt;span class=&#34;nv&#34;&gt;$PIDFILE&lt;/span&gt;&lt;span class=&#34;sb&#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;o&#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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;case&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; in
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    start&lt;span class=&#34;o&#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;o&#34;&gt;[&lt;/span&gt; ! -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PIDFILE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; do_start &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;nginx already running&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;	&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\ndone&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;        &lt;span class=&#34;p&#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;    stop&lt;span class=&#34;o&#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;o&#34;&gt;[&lt;/span&gt; -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PIDFILE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; do_stop &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;nginx not running&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;	&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\ndone&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;        &lt;span class=&#34;p&#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;    restart&lt;span class=&#34;o&#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;o&#34;&gt;[&lt;/span&gt; -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PIDFILE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; do_stop &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;nginx not running&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;        do_start
&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; -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\ndone&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;        &lt;span class=&#34;p&#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;    reload&lt;span class=&#34;o&#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;o&#34;&gt;[&lt;/span&gt; -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PIDFILE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; do_reload &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;nginx not running&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;	&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; -e &lt;span class=&#34;s2&#34;&gt;&amp;#34;.\ndone&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;        &lt;span class=&#34;p&#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;o&#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;nv&#34;&gt;N&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/etc/init.d/&lt;span class=&#34;nv&#34;&gt;$NAME&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Usage: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$N&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; {start|stop|restart|reload}&amp;#34;&lt;/span&gt; &amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&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;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&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;p&#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;k&#34;&gt;esac&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&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;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
</description>
        </item>
        <item>
        <title>rTorrent &#43; ruTorrent 一键安装包</title>
        <link>https://www.bg7pbp.com/p/rtorrent-rutorrent-installer/</link>
        <pubDate>Thu, 03 Nov 2011 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/rtorrent-rutorrent-installer/</guid>
        <description>&lt;h2 id=&#34;目录&#34;&gt;目录  &lt;!-- omit from toc --&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%80%E4%B8%8B%E8%BD%BD%E5%9C%B0%E5%9D%80&#34;&gt;一、下载地址&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BA%8C%E5%AE%89%E8%A3%85%E6%AD%A5%E9%AA%A4&#34;&gt;二、安装步骤&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;rTorrent + ruTorrent 一键安装包使用 Linux Shell 语言编写，用于在 Linux 操作系统 (Redhat/CentOS/Debian/Ubuntu) 一键安装 &lt;a href=&#34;http://rakshasa.no/&#34;&gt;rTorrent&lt;/a&gt; 和 &lt;a href=&#34;http://code.google.com/p/rutorrent/&#34;&gt;ruTorrent&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;rTorrent + ruTorrent 一键安装包基于前文 &lt;a href=&#34;http://www.wangyan.cloud/bt-rtorrent-rutorrent&#34;&gt;rTorrent + ruTorrent 安装和配置&lt;/a&gt; 的思路进行编写，如果要安装ruTorrent，那么要求支持PHP的Web环境已经配置好，否则安装出错。&lt;/p&gt;
&lt;h2 id=&#34;一下载地址&#34;&gt;一、下载地址&lt;/h2&gt;
&lt;p&gt;方法1：（推荐）&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git://github.com/wangyan/rtrut.git
&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;cd&lt;/span&gt; rtrut &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;方法2：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget http://www.wangyan.cloud/download/src/rtrut-0.1b1.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tar -zxf rtrut-0.1b1.tar.gz
&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;cd&lt;/span&gt; rtrut &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;二安装步骤&#34;&gt;二、安装步骤&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;选择是否需要安装ruTorrent，默认值 &amp;lsquo;y&amp;rsquo;，如果选择 &amp;rsquo;n&amp;rsquo;，则跳至最后一步。&lt;/li&gt;
&lt;li&gt;输入IP或者域名，默认会自动获取，如果不准确请手动输入。&lt;/li&gt;
&lt;li&gt;选择网站根目录，比如：/var/www，/home/www&lt;/li&gt;
&lt;li&gt;输入Nginx配置文件路径，默认值是 /usr/local/nginx/conf/nginx.conf&lt;/li&gt;
&lt;li&gt;按任意键开始安装，可以按&lt;ctrl&gt;+c退出。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://img.cdn.wangyan.cloud/r/rtrut-1.jpg&#34; alt=&#34;https://img.cdn.wangyan.cloud/r/rtrut-1.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://img.cdn.wangyan.cloud/r/rtrut-2.jpg&#34; alt=&#34;https://img.cdn.wangyan.cloud/r/rtrut-2.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://img.cdn.wangyan.cloud/r/rtrut-3.jpg&#34; alt=&#34;https://img.cdn.wangyan.cloud/r/rtrut-3.jpg&#34;&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Linux 进程自动监控shell脚本V2</title>
        <link>https://www.bg7pbp.com/p/linux-process-auto-monitor-v2/</link>
        <pubDate>Thu, 15 Sep 2011 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/linux-process-auto-monitor-v2/</guid>
        <description>&lt;h2 id=&#34;目录&#34;&gt;目录  &lt;!-- omit from toc --&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%80%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95&#34;&gt;一、使用方法：&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BA%8Cshell%E8%84%9A%E6%9C%AC%E5%86%85%E5%AE%B9&#34;&gt;二、Shell脚本内容&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%89%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9&#34;&gt;三、注意事项&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E5%9B%9B%E6%9B%B4%E6%96%B0%E5%8E%86%E5%8F%B2&#34;&gt;四、更新历史：&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;该脚本用于监控VPS服务器负载，Web程序内存及CPU使用。当服务器系统负载或内存使用达到预设值，则重启该程序，或者某个php-cgi进程占用CPU过大，则直接kill掉该进程。目的在于缓解服务器资源耗尽导致意外宕机等情况。&lt;/p&gt;
&lt;h2 id=&#34;一使用方法&#34;&gt;一、使用方法：&lt;/h2&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git://gist.github.com/1216837.git gist-1216837
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim gist-1216837/sys-mon.sh //修改内存、CPU等预设阀值
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir /var/script
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mv gist-1216837/sys-mon.sh /var/script&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;设置每分钟执行一次&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;crontab -e
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;* * * * * /bin/bash  /var/shell/sys-mon.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;二shell脚本内容&#34;&gt;二、Shell脚本内容&lt;/h2&gt;
&lt;p&gt;建议打开下面网址查看最新版本。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://gist.github.com/1216837&#34;&gt;https://gist.github.com/1216837&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#! /bin/bash
&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;c1&#34;&gt;# sys-mon.sh&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;c1&#34;&gt;# Copyright (c) 2011, WangYan &amp;lt;webmaster@wangyan.org&amp;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;# All rights reserved.&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;# Distributed under the GNU General Public License, version 3.0.&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;c1&#34;&gt;# Monitor system mem and load, if too high, restart some service.&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;c1&#34;&gt;# See: http://www.wangyan.cloud/sys-mon-shell-script.html&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;c1&#34;&gt;# V 0.5, Date: 2011-12-08&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&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;# Need to monitor the service name&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;# Must be in /etc/init.d folder exists&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;nv&#34;&gt;NAME_LIST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;httpd nginx mysql&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;
&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;# Single process to allow the maximum CPU (%)&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;nv&#34;&gt;PID_CPU_MAX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;25&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;
&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;# The maximum allowed memory (%)&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;nv&#34;&gt;PID_MEM_SUM_MAX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;95&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;
&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;# The maximum allowed system load&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;nv&#34;&gt;SYS_LOAD_MAX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;6&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;
&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;# Log path settings&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;nv&#34;&gt;LOG_PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;/var/log/sys-mon.log&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;
&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;# Date time format setting&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;nv&#34;&gt;DATA_TIME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date +&lt;span class=&#34;s2&#34;&gt;&amp;#34;%y-%m-%d %H:%M:%S&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#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&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;# Your email address&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;nv&#34;&gt;EMAIL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;webmaster@example.com&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;
&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;# Your website url&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;nv&#34;&gt;MY_URL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;http://106.187.38.210/p.php&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;
&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; NAME in &lt;span class=&#34;nv&#34;&gt;$NAME_LIST&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;k&#34;&gt;do&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;nv&#34;&gt;PID_CPU_SUM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;PID_MEM_SUM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;0&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;    &lt;span class=&#34;nv&#34;&gt;PID_LIST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;ps aux &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -v root&lt;span class=&#34;sb&#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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;IFS_TMP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$IFS&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;IFS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;$&amp;#39;\n&amp;#39;&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;k&#34;&gt;for&lt;/span&gt; PID in &lt;span class=&#34;nv&#34;&gt;$PID_LIST&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;k&#34;&gt;do&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;nv&#34;&gt;PID_NUM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PID&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $2}&amp;#39;&lt;/span&gt;&lt;span class=&#34;sb&#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;nv&#34;&gt;PID_CPU&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PID&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $3}&amp;#39;&lt;/span&gt;&lt;span class=&#34;sb&#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;nv&#34;&gt;PID_MEM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PID&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $4}&amp;#39;&lt;/span&gt;&lt;span class=&#34;sb&#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;#       echo &amp;#34;$NAME: PID_NUM($PID_NUM) PID_CPU($PID_CPU) PID_MEM($PID_MEM)&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;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;PID_CPU_SUM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_CPU_SUM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; + &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_CPU&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bc&lt;span class=&#34;sb&#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;nv&#34;&gt;PID_MEM_SUM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_MEM_SUM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; + &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_MEM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bc&lt;span class=&#34;sb&#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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_CPU&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &amp;gt;= &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_CPU_MAX&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bc&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; -eq &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;then&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;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;php-fpm&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;httpd&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                sleep &lt;span class=&#34;m&#34;&gt;5&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;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_CPU&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; &amp;gt;= &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_CPU_MAX&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bc&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; -eq &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;then&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;DATA_TIME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: kill &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_NUM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;) successful (CPU:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_CPU&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tee -a &lt;span class=&#34;nv&#34;&gt;$LOG_PATH&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;nb&#34;&gt;kill&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PID_NUM&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;k&#34;&gt;fi&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;k&#34;&gt;else&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;DATA_TIME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: [WARNING!] &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_NUM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;) cpu usage is too high! (CPU:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_CPU&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tee -a &lt;span class=&#34;nv&#34;&gt;$LOG_PATH&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;k&#34;&gt;fi&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;k&#34;&gt;fi&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;k&#34;&gt;done&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;nv&#34;&gt;IFS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$IFS_TMP&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&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;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;SYS_LOAD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;uptime &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $(NF-2)}&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sed &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/,//&amp;#39;&lt;/span&gt;&lt;span class=&#34;sb&#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;nv&#34;&gt;SYS_MON&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;CPU:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_CPU_SUM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; MEM:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_MEM_SUM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; LOAD:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_LOAD&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&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;&lt;span class=&#34;c1&#34;&gt;#   echo -e &amp;#34;$NAME: $SYS_MON\n&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;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;SYS_LOAD_TOO_HIGH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;BEGIN{print(&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_LOAD&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_LOAD_MAX&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;)}&amp;#39;&lt;/span&gt;&lt;span class=&#34;sb&#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;nv&#34;&gt;PID_MEM_SUM_TOO_HIGH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;BEGIN{print(&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_MEM_SUM&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_MEM_SUM_MAX&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;)}&amp;#39;&lt;/span&gt;&lt;span class=&#34;sb&#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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_LOAD_TOO_HIGH&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_MEM_SUM_TOO_HIGH&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;1&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        /etc/init.d/&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; stop
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        sleep &lt;span class=&#34;m&#34;&gt;5&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;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;i&amp;lt;4&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;i++&lt;span class=&#34;o&#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;k&#34;&gt;do&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;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;pgrep &lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; wc -l&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;then&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DATA_TIME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: Stop &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; successful! (&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_MON&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tee -a &lt;span class=&#34;nv&#34;&gt;$LOG_PATH&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;nb&#34;&gt;break&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;k&#34;&gt;else&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;DATA_TIME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: [WARNING!] Stop &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; failed[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;]! (&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_MON&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tee -a &lt;span class=&#34;nv&#34;&gt;$LOG_PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                pkill &lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; killall &lt;span class=&#34;nv&#34;&gt;$NAME&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;k&#34;&gt;fi&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;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        /etc/init.d/&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; start
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        sleep &lt;span class=&#34;m&#34;&gt;5&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;k&#34;&gt;for&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ii&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;1&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;ii&amp;lt;4&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;ii++&lt;span class=&#34;o&#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;k&#34;&gt;do&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;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;pgrep &lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; wc -l&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; !&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;then&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$DATA_TIME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: Start &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; successful!&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tee -a &lt;span class=&#34;nv&#34;&gt;$LOG_PATH&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;nb&#34;&gt;break&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;k&#34;&gt;else&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;DATA_TIME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: [WARNING!] Start &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; failed[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ii&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;]! (&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_MON&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tee -a &lt;span class=&#34;nv&#34;&gt;$LOG_PATH&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                /etc/init.d/&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; start
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                sleep &lt;span class=&#34;m&#34;&gt;5&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;k&#34;&gt;fi&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;k&#34;&gt;done&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;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;pgrep &lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; wc -l&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt; !&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;then&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;DATA_TIME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: [ERROR!] Start &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; failed! (&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_MON&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; mail -s &lt;span class=&#34;s2&#34;&gt;&amp;#34;Start &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; failed&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$EMAIL&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;k&#34;&gt;fi&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;k&#34;&gt;fi&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;k&#34;&gt;done&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&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;STATUS_CODE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;curl -o /dev/null -s -w %&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;http_code&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$MY_URL&lt;/span&gt;&lt;span class=&#34;sb&#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;#echo -e &amp;#34;STATUS CODE: $STATUS_CODE\n&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;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$STATUS_CODE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; !&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;200&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    sleep &lt;span class=&#34;m&#34;&gt;3&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;nv&#34;&gt;STATUS_CODE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;curl -o /dev/null -s -w %&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;http_code&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$MY_URL&lt;/span&gt;&lt;span class=&#34;sb&#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;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$STATUS_CODE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; !&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;200&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;then&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;DATA_TIME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: [WARNING!] Website Downtime! (&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_MON&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tee -a &lt;span class=&#34;nv&#34;&gt;$LOG_PATH&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;DATA_TIME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: [WARNING!] Website Downtime! (&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_MON&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; mail -s &lt;span class=&#34;s2&#34;&gt;&amp;#34;Start &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; failed&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$EMAIL&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;k&#34;&gt;fi&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;k&#34;&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;脚本内容不难理解，原理解释可参考 &lt;a href=&#34;http://www.wangyan.cloud/shell-vps-sys-mon-v1/&#34;&gt;Linux 进程自动监控shell脚本&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;三注意事项&#34;&gt;三、注意事项&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;NAME_LIST 指定的监控程序必须在/etc/init.d 文件夹中存在，并且支持stop和start操作&lt;/li&gt;
&lt;li&gt;PID_CPU_MAX 指的是单个进程的CPU占用，只针对php-fpm或httpd。&lt;/li&gt;
&lt;li&gt;PID_MEM_SUM_MAX 指的是该程序所有进程实际内存占用，而并非系统总内存。&lt;/li&gt;
&lt;li&gt;EMAIL 只有在程序启动失败后，你才能收到邮件提醒。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;四更新历史&#34;&gt;四、更新历史：&lt;/h2&gt;
&lt;p&gt;2011.11.28： 去掉nginx502状态监控，完善进程cpu监控，修正数据不准确等问题。
2011.12.07： 继续修正cpu监控不正确问题，增加宕机后邮件通知功能。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Linux 进程自动监控shell脚本V1</title>
        <link>https://www.bg7pbp.com/p/linux-process-auto-monitor-v1/</link>
        <pubDate>Fri, 05 Aug 2011 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/linux-process-auto-monitor-v1/</guid>
        <description>&lt;h2 id=&#34;目录&#34;&gt;目录  &lt;!-- omit from toc --&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%80%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95&#34;&gt;一、使用方法&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BA%8C%E5%8E%9F%E7%90%86%E8%A7%A3%E9%87%8A&#34;&gt;二、原理解释&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;主要用于监控 linux 服务器负载及内存占用，当负载或内存占用达到设置值后，便自动重启该进程以避免宕机。&lt;/p&gt;
&lt;h2 id=&#34;一使用方法&#34;&gt;一、使用方法&lt;/h2&gt;
&lt;p&gt;下载、解压、运行&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wget http://www.wangyan.cloud/download/script/pid_auto_reboot.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tar -zxf pid_auto_reboot.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./pid_auto_reboot.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;设置每分钟执行一次&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;crontab -e
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;* * * * * /bin/bash  /var/shell/pid_auto_reboot.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;二原理解释&#34;&gt;二、原理解释&lt;/h2&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&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;nv&#34;&gt;PID_MEM_MAX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;85&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;
&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;nv&#34;&gt;SYS_LOAD_MAX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;3&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;
&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;nv&#34;&gt;NAME_LIST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;php-fpm mysql&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;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; NAME in &lt;span class=&#34;nv&#34;&gt;$NAME_LIST&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;k&#34;&gt;do&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;nv&#34;&gt;PID_MEM_SUM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&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&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;nv&#34;&gt;PID_NUM_SUM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;ps aux &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; wc -l&lt;span class=&#34;sb&#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&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;nv&#34;&gt;PID_MEM_LIST&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;ps aux &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep &lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $4}&amp;#39;&lt;/span&gt;&lt;span class=&#34;sb&#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&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;k&#34;&gt;for&lt;/span&gt; PID_MEM in &lt;span class=&#34;nv&#34;&gt;$PID_MEM_LIST&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;k&#34;&gt;do&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;nv&#34;&gt;PID_MEM_SUM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$PID_MEM_SUM&lt;/span&gt; + &lt;span class=&#34;nv&#34;&gt;$PID_MEM&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bc&lt;span class=&#34;sb&#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;k&#34;&gt;done&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&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;nv&#34;&gt;SYS_LOAD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;uptime &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;{print $(NF-2)}&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sed &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/,//&amp;#39;&lt;/span&gt;&lt;span class=&#34;sb&#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&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;nv&#34;&gt;MEM_VULE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;BEGIN{print(&amp;#39;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_MEM_SUM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;gt;=&amp;#39;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_MEM_MAX&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;?&amp;#34;1&amp;#34;:&amp;#34;0&amp;#34;)}&amp;#39;&lt;/span&gt;&lt;span class=&#34;sb&#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;nv&#34;&gt;LOAD_VULE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;sb&#34;&gt;`&lt;/span&gt;awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;BEGIN{print(&amp;#39;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_LOAD&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;gt;=&amp;#39;&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_LOAD_MAX&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;?&amp;#34;1&amp;#34;:&amp;#34;0&amp;#34;)}&amp;#39;&lt;/span&gt;&lt;span class=&#34;sb&#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&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;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$MEM_VULE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$LOAD_VULE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;then&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date +&lt;span class=&#34;s2&#34;&gt;&amp;#34;%y-%m-%d %H:%M:%S&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;killall &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;(MEM:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_MEM_SUM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;,LOAD:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_LOAD&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt;&amp;gt;&amp;gt; /var/log/autoreboot.log
&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;        /etc/init.d/&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; stop
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        sleep &lt;span class=&#34;m&#34;&gt;3&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;        pkill &lt;span class=&#34;nv&#34;&gt;$NAME&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&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;        /etc/init.d/&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt; start
&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date +&lt;span class=&#34;s2&#34;&gt;&amp;#34;%y-%m-%d %H:%M:%S&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;start &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;(MEM:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_MEM_SUM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;,LOAD:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_LOAD&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /var/log/autoreboot.log
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;else&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$NAME&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; very health!(MEM:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PID_MEM_SUM&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;,LOAD:&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$SYS_LOAD&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt; &amp;gt; /dev/null
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;fi&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;k&#34;&gt;done&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;补充：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;即便在[[]]结构中，同样不能直接比较浮点数大小，例如：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2.0&amp;#34;&lt;/span&gt; &amp;gt;  &lt;span class=&#34;s2&#34;&gt;&amp;#34;10&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;then&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;#结果输出yes显然错了。&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;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;yes&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;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;参考资料：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://www.hostloc.com/thread-38721-1-1.html&#34;&gt;http://www.hostloc.com/thread-38721-1-1.html&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>PureFTPd 一键安装脚本</title>
        <link>https://www.bg7pbp.com/p/pureftpd-one-click-install/</link>
        <pubDate>Thu, 10 Feb 2011 00:00:00 +0800</pubDate>
        
        <guid>https://www.bg7pbp.com/p/pureftpd-one-click-install/</guid>
        <description>&lt;h2 id=&#34;目录&#34;&gt;目录  &lt;!-- omit from toc --&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%80%E7%AE%80%E4%BB%8B&#34;&gt;一、简介&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%BA%8C%E5%AE%89%E8%A3%85%E6%AD%A5%E9%AA%A4&#34;&gt;二、安装步骤&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#%E4%B8%89%E6%88%AA%E5%9B%BE&#34;&gt;三、截图&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PureFTPd 编译安装相对比较简单，但是安装后，特别是web管理界面，是需要一定配置才能用于生产环境的。为此有了这个一键安装包的诞生。&lt;/p&gt;
&lt;p&gt;PureFTPd 是什么？这一键安装包是怎么工作的？请参考此文&lt;a href=&#34;http://www.wangyan.cloud/vps-pureftpd-install-from-source&#34;&gt;《Linux 从源码编译安装 pureftpd》&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;一简介&#34;&gt;一、简介&lt;/h3&gt;
&lt;p&gt;1、该一键安装包是一个Shell脚本，用于一键安装PureFTPd及web管理界面。&lt;del&gt;2、适用于Debian/Ubuntu系统，且通过 Linode 上测试。&lt;/del&gt;
2、适用于Debian/Ubuntu/Red Hat/CentOS系统。
3、可自动下载最新版本的PureFTPd编译安装，不需要人为更新。
4、支持MySQL用户，可设置相关权限及密码。
5、可修改此脚本的编译参数，这不会对安装造成错误。&lt;/p&gt;
&lt;h3 id=&#34;二安装步骤&#34;&gt;二、安装步骤&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;div class=&#34;code-block__header&#34;&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--red&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--yellow&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__dot code-block__dot--green&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__spacer&#34;&gt;&lt;/span&gt;
        &lt;span class=&#34;code-block__title&#34;&gt;bash&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&#34;code-block__body&#34;&gt;&lt;pre class=&#34;chroma&#34; tabindex=&#34;0&#34;&gt;&lt;code&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone git://github.com/wangyan/pureftpd.git
&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;cd&lt;/span&gt; pureftpd
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./install.sh&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;直接下载已打包的版本&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/wangyan/pureftpd&#34;&gt;https://github.com/wangyan/pureftpd&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;1、输入服务器IP或者域名
2、网站根目录
3、MySQL Root 用户密码
4、MySQL ftpuser 用户密码，该用户是专门用来管理 PureFTPd 的。（该密码不需要你记住）
5、administartor 用户密码，该密码是Web管理界面管理员帐号密码。&lt;/p&gt;
&lt;h3 id=&#34;三截图&#34;&gt;三、截图&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;http://img.cdn.wangyan.cloud/pureftpd-1.png&#34;&gt;&lt;img src=&#34;http://img.cdn.wangyan.cloud/p/pureftpd-1.png&#34; alt=&#34;pureftpd-1&#34;&gt;&lt;/a&gt;
&lt;a href=&#34;http://img.cdn.wangyan.cloud/p/pureftpd-2.png&#34;&gt;&lt;img src=&#34;http://img.cdn.wangyan.cloud/p/pureftpd-2.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;
&lt;a href=&#34;http://img.cdn.wangyan.cloud/p/pureftpd-3.png&#34;&gt;&lt;img src=&#34;http://img.cdn.wangyan.cloud/p/pureftpd-3.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;补充：被动模式端口是 “30000-50000”，加载了防火墙的服务器需要打开。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;更新历史：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;2011.10.07: 更新至v0.4版&lt;/p&gt;</description>
        </item>
        
    </channel>
</rss>
