<?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>nick.recoil.org &#187; script</title>
	<atom:link href="http://nick.recoil.org/tag/script/feed/" rel="self" type="application/rss+xml" />
	<link>http://nick.recoil.org</link>
	<description>Connector in, receiver out</description>
	<lastBuildDate>Tue, 28 Jul 2009 21:39:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Mongrel init.d script</title>
		<link>http://nick.recoil.org/2008/04/mongrel-initd-script/</link>
		<comments>http://nick.recoil.org/2008/04/mongrel-initd-script/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 12:50:00 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Ruby & Rails]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[mongrel]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I’ve slightly modified Bojan Mihelac’s Mongrel init.d script to cope with the situation where there are stale PID files left from a server failure. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve slightly modified <a href="http://source.mihelac.org/2007/3/27/customized-mongrel-startup-script">Bojan Mihelac’s Mongrel init.d script</a> to cope with the situation where there are stale <span class="caps">PID</span> files left from a server failure.</p>
<table class="CodeRay">
<tr>
<td title="click to toggle" class="line_numbers">
<pre>1<tt>
</tt>2<tt>
</tt>3<tt>
</tt>4<tt>
</tt><strong>5</strong><tt>
</tt>6<tt>
</tt>7<tt>
</tt>8<tt>
</tt>9<tt>
</tt><strong>10</strong><tt>
</tt>11<tt>
</tt>12<tt>
</tt>13<tt>
</tt>14<tt>
</tt><strong>15</strong><tt>
</tt>16<tt>
</tt>17<tt>
</tt>18<tt>
</tt>19<tt>
</tt><strong>20</strong><tt>
</tt>21<tt>
</tt>22<tt>
</tt>23<tt>
</tt>24<tt>
</tt><strong>25</strong><tt>
</tt>26<tt>
</tt>27<tt>
</tt>28<tt>
</tt>29<tt>
</tt><strong>30</strong><tt>
</tt>31<tt>
</tt>32<tt>
</tt>33<tt>
</tt>34<tt>
</tt><strong>35</strong><tt>
</tt>36<tt>
</tt>37<tt>
</tt>38<tt>
</tt>39<tt>
</tt><strong>40</strong><tt>
</tt>41<tt>
</tt>42<tt>
</tt>43<tt>
</tt>44<tt>
</tt><strong>45</strong><tt>
</tt>46<tt>
</tt>47<tt>
</tt>48<tt>
</tt>49<tt>
</tt><strong>50</strong><tt>
</tt>51<tt>
</tt>52<tt>
</tt>53<tt>
</tt>54<tt>
</tt><strong>55</strong><tt>
</tt>56<tt>
</tt>57<tt>
</tt>58<tt>
</tt>59<tt>
</tt><strong>60</strong><tt>
</tt></pre>
</td>
<td class="code">
<pre><tt>
</tt><span class="c">#!/bin/env ruby</span><tt>
</tt><span class="c">#</span><tt>
</tt><span class="c"># mongrel Startup script for Mongrel by Tim Morgan, modified by bmihelac and Nick Ludlam</span><tt>
</tt><span class="c"># Originally from http://source.mihelac.org/2007/3/27/customized-mongrel-startup-script</span><tt>
</tt><span class="c">#</span><tt>
</tt><span class="c"># chkconfig: 2345 85 15</span><tt>
</tt><span class="c"># description: mongrel manages Mongrel</span><tt>
</tt><span class="c">#</span><tt>
</tt><tt>
</tt>apps = [<tt>
</tt>  {<span class="sy">:app</span> =&gt; <span class="s"><span class="dl">'</span><span class="k">app1</span><span class="dl">'</span></span>},<tt>
</tt>  {<span class="sy">:app</span> =&gt; <span class="s"><span class="dl">'</span><span class="k">app2</span><span class="dl">'</span></span>},<tt>
</tt>  {<span class="sy">:app</span> =&gt; <span class="s"><span class="dl">'</span><span class="k">app3</span><span class="dl">'</span></span>}<tt>
</tt>]<tt>
</tt><tt>
</tt>default_port = <span class="i">8000</span><tt>
</tt>default_options = {<tt>
</tt>  <span class="sy">:app_dir</span> =&gt; <span class="s"><span class="dl">'</span><span class="k">/var/www</span><span class="dl">'</span></span>,  <span class="sy">:environment</span> =&gt; <span class="s"><span class="dl">'</span><span class="k">production</span><span class="dl">'</span></span><tt>
</tt>}<tt>
</tt><tt>
</tt>pid_location = <span class="s"><span class="dl">&quot;</span><span class="k">log/mongrel.pid</span><span class="dl">&quot;</span></span><tt>
</tt><tt>
</tt><span class="r">if</span> [<span class="s"><span class="dl">'</span><span class="k">stop</span><span class="dl">'</span></span>, <span class="s"><span class="dl">'</span><span class="k">restart</span><span class="dl">'</span></span>].include? <span class="pc">ARGV</span>.first<tt>
</tt>  apps.each <span class="r">do</span> |app|<tt>
</tt>    options = default_options.merge(app)<tt>
</tt>    path = <span class="co">File</span>.join options[<span class="sy">:app_dir</span>], options[<span class="sy">:app</span>], <span class="s"><span class="dl">&quot;</span><span class="k">current</span><span class="dl">&quot;</span></span><tt>
</tt>    puts <span class="s"><span class="dl">&quot;</span><span class="k">Stopping </span><span class="il"><span class="dl">#{</span>path<span class="dl">}</span></span><span class="k">...</span><span class="dl">&quot;</span></span><tt>
</tt>    <span class="sh"><span class="dl">`</span><span class="k">/usr/local/bin/mongrel_rails stop -c </span><span class="il"><span class="dl">#{</span>path<span class="dl">}</span></span><span class="k"> -P </span><span class="il"><span class="dl">#{</span>pid_location<span class="dl">}</span></span><span class="dl">`</span></span><tt>
</tt>  <span class="r">end</span><tt>
</tt><span class="r">end</span><tt>
</tt><tt>
</tt><span class="r">if</span> [<span class="s"><span class="dl">'</span><span class="k">start</span><span class="dl">'</span></span>, <span class="s"><span class="dl">'</span><span class="k">restart</span><span class="dl">'</span></span>].include? <span class="pc">ARGV</span>.first<tt>
</tt>  apps.each <span class="r">do</span> |app|<tt>
</tt>    options = default_options.merge(app)<tt>
</tt>    path = <span class="co">File</span>.join options[<span class="sy">:app_dir</span>], options[<span class="sy">:app</span>], <span class="s"><span class="dl">&quot;</span><span class="k">current</span><span class="dl">&quot;</span></span><tt>
</tt>    port = options[<span class="sy">:port</span>] || default_port<tt>
</tt>    pid_file = <span class="co">File</span>.join path, pid_location<tt>
</tt><tt>
</tt>    <span class="c"># Check and remove stale PID file. Platform needs &quot;ps -p&quot; support</span><tt>
</tt>    <span class="r">if</span> <span class="co">File</span>.exists?(pid_file)<tt>
</tt>      old_pid = <span class="co">File</span>.read(pid_file)<tt>
</tt>      <span class="sh"><span class="dl">`</span><span class="k">ps -p </span><span class="il"><span class="dl">#{</span>old_pid<span class="dl">}</span></span><span class="dl">`</span></span><tt>
</tt>      <span class="r">if</span> old_pid.to_i &gt; <span class="i">0</span> &amp;&amp; <span class="gv">$?</span>.exitstatus == <span class="i">1</span><tt>
</tt>        puts <span class="s"><span class="dl">&quot;</span><span class="k">Removing stale PID file</span><span class="dl">&quot;</span></span><tt>
</tt>        <span class="co">File</span>.unlink(pid_file)<tt>
</tt>      <span class="r">end</span><tt>
</tt>    <span class="r">end</span><tt>
</tt><tt>
</tt>    puts <span class="s"><span class="dl">&quot;</span><span class="k">Starting </span><span class="il"><span class="dl">#{</span>options[<span class="sy">:app</span>]<span class="dl">}</span></span><span class="k"> on </span><span class="il"><span class="dl">#{</span>port<span class="dl">}</span></span><span class="k">...</span><span class="dl">&quot;</span></span><tt>
</tt>    <span class="sh"><span class="dl">`</span><span class="k">/usr/local/bin/mongrel_rails start -d -p </span><span class="il"><span class="dl">#{</span>port<span class="dl">}</span></span><span class="k"> -e </span><span class="il"><span class="dl">#{</span>options[<span class="sy">:environment</span>]<span class="dl">}</span></span><span class="k"> -c </span><span class="il"><span class="dl">#{</span>path<span class="dl">}</span></span><span class="k"> -P log/mongrel.pid</span><span class="dl">`</span></span><tt>
</tt>    default_port = port + <span class="i">1</span><tt>
</tt><tt>
</tt>  <span class="r">end</span><tt>
</tt><span class="r">end</span><tt>
</tt><tt>
</tt><span class="r">unless</span> [<span class="s"><span class="dl">'</span><span class="k">start</span><span class="dl">'</span></span>, <span class="s"><span class="dl">'</span><span class="k">stop</span><span class="dl">'</span></span>, <span class="s"><span class="dl">'</span><span class="k">restart</span><span class="dl">'</span></span>].include? <span class="pc">ARGV</span>.first<tt>
</tt>    puts <span class="s"><span class="dl">&quot;</span><span class="k">Usage: mongrel {start|stop|restart}</span><span class="dl">&quot;</span></span><tt>
</tt>    exit<tt>
</tt><span class="r">end</span><tt>
</tt></pre>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://nick.recoil.org/2008/04/mongrel-initd-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
