<?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://blog.witd.in/tags/shell/</link>
    <description>Recent content in Shell on 备忘</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>kongfei605@gmail.com (kongfei)</managingEditor>
    <webMaster>kongfei605@gmail.com (kongfei)</webMaster>
    <copyright>(c) 2022 witd. All rights reserved</copyright>
    <lastBuildDate>Mon, 02 Oct 2017 08:53:45 +0800</lastBuildDate>
    
	<atom:link href="https://blog.witd.in/tags/shell/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>用Makefile做一点微小的工作</title>
      <link>https://blog.witd.in/2017/10/02/%E7%94%A8makefile%E5%81%9A%E4%B8%80%E7%82%B9%E5%BE%AE%E5%B0%8F%E7%9A%84%E5%B7%A5%E4%BD%9C/</link>
      <pubDate>Mon, 02 Oct 2017 08:53:45 +0800</pubDate>
      <author>kongfei605@gmail.com (kongfei)</author>
      <guid>https://blog.witd.in/2017/10/02/%E7%94%A8makefile%E5%81%9A%E4%B8%80%E7%82%B9%E5%BE%AE%E5%B0%8F%E7%9A%84%E5%B7%A5%E4%BD%9C/</guid>
      <description>&lt;p&gt;有一个内网服务的模块，升级过程大体是在一个目录A中git pull-&amp;gt;go build， 然后B目录中备份-&amp;gt;stop-&amp;gt;替换-&amp;gt;start。这个模块有个control.sh负责起停模块，有个build.sh负责编译,备份是靠cp module module.bak。这样就可能会有备份版办覆盖的问题，比较好的方式是使用模块的版本号作为备份文件后缀。&lt;/p&gt;

&lt;p&gt;总的需求就是自动化，可以编译/备份/升级/回滚。备份时候希望按照版本号进行，回滚的时候可以按照指定版本号进行回滚。这种升级方式不可取，作为一个过渡的临时方案.&lt;/p&gt;

&lt;p&gt;改造第一步，利用golang 的&lt;code&gt;ldflags&lt;/code&gt; 在模块编译的时候给模块指定版本号。版本号就用 &lt;code&gt;short commit id + date&lt;/code&gt;的格式。&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>shell两例</title>
      <link>https://blog.witd.in/2014/10/21/shell%E4%B8%A4%E4%BE%8B/</link>
      <pubDate>Tue, 21 Oct 2014 15:25:33 +0800</pubDate>
      <author>kongfei605@gmail.com (kongfei)</author>
      <guid>https://blog.witd.in/2014/10/21/shell%E4%B8%A4%E4%BE%8B/</guid>
      <description>&lt;h3 id=&#34;1-需求-求加权平均值&#34;&gt;1.需求：求加权平均值。&lt;/h3&gt;

&lt;p&gt;简化下：文件中有两列，我要统计两列乘积 和所有乘积的和&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-shell&#34;&gt;echo &amp;quot;1 2
3 4
5 6&amp;quot; |awk &#39;BEGIN{i=1}{ a[i++]=$1*$2;sum+=$1*$2;}END{for(i in a ){print i,a[i]};print sum}&#39;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;写出如下方式， 说明就理解awk是按行处理了&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-shell&#34;&gt;echo &amp;quot;1 2
3 4
5 6&amp;quot; |awk &#39;{ a[NR]=$1*$2;sum+=$1*$2;}END{for(i in a ){print i,a[i]};print sum}&#39;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>shell命令小结</title>
      <link>https://blog.witd.in/2013/06/16/shell%E5%91%BD%E4%BB%A4%E5%B0%8F%E7%BB%93/</link>
      <pubDate>Sun, 16 Jun 2013 15:35:04 +0800</pubDate>
      <author>kongfei605@gmail.com (kongfei)</author>
      <guid>https://blog.witd.in/2013/06/16/shell%E5%91%BD%E4%BB%A4%E5%B0%8F%E7%BB%93/</guid>
      <description>&lt;p&gt;1、列出头十个最耗内存的进程&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-shell&#34;&gt;ps aux | sort -rnk +4 | head
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ps 输出格式如下：&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ps aux
USER      PID       %CPU    %MEM    VSZ    RSS    TTY    STAT    START    TIME    COMMAND
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;sort -k是指定排序的字段。ps命令输出的第4个字段是内存占用率。&lt;/p&gt;

&lt;p&gt;2、列出当前目录里最大的10个文件。&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-shell&#34;&gt;du -s * | sort -rn | head
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>