<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog.Project13.pl &#187; shell</title>
	<atom:link href="http://www.blog.project13.pl/index.php/tag/shell/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog.project13.pl</link>
	<description>The Blog of a Coder</description>
	<lastBuildDate>Sun, 05 Feb 2012 02:28:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>[terminal heroes] Display git branch in shell prompt (PS1)</title>
		<link>http://www.blog.project13.pl/index.php/fun/1198/terminal-heroes-display-git-branch-in-shell-prompt-ps1/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/1198/terminal-heroes-display-git-branch-in-shell-prompt-ps1/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 22:29:01 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[terminal heroes]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[branch]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[prompt]]></category>
		<category><![CDATA[ps1]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1198</guid>
		<description><![CDATA[I don&#8217;t think I&#8217;ve blogged about this but I&#8217;ve seen this sometime ago and now decided to add it to my .bashrc for good. It&#8217;s a simple trick to make an awesome PS1 shell prompt, displaying the branch you are currently on (if you&#8217;re in a git versioned directory). Not that I&#8217;m forgetting what branch [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t think I&#8217;ve blogged about this but I&#8217;ve seen this sometime ago and now decided to add it to my .bashrc for good. It&#8217;s a simple trick to make an awesome PS1 shell prompt, displaying the branch you are currently on (if you&#8217;re in a git versioned directory). Not that I&#8217;m forgetting what branch I&#8217;m on, but I hope it&#8217;ll make me create more branches more often and never &#8220;just work on master&#8221; :-)</p>
<p><a href="http://www.blog.project13.pl/wp-content/uploads/2011/02/awesome-git-branch-in-shell.png"><img src="http://www.blog.project13.pl/wp-content/uploads/2011/02/awesome-git-branch-in-shell.png" alt="" title="awesome-git-branch-in-shell" width="530" class="aligncenter size-full wp-image-1211" /></a></p>
<p>The code comes from <a href="http://arnorehn.de/cgi-bin/weblog_basic/index.php?p=34" onclick="urchinTracker('/outgoing/arnorehn.de/cgi-bin/weblog_basic/index.php?p=34&amp;referer=');">http://arnorehn.de/cgi-bin/weblog_basic/index.php?p=34</a> so big kudos too him :-)</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0"># in your ~/.bashrc for example</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">alias</span> <span class="re2">gitka=</span><span class="st0">&#39;gitk &#8211;all&#39;</span> <span class="co0">#unrelated to this post, but very useful :-)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">function</span> formattedGitBranch <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re2">_branch=</span><span class="st0">&quot;$(git branch 2&gt;/dev/null | sed -e &quot;</span><span class="sy0">/</span>^\s<span class="sy0">/</span>d<span class="st0">&quot; -e &quot;</span>s<span class="sy0">/</span>^\<span class="sy0">*</span>\s<span class="sy0">//</span><span class="st0">&quot;)&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">test</span> -n <span class="st0">&quot;$_branch&quot;</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">echo</span> -e <span class="st0">&quot; @<span class="es0">\e</span>[0;32m $_branch&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#export PS1=&quot;\u@\h \W \[\e[m\]\$(formattedGitBranch) \[\e[1;32m\]\$ \[\e[m\]\[\e[0m\]&quot; </span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">export</span> <span class="re2">PS1=</span><span class="st0">&quot;<span class="es0">\u</span>@<span class="es0">\h</span> <span class="es0">\W</span><span class="es0">\[</span><span class="es0">\e</span>[m<span class="es0">\]</span><span class="es0">\$</span>(formattedGitBranch)<span class="es0">\[</span><span class="es0">\e</span>[0m<span class="es0">\]</span> <span class="es0">\$</span> &quot;</span></div>
</li>
</ol>
</div>
<p>Cheers and <b>happy hacking</b>!</p>
<p>PS: I&#8217;m waiting for my T-shirt and stickers (for training participants) to arrive from github. I&#8217;d love they make it in time for <a href="http://www.sfi.org.pl" onclick="urchinTracker('/outgoing/www.sfi.org.pl?referer=');">SFI</a> but I&#8217;m not sure if it&#8217;s even possible hmmm&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/1198/terminal-heroes-display-git-branch-in-shell-prompt-ps1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Terminal Heroes] sed mastery &#8211; group catching</title>
		<link>http://www.blog.project13.pl/index.php/terminal-heroes/884/terminal-heroes-sed-mastery-group-catching/</link>
		<comments>http://www.blog.project13.pl/index.php/terminal-heroes/884/terminal-heroes-sed-mastery-group-catching/#comments</comments>
		<pubDate>Sat, 09 Oct 2010 19:24:36 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[terminal heroes]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[sed]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=884</guid>
		<description><![CDATA[Just a quick sed (the stream editor) example, as someone from work needed it a few minutes ago and I was more happy to supply an quick solution: # replace the href part &#91;ktoso@homunculus ~&#93;$ cat sedmastery &#160; &#160;&#60;a href=&#34;#&#34; id=&#34;hibernate&#34;&#62;Hibernate&#60;/a&#62; &#160; &#160;&#60;a href=&#34;#&#34; id=&#34;html&#34;&#62;HTML&#60;/a&#62; &#160; &#160;&#60;a href=&#34;#&#34; id=&#34;js&#34;&#62;JavaScript&#60;/a&#62; &#91;ktoso@homunculus ~&#93;$ sed &#39;s&#124;\([^#]*\)#\([^&#62;]*\)&#62;\([^&#60; ]*\)&#124;\1/\3\2&#62;\3&#124;g&#39; sedmastery [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick <strong>sed</strong> (the stream editor) example, as someone from work needed it a few minutes ago and I was more happy to supply an quick solution:</p>
<div class="geshi no bash">
<div class="head"># replace the href part</div>
<ol>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span>ktoso<span class="sy0">@</span>homunculus ~<span class="br0">&#93;</span>$ <span class="kw2">cat</span> sedmastery</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sy0">&lt;</span>a <span class="re2">href=</span><span class="st0">&quot;#&quot;</span> <span class="re2">id=</span><span class="st0">&quot;hibernate&quot;</span><span class="sy0">&gt;</span>Hibernate<span class="sy0">&lt;/</span>a<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sy0">&lt;</span>a <span class="re2">href=</span><span class="st0">&quot;#&quot;</span> <span class="re2">id=</span><span class="st0">&quot;html&quot;</span><span class="sy0">&gt;</span>HTML<span class="sy0">&lt;/</span>a<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sy0">&lt;</span>a <span class="re2">href=</span><span class="st0">&quot;#&quot;</span> <span class="re2">id=</span><span class="st0">&quot;js&quot;</span><span class="sy0">&gt;</span>JavaScript<span class="sy0">&lt;/</span>a<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span>ktoso<span class="sy0">@</span>homunculus ~<span class="br0">&#93;</span>$ <span class="kw2">sed</span> <span class="st0">&#39;s|<span class="es0">\(</span>[^#]*<span class="es0">\)</span>#<span class="es0">\(</span>[^&gt;]*<span class="es0">\)</span>&gt;<span class="es0">\(</span>[^&lt; ]*<span class="es0">\)</span>|<span class="es0">\1</span>/<span class="es0">\3</span><span class="es0">\2</span>&gt;<span class="es0">\3</span>|g&#39;</span> sedmastery</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sy0">&lt;</span>a <span class="re2">href=</span><span class="st0">&quot;/Hibernate&quot;</span> <span class="re2">id=</span><span class="st0">&quot;hibernate&quot;</span><span class="sy0">&gt;</span>Hibernate<span class="sy0">&lt;/</span>a<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sy0">&lt;</span>a <span class="re2">href=</span><span class="st0">&quot;/HTML&quot;</span> <span class="re2">id=</span><span class="st0">&quot;html&quot;</span><span class="sy0">&gt;</span>HTML<span class="sy0">&lt;/</span>a<span class="sy0">&gt;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sy0">&lt;</span>a <span class="re2">href=</span><span class="st0">&quot;/JavaScript&quot;</span> <span class="re2">id=</span><span class="st0">&quot;js&quot;</span><span class="sy0">&gt;</span>JavaScript<span class="sy0">&lt;/</span>a<span class="sy0">&gt;</span></div>
</li>
</ol>
</div>
<p>Yup, that&#8217;s basically it. You may also apply this <strong>directly in vim</strong> <a href="http://www.youtube.com/watch?v=MzxEt9sK5eM" onclick="urchinTracker('/outgoing/www.youtube.com/watch?v=MzxEt9sK5eM&amp;referer=');">as I&#8217;ve showed here a few years ago</a> and you&#8217;ll probably need to <a href="http://www.ibm.com/developerworks/linux/library/l-sed2.html" onclick="urchinTracker('/outgoing/www.ibm.com/developerworks/linux/library/l-sed2.html?referer=');">look some stuff up here</a> or on this <a href="http://www.grymoire.com/Unix/Sed.html#uh-4" onclick="urchinTracker('/outgoing/www.grymoire.com/Unix/Sed.html_uh-4?referer=');">awesome sed guide</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/terminal-heroes/884/terminal-heroes-sed-mastery-group-catching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Terminal Heroes 8: Memory usage scripts</title>
		<link>http://www.blog.project13.pl/index.php/coding/442/memory-usage-scripts/</link>
		<comments>http://www.blog.project13.pl/index.php/coding/442/memory-usage-scripts/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 10:54:21 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[terminal heroes]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=442</guid>
		<description><![CDATA[I have a low-memory VPS running online and thus always have to worry about what uses how much memory&#8230; Of course top and my favorite htop are very good tools to check this, but sometimes I just want to get a super simple report if I&#8217;m overusing memory or not yet. The bellow scripts (most [...]]]></description>
			<content:encoded><![CDATA[<p>I have a low-memory VPS running online and thus always have to worry about what uses how much memory&#8230; Of course top and my favorite <strong>htop</strong> are very good tools to check this, but sometimes I just want to get a super simple report if I&#8217;m overusing memory or not yet. The bellow scripts (most of them was found online or hacked up from multiple scripts to fit my needs) print simple yet very readable memory usage information.</p>
<h2>memused</h2>
<div class="geshi no bash">
<div class="head">#!/bin/bash</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#if [ $1 = &#39;&#39;]; then</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#    ps auxf | awk &#39;{sum=sum+$6}; END {print sum/1024}&#39;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#else</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#    ps auxf | grep $1 | awk &#39;{sum=sum+$6}; END {print sum/1024}&#39;;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#fi</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">bean=</span>`<span class="kw2">cat</span> <span class="sy0">/</span>proc<span class="sy0">/</span>user_beancounters` <span class="re2">guar=</span>`<span class="kw3">echo</span> <span class="st0">&quot;$bean&quot;</span> <span class="sy0">|</span> <span class="kw2">grep</span> vmguar <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;{ print $4;}&#39;</span>` <span class="re2">burst=</span>`<span class="kw3">echo</span> <span class="st0">&quot;$bean&quot;</span> <span class="sy0">|</span> <span class="kw2">grep</span> privvm <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;{ print $5;}&#39;</span>` <span class="re2">priv=</span>`<span class="kw3">echo</span> <span class="st0">&quot;$bean&quot;</span> <span class="sy0">|</span> <span class="kw2">grep</span> privvm <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;{ print $2;}&#39;</span>`</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">let</span> <span class="re2">total=</span>guar<span class="sy0">/</span><span class="nu0">256</span> <span class="kw3">let</span> <span class="re2">used=</span>priv<span class="sy0">/</span><span class="nu0">256</span> <span class="kw3">let</span> <span class="re2">burst=</span>burst<span class="sy0">/</span><span class="nu0">256</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;VPS memory usage:&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Used: $used MB&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Total: $total MB&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;Burstable to: $burst MB&quot;</span></div>
</li>
</ol>
</div>
<p>Sample output:<br />
<code>VPS memory usage:<br />
Used: 296 MB<br />
Total: 256 MB<br />
Burstable to: 512 MB</code></p>
<h2>memfree</h2>
<div class="geshi no bash">
<div class="head">#!/bin/bash</div>
<ol>
<li class="li1">
<div class="de1"><span class="co0">#</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># Revised 02-Feb-2007: include kernel memory (kmemsize) in &#39;used&#39; calculation</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># and show percentages in output.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">BEAN=</span>`<span class="kw2">cat</span> <span class="sy0">/</span>proc<span class="sy0">/</span>user_beancounters`</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">GUAR=</span>`<span class="kw3">echo</span> <span class="st0">&quot;$BEAN&quot;</span> <span class="sy0">|</span> <span class="kw2">grep</span> vmguar <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;{ print $4;}&#39;</span>`</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">PRIV=</span>`<span class="kw3">echo</span> <span class="st0">&quot;$BEAN&quot;</span> <span class="sy0">|</span> <span class="kw2">grep</span> privvm <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;{ print $2;}&#39;</span>`</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">KMEM=</span>`<span class="kw3">echo</span> <span class="st0">&quot;$BEAN&quot;</span> <span class="sy0">|</span> <span class="kw2">grep</span> kmem <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;{ print $3;}&#39;</span>`</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">let</span> <span class="re2">TOTL=</span><span class="re1">$GUAR</span><span class="sy0">/</span><span class="nu0">256</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">let</span> <span class="re2">KMMB=</span><span class="re1">$KMEM</span><span class="sy0">/</span><span class="nu0">1048576</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">let</span> <span class="re2">PVMB=</span><span class="re1">$PRIV</span><span class="sy0">/</span><span class="nu0">256</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">let</span> <span class="re2">USED=</span><span class="re1">$KMMB</span>+<span class="re1">$PVMB</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">let</span> <span class="re2">FREE=</span><span class="re1">$TOTL</span>-<span class="re1">$USED</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="st0">&quot;$FREE&quot;</span> -gt <span class="st0">&quot;0&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">let</span> <span class="re2">UPER=</span><span class="re1">$USED</span><span class="sy0">*</span><span class="nu0">100</span><span class="sy0">/</span><span class="re1">$TOTL</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">let</span> <span class="re2">FPER=</span><span class="nu0">100</span>-<span class="re1">$UPER</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">let</span> <span class="re2">UPER=</span><span class="st0">&quot;100&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">let</span> <span class="re2">FPER=</span><span class="st0">&quot;0&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;VPS Memory:&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot; Total: $TOTL mb Used: $USED mb (${UPER}%) Free: $FREE mb (${FPER}%)&quot;</span></div>
</li>
</ol>
</div>
<p>Sample output:<br />
<code>VPS Memory:<br />
Total: 256 mb Used: 302 mb (100%) Free: -46 mb (0%)</code></p>
<h2>memheld</h2>
<div class="geshi no bash">
<div class="head">#!/bin/bash</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw2">grep</span> oomguarpages <span class="sy0">/</span>proc<span class="sy0">/</span>user_beancounters <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;{s=$2;t=$3;u=$4; {print &quot;VPS Memory Usage<span class="es0">\n</span>Current Held: &quot; s/256 &quot;MB<span class="es0">\n</span>Max Held: &quot; t/256 &quot;MB<span class="es0">\n</span>Barrier: &quot;u/256&quot;MB&quot; }}&#39;</span></div>
</li>
</ol>
</div>
<p>Sample output:<br />
<code>VPS Memory Usage<br />
Current Held: 160.832MB<br />
Max Held: 294.605MB<br />
Barrier: 256MB</code></p>
<h2>memps</h2>
<div class="geshi no bash">
<div class="head">#!/bin/bash</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;ps axo pmem,pcpu,comm | sort&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">ps</span> axo pmem,pcpu,<span class="kw2">comm</span> <span class="sy0">|</span> <span class="kw2">sort</span></div>
</li>
</ol>
</div>
<p>Sample output:<br />
<code>ps axo pmem,pcpu,comm | sort<br />
0.0  0.0 script<br />
0.0  0.0 script<br />
0.1  0.0 init<br />
#...<br />
2.2  0.0 httpd<br />
4.0  0.0 mysqld<br />
7.3  0.0 httpd<br />
8.0  0.0 httpd<br />
%MEM %CPU COMMAND</code></p>
<h2>memprivmpages</h2>
<div class="geshi no bash">
<div class="head">#!/bin/bash</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">beans=</span>`<span class="kw2">cat</span> <span class="sy0">/</span>proc<span class="sy0">/</span>user_beancounters <span class="sy0">|</span> <span class="kw2">grep</span> priv`</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">max=</span>`<span class="kw3">echo</span> <span class="re1">$beans</span> <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;{ print $4;}&#39;</span>`</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">use=</span>`<span class="kw3">echo</span> <span class="re1">$beans</span> <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;{ print $2;}&#39;</span>`</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">let</span> <span class="st0">&quot;per=$use*100/$max&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">let</span> <span class="st0">&quot;mb=$use/256&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">let</span> <span class="st0">&quot;mmb=$max/256&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;privvmpages usage: $mb MB ($per% of $mmb)&quot;</span></div>
</li>
</ol>
</div>
<p>Sample output:<br />
<code>privvmpages usage: 296 MB (57% of 512)</code><br />
For those wondering, yes I do have memory usage <em>above &#8220;100%&#8221; </em>in the output of some of these scripts, and it&#8217;s partially true. A VPS does usually have some guaranteed memory, and some &#8220;burstable&#8221; &#8211; so you can use more than just the guaranteed memory for some period of time. On the mashine I ran this I have 256 guaranteed and a &#8220;total&#8221; of 512MB &#8211; including the burstable memory.</p>
<p>If you like any of these, feel free to use them. I use them by creating a scripts directory and adding it to the PATH, so I can simply invoke them from anywhere.</p>
<p>PS: For more <strong>detailed memory usage information</strong> (as graphs etc), I&#8217;m using <a href="http://munin.projects.linpro.no/" onclick="urchinTracker('/outgoing/munin.projects.linpro.no/?referer=');"><strong>Munin</strong></a> and really recommend it. The graphs it draws are really nice, and it <strong>doesn&#8217;t</strong> inflict heavy load on the server, and it can <strong>monitor remote hosts</strong> if needed!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/coding/442/memory-usage-scripts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kill only Tomcat</title>
		<link>http://www.blog.project13.pl/index.php/coding/422/easy-way-to-kill-tomcat/</link>
		<comments>http://www.blog.project13.pl/index.php/coding/422/easy-way-to-kill-tomcat/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 22:14:47 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=422</guid>
		<description><![CDATA[There is sometimes the need to kill some JVM, I usually use &#8220;killall java&#8221; and that works fine as long as that&#8217;s in fact what I want &#8211; kill ALL. But let&#8217;s say i just want to kill Tomcat and not my IDE? The below method works quite well in such an situation: [ktoso@homunculus ~]$ [...]]]></description>
			<content:encoded><![CDATA[<p>There is sometimes the need to kill some JVM, I usually use &#8220;killall java&#8221; and that works fine as long as that&#8217;s in fact what I want &#8211; kill ALL. But let&#8217;s say i just want to kill Tomcat and not my IDE? The below method works quite well in such an situation:</p>
<div class="geshi no bash">
<div class="head">[ktoso@homunculus ~]$ sudo netstat -lpn | grep 8080</div>
<ol>
<li class="li1">
<div class="de1">tcp &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">0</span> &nbsp; &nbsp; &nbsp;<span class="nu0">0</span> :::<span class="nu0">8080</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; :::<span class="sy0">*</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;LISTEN &nbsp; &nbsp; &nbsp;<span class="nu0">18525</span><span class="sy0">/</span>java</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span>ktoso<span class="sy0">@</span>homunculus ~<span class="br0">&#93;</span>$ <span class="kw2">kill</span> <span class="nu0">18525</span> <span class="co0"># you might need to add -9 here (SIGKILL)</span></div>
</li>
</ol>
</div>
<p>A quickly hacked up version of an simple shell script to kill this tomcat could look like (I still suck at awk&#8230;):</p>
<div class="geshi no bash">
<div class="head">#!/bin/sh</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw2">kill</span> <span class="nu0">-9</span> `<span class="kw2">netstat</span> -lpn <span class="sy0">|</span> <span class="kw2">grep</span> <span class="nu0">8080</span> <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;{print $7}&#39;</span> <span class="sy0">|</span> <span class="kw2">awk</span> -F<span class="sy0">/</span> <span class="st0">&#39;{print $1}&#39;</span>`</div>
</li>
</ol>
</div>
<p>The above obviously sux, as we&#8217;re using two awk commands after another&#8230; Ans also in the above examples, I&#8217;ve assumed that tomcat is listening on 8080, this may not always be the case, since with mod_proxy_ajp, there is no need fot it to listen on it&#8217;s default port and just the one to communicate by AJP. Let&#8217;s use it&#8217;s name to find it&#8217;s PID, we&#8217;ll use ps and grep and awk &#8211; life is simple with them. :-)<br />
Here&#8217;s the final version of this command: </p>
<div class="geshi no bash">
<div class="head">#!/bin/sh</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw2">kill</span> <span class="nu0">-9</span> `<span class="kw2">ps</span> aux <span class="sy0">|</span> <span class="kw2">grep</span> catalina <span class="sy0">|</span> <span class="kw2">awk</span> <span class="st0">&#39;{print $2}&#39;</span>`</div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/coding/422/easy-way-to-kill-tomcat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(Almost) Automatically convert files into PDF</title>
		<link>http://www.blog.project13.pl/index.php/fun/285/almost-automatically-convert-files-into-pdf/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/285/almost-automatically-convert-files-into-pdf/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 00:56:55 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[terminal heroes]]></category>
		<category><![CDATA[cool]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[trick]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[wget]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=285</guid>
		<description><![CDATA[I&#8217;m learning Numerical Analysis right now and a friend of mine found some really nice PS files by dr Marian Bubek ( http://www.icsr.agh.edu.pl/~mownit/mownit.html ). I was really happy to see some *.ps but some people from my fellow students started complaining that they&#8217;d rather have pdf&#8217;s and not ghostscript files (who knows why they&#8217;d do..?). [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m learning Numerical Analysis right now and a friend of mine found some really nice PS files by dr Marian Bubek ( <a href="http://www.icsr.agh.edu.pl/~mownit/mownit.html" onclick="urchinTracker('/outgoing/www.icsr.agh.edu.pl/_mownit/mownit.html?referer=');">http://www.icsr.agh.edu.pl/~mownit/mownit.html</a> ). I was really happy to see some *.ps but some people from my fellow students started complaining that they&#8217;d rather have pdf&#8217;s and not ghostscript files <em>(who knows why they&#8217;d do..?)</em>. Anyways, they all had &#8220;manual&#8221; repetitious methods for converting the files &#8211; even uploading to somewebsite to have them converted over there &#8220;in the cloud&#8221;&#8230; I though of a slightly quicker and more efficient way, here it is, hope you&#8217;ll like it. Ah, there is One &#8220;non standard&#8221; requirement for this to work, you have to install <strong>cups-pdf</strong> :-)</p>
<div class="geshi no bash">
<div class="head">wget http://www.icsr.agh.edu.pl/~mownit/mownit.html -r &#8211;level 1 -A.ps &#8211;cut-dirs 4</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw2">mv</span> www.icsr.agh.edu.pl<span class="sy0">/*</span> .</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">rm</span> -rf www.icsr.agh.edu.pl<span class="sy0">/</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">for</span> <span class="kw2">file</span> <span class="kw1">in</span> `<span class="kw2">dir</span> -f <span class="sy0">*</span>` ; <span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw2">lpr</span> -P <span class="st0">&#39;cups-PDF&#39;</span> <span class="re1">$file</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw3">echo</span> <span class="st0">&quot;press enter when cups is done printing&#8230;&quot;</span> <span class="co0">#yeah, i got lazy here, one could watch lpq for changes etc.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw2">read</span> oczekiwanie;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw2">mv</span> <span class="sy0">/</span>home<span class="sy0">/</span>ktoso<span class="sy0">/</span>Pulpit<span class="sy0">/</span>cups-pdf<span class="sy0">/</span>template.pdf .<span class="sy0">/</span><span class="re1">$file</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">done</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># ________________ </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0">#&lt; Happy hacking! &gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># &#8212;&#8212;&#8212;&#8212;&#8212;- </span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># &nbsp; &nbsp; &nbsp; &nbsp;\ &nbsp; ^__^</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># &nbsp; &nbsp; &nbsp; &nbsp; \ &nbsp;(oo)\_______</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(__)\ &nbsp; &nbsp; &nbsp; )\/\</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;||&#8212;-w |</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|| &nbsp; &nbsp; ||</span></div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/285/almost-automatically-convert-files-into-pdf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AWK and multiple lines from shell command</title>
		<link>http://www.blog.project13.pl/index.php/coding/274/awk-and-multiple-lines-from-shell-command/</link>
		<comments>http://www.blog.project13.pl/index.php/coding/274/awk-and-multiple-lines-from-shell-command/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 15:11:16 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=274</guid>
		<description><![CDATA[Let&#8217;s say you want to read the ps output inside an AWK script, it&#8217;s not so simple since system returns an exit code and not the string you want &#8211; it&#8217;s being sent to stdout, here is a simple trick to read multiple lines from a shell command inside awk: awk 'BEGIN{while ("ps aux" &#124; [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s say you want to read the ps output inside an AWK script, it&#8217;s not so simple since system returns an exit code and not the string you want &#8211; it&#8217;s being sent to stdout, here is a simple trick to read multiple lines from a shell command inside awk:<br />
<code>awk 'BEGIN{while ("ps aux" | getline){ print "test " $1 " test"}}' /dev/null | more</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/coding/274/awk-and-multiple-lines-from-shell-command/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>yum: TypeError: rpmdb open failed</title>
		<link>http://www.blog.project13.pl/index.php/coding/197/yum-typeerror-rpmdb-open-failed/</link>
		<comments>http://www.blog.project13.pl/index.php/coding/197/yum-typeerror-rpmdb-open-failed/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 02:58:24 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=197</guid>
		<description><![CDATA[I recently had this following fatal error on an CentOS VPS server: Loaded plugins: fastestmirror error: no dbpath has been set error: cannot open Packages database in /%{_dbpath} Traceback (most recent call last): File "/usr/bin/yum", line 29, in ? yummain.user_main(sys.argv[1:], exit_code=True) File "/usr/share/yum-cli/yummain.py", line 229, in user_main errcode = main(args) File "/usr/share/yum-cli/yummain.py", line 84, in [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had this following fatal error on an <strong>CentOS</strong> VPS server:<br />
<code>Loaded plugins: fastestmirror<br />
error: no dbpath has been set<br />
error: cannot open Packages database in /%{_dbpath}<br />
Traceback (most recent call last):<br />
File "/usr/bin/yum", line 29, in ?<br />
yummain.user_main(sys.argv[1:], exit_code=True)<br />
File "/usr/share/yum-cli/yummain.py", line 229, in user_main<br />
errcode = main(args)<br />
File "/usr/share/yum-cli/yummain.py", line 84, in main<br />
base.getOptionsConfig(args)<br />
File "/usr/share/yum-cli/cli.py", line 184, in getOptionsConfig<br />
enabled_plugins=self.optparser._splitArg(opts.enableplugins))<br />
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 191, in _getConfig<br />
self._conf = config.readMainConfig(startupconf)<br />
File "/usr/lib/python2.4/site-packages/yum/config.py", line 754, in readMainConfig<br />
yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.distroverpkg)<br />
File "/usr/lib/python2.4/site-packages/yum/config.py", line 824, in _getsysver<br />
idx = ts.dbMatch('provides', distroverpkg)<br />
<span style="color: #ff0000;">TypeError: rpmdb open failed</span></code>But after some greping the web i found the sollution:<code>#rm /dev/urandom<br />
#mknod -m 644 /dev/urandom c 1 9</code>Seems a little like magic, but it fixed the problem. No idea what caused this error though&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/coding/197/yum-typeerror-rpmdb-open-failed/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Smart webpage migration</title>
		<link>http://www.blog.project13.pl/index.php/coding/163/smart-webpage-mirgating/</link>
		<comments>http://www.blog.project13.pl/index.php/coding/163/smart-webpage-mirgating/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 18:15:15 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[trick]]></category>
		<category><![CDATA[web dev]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=163</guid>
		<description><![CDATA[I recently had to migrate a big website &#8211; about 5GB &#8211; to a new server. That could take a while to do, right? Well, maybe if you did it like that (the not smart way): Thanks goodness I&#8217;m not really keen on doing stuff the slow &#8220;not_smart&#8221; way, and the new server is a [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had to migrate a big website &#8211; about 5GB &#8211; to a new server. That could take a while to do, right? Well, maybe if you did it like that (the not smart way):</p>
<div class="wp-caption aligncenter" style="width: 335px"><img class=" " title="not smart way" src="http://farm3.static.flickr.com/2491/3862842718_76b41e0cf2.jpg" alt="Oh man, that would take sooo much time..." width="325" height="118" /><p class="wp-caption-text">Oh man, that would take sooo much time...</p></div>
<p>Thanks goodness I&#8217;m not really keen on doing stuff the slow &#8220;not_smart&#8221; way, and the new server is a dedicated CentOS machine! :-) So, what did I do?</p>
<div class="wp-caption aligncenter" style="width: 335px"><img class=" " title="the SMART way" src="http://farm3.static.flickr.com/2522/3862839920_37aeabf31a.jpg" alt="Yeah, no time wasted here!" width="325" height="132" /><p class="wp-caption-text">Yeah, no time wasted here!</p></div>
<p>There&#8217;s a lot of ways to accomplish this if you have shell access. You could:</p>
<ol>
<li>
<pre>wget -r --user=login --password='pass' ftp://admin:example.com/folder/</pre>
</li>
<li>
<pre>ncftp #normal ftp should also work the same way
open ftp://example.com
login
pass
mget -r folder</pre>
</li>
<li>Yes, SCP is a great tool for this kind of situation, but i couldn&#8217;t use it since the old server didn&#8217;t have ssh acces :-( Here is how it could be used in such a situation:
<pre>scp -r login@old.example.com:/home/folder login@new.example.com:/home/folder</pre>
</li>
</ol>
<p>I used the second method and am quite satisvied with it, as the servers did all the migrating i set up the database and did some other project related stuff&#8230; :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/coding/163/smart-webpage-mirgating/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

