<?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>Subjectively &#187; os/x mac bash daemon script</title>
	<atom:link href="http://kirk.webfinish.com/tag/osx-mac-bash-daemon-script/feed/" rel="self" type="application/rss+xml" />
	<link>http://kirk.webfinish.com</link>
	<description>dd if=/dev/random &#124; kirk &#62; blog</description>
	<lastBuildDate>Thu, 09 Sep 2010 23:31:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>OS/X daemon script template</title>
		<link>http://kirk.webfinish.com/2009/11/osx-daemon-script-template/</link>
		<comments>http://kirk.webfinish.com/2009/11/osx-daemon-script-template/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 22:57:13 +0000</pubDate>
		<dc:creator>Kirk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[os/x mac bash daemon script]]></category>

		<guid isPermaLink="false">http://kirk.webfinish.com/2009/11/osx-daemon-script-template/</guid>
		<description><![CDATA[This is a daemon script written for OS/X in bash.  It can be run either as a daemon or a launchd service. ]]></description>
			<content:encoded><![CDATA[<p>This is a daemon script written for OS/X in bash.  It can be run either as a daemon or a launchd service.  The launchd service file will follow in a later post.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># put these lines in the file header comment</span>
<span style="color: #666666; font-style: italic;">#          FILE:  |FILENAME|</span>
<span style="color: #666666; font-style: italic;">#         USAGE:  ./|FILENAME| start [ stop | restart ] [ --nofork ] [ --debug ]</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#-----------------------------------------------------------------------</span>
<span style="color: #666666; font-style: italic;">#Uncomment the following line to echo all commands to the terminal</span>
<span style="color: #666666; font-style: italic;">#-----------------------------------------------------------------------</span>
<span style="color: #666666; font-style: italic;">#set -x</span>
<span style="color: #666666; font-style: italic;"># better yet, set the --debug command line flag and syslog it.</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#===  FUNCTION  ================================================================</span>
<span style="color: #666666; font-style: italic;">#          NAME:  cleanup</span>
<span style="color: #666666; font-style: italic;">#   DESCRIPTION:  post service processing (clean temp space,pid files)</span>
<span style="color: #666666; font-style: italic;">#    PARAMETERS:  none</span>
<span style="color: #666666; font-style: italic;">#       RETURNS:  none</span>
<span style="color: #666666; font-style: italic;">#===============================================================================</span>
<span style="color: #000000; font-weight: bold;">function</span> cleanup <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;trap exit&quot;</span>
  <span style="color: #666666; font-style: italic;">#Don't recurse in the exit trap</span>
  <span style="color: #7a0874; font-weight: bold;">trap</span> - INT TERM EXIT
  <span style="color: #666666; font-style: italic;">#remove the pid file cleanly on exit</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span>
  <span style="color: #666666; font-style: italic;">#add other post processing cleanup here</span>
  <span style="color: #7a0874; font-weight: bold;">exit</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#===  FUNCTION  ================================================================</span>
<span style="color: #666666; font-style: italic;">#          NAME:  isrunning</span>
<span style="color: #666666; font-style: italic;">#   DESCRIPTION:  is any previous instance of this script already running</span>
<span style="color: #666666; font-style: italic;">#    PARAMETERS:  pidfile location</span>
<span style="color: #666666; font-style: italic;">#       RETURNS:  boolean</span>
<span style="color: #666666; font-style: italic;">#===============================================================================</span>
<span style="color: #000000; font-weight: bold;">function</span> isrunning<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  <span style="color: #007800;">pidfile</span>=<span style="color: #ff0000;">&quot;$1&quot;</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">return</span> <span style="color: #000000;">1</span>  <span style="color: #666666; font-style: italic;">#pid file is nonexistent</span>
  <span style="color: #007800;">procpid</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$procpid</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">return</span> <span style="color: #000000;">1</span>  <span style="color: #666666; font-style: italic;">#pid file contains no pid</span>
  <span style="color: #666666; font-style: italic;"># check process list for pid existence and is an instance of this script</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">ps</span> <span style="color: #660033;">-p</span> <span style="color: #007800;">$procpid</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">basename</span> $<span style="color: #000000;">0</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> == <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #007800;">value</span>=<span style="color: #000000;">0</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #007800;">value</span>=<span style="color: #000000;">1</span>
  <span style="color: #7a0874; font-weight: bold;">return</span> <span style="color: #007800;">$value</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#===  FUNCTION  ================================================================</span>
<span style="color: #666666; font-style: italic;">#          NAME:  createpidfile</span>
<span style="color: #666666; font-style: italic;">#   DESCRIPTION:  atomic creation of pid file with no race condition</span>
<span style="color: #666666; font-style: italic;">#    PARAMETERS:  the pid to put in the file, the filename to use as a lock</span>
<span style="color: #666666; font-style: italic;">#       RETURNS:  none</span>
<span style="color: #666666; font-style: italic;">#===============================================================================</span>
<span style="color: #000000; font-weight: bold;">function</span> createpidfile<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  <span style="color: #007800;">mypid</span>=$<span style="color: #000000;">1</span>
  <span style="color: #007800;">pidfile</span>=$<span style="color: #000000;">2</span>
  <span style="color: #666666; font-style: italic;">#Close stderr, don't overwrite existing file, shove my pid in the lock file.</span>
  $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">exec</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;&amp;</span>-; <span style="color: #000000; font-weight: bold;">set</span> <span style="color: #660033;">-o</span> noclobber; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$mypid</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> 
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #666666; font-style: italic;">#Lock file creation failed</span>
  <span style="color: #007800;">procpid</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$mypid</span> <span style="color: #660033;">-ne</span> <span style="color: #007800;">$procpid</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    <span style="color: #666666; font-style: italic;">#I'm not the pid in the lock file</span>
    <span style="color: #666666; font-style: italic;"># Is the process pid in the lockfile still running?</span>
    isrunning <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
      <span style="color: #666666; font-style: italic;"># No.  Kill the pidfile and relaunch ourselves properly.</span>
      <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span>
      $<span style="color: #000000;">0</span> $<span style="color: #000000; font-weight: bold;">@</span> <span style="color: #000000; font-weight: bold;">&amp;</span>
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
    <span style="color: #7a0874; font-weight: bold;">exit</span>
  <span style="color: #7a0874; font-weight: bold;">&#125;</span>
  <span style="color: #666666; font-style: italic;">#  I win!  set a trap for the lockfile on exit</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">#-----------------------------------------------------------------------</span>
<span style="color: #666666; font-style: italic;">#  Check number of command line arguments</span>
<span style="color: #666666; font-style: italic;">#-----------------------------------------------------------------------</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$#</span> <span style="color: #660033;">-lt</span> <span style="color: #000000;">1</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$#</span> <span style="color: #660033;">-gt</span> <span style="color: #000000;">3</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\t</span>Usage:  <span style="color: #007800;">${0##/*/}</span> start [ | stop | restart ] [ --nofork ] [ --debug ]&quot;</span>
  <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
  <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#A launchd script in OSX is not supposed to fork</span>
<span style="color: #007800;">nofork</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$*&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;\-\-nofork&quot;</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-z</span> <span style="color: #007800;">$nofork</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">nofork</span>=<span style="color: #c20cb9; font-weight: bold;">true</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #007800;">$nofork</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">nofork</span>=<span style="color: #c20cb9; font-weight: bold;">false</span>
<span style="color: #666666; font-style: italic;">#check to send everything to syslog</span>
<span style="color: #007800;">debug</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;$*&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;\-\-debug&quot;</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000; font-weight: bold;">!</span> <span style="color: #660033;">-z</span> <span style="color: #007800;">$debug</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">debug</span>=<span style="color: #c20cb9; font-weight: bold;">true</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-z</span> <span style="color: #007800;">$debug</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span> <span style="color: #007800;">debug</span>=<span style="color: #c20cb9; font-weight: bold;">false</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#configuration</span>
<span style="color: #007800;"><span style="color: #c20cb9; font-weight: bold;">basename</span></span>=<span style="color: #ff0000;">&quot;<span style="color: #780078;">`basename $0 .sh`</span>&quot;</span>
<span style="color: #666666; font-style: italic;"># look for the conf file in the same folder as the script</span>
<span style="color: #007800;">conf</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$(dirname $(which $0)</span>)/<span style="color: #007800;">${basename}</span>.conf&quot;</span> <span style="color: #666666; font-style: italic;">#&lt;-- which handles &quot;bash -x $0 start&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$conf</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">source</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$conf</span>&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#===  FUNCTION  ================================================================</span>
<span style="color: #666666; font-style: italic;">#          NAME:  pidfilename</span>
<span style="color: #666666; font-style: italic;">#   DESCRIPTION:  create a predictable pid file name, put it in the right inode</span>
<span style="color: #666666; font-style: italic;">#    PARAMETERS:  none</span>
<span style="color: #666666; font-style: italic;">#       RETURNS:  path and filename</span>
<span style="color: #666666; font-style: italic;">#===============================================================================</span>
<span style="color: #000000; font-weight: bold;">function</span> pidfilename<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  <span style="color: #007800;">myfile</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">basename</span> <span style="color: #ff0000;">&quot;$0&quot;</span> .sh<span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #007800;">whoiam</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">whoami</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
  <span style="color: #007800;">mypidfile</span>=<span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$myfile</span>.pid
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$whoiam</span>&quot;</span> == <span style="color: #ff0000;">'root'</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #007800;">mypidfile</span>=<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$myfile</span>.pid
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$mypidfile</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #007800;">pidfile</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span>pidfilename<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#find the temp directory </span>
<span style="color: #007800;"><span style="color: #c20cb9; font-weight: bold;">tempfile</span></span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">mktemp</span> <span style="color: #660033;">-t</span> j<span style="color: #7a0874; font-weight: bold;">&#41;</span> 
<span style="color: #666666; font-style: italic;">#put all of your incidentals in the tempdir </span>
<span style="color: #007800;">tempdir</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">dirname</span> <span style="color: #007800;">$tempfile</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> 
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #007800;">$tempfile</span> 
<span style="color: #666666; font-style: italic;">#Do all further processing from the root </span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span> 
<span style="color: #666666; font-style: italic;"># Load the daemon template for OSX </span>
. <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>rc.common 
<span style="color: #666666; font-style: italic;">#traps trap 'source $conf' 1  </span>
<span style="color: #666666; font-style: italic;"># response to kill -s HUP $$ should be to read the config file. </span>
<span style="color: #666666; font-style: italic;">#trap 'echo trap  0; rm -f &quot;$pidfile&quot;; exit'  0     #can't trap this, daemon will exit when parent dies. </span>
<span style="color: #666666; font-style: italic;">#trap 'cleanup'  3 15     #clean up the pidfile </span>
<span style="color: #666666; font-style: italic;">#===  FUNCTION  ================================================================ </span>
<span style="color: #666666; font-style: italic;">#          NAME:  main </span>
<span style="color: #666666; font-style: italic;">#   DESCRIPTION:  Allows daemon to be run in background </span>
<span style="color: #666666; font-style: italic;">#    PARAMETERS:  none </span>
<span style="color: #666666; font-style: italic;">#       RETURNS:  void </span>
<span style="color: #666666; font-style: italic;">#=============================================================================== </span>
<span style="color: #000000; font-weight: bold;">function</span> main<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span> 
<span style="color: #666666; font-style: italic;">#         Put your service code here </span>
<span style="color: #000000; font-weight: bold;">while</span> : <span style="color: #666666; font-style: italic;"># Loop forever </span>
<span style="color: #000000; font-weight: bold;">do</span>
   <span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">10</span>
   <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$RANDOM</span>
<span style="color: #000000; font-weight: bold;">done</span> 
<span style="color: #7a0874; font-weight: bold;">&#125;</span> 
<span style="color: #666666; font-style: italic;">#===  FUNCTION  ================================================================ </span>
<span style="color: #666666; font-style: italic;">#          NAME:  StartService </span>
<span style="color: #666666; font-style: italic;">#   DESCRIPTION:  implements function from /etc/rc.common </span>
<span style="color: #666666; font-style: italic;">#    PARAMETERS:  none </span>
<span style="color: #666666; font-style: italic;">#       RETURNS:  void </span>
<span style="color: #666666; font-style: italic;">#=============================================================================== </span>
StartService <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>   
&nbsp;
  CheckForNetwork   
&nbsp;
  isrunning <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
         <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$basename</span> is already running&quot;</span>
         <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
   <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
   <span style="color: #666666; font-style: italic;"># do the service</span>
   <span style="color: #666666; font-style: italic;">#   no fork method for launchd service   </span>
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$nofork</span>&quot;</span> == <span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
       <span style="color: #666666; font-style: italic;">#pid file with this process id</span>
      createpidfile <span style="color: #007800;">$$</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span>
      <span style="color: #7a0874; font-weight: bold;">trap</span> <span style="color: #ff0000;">'cleanup'</span> INT TERM EXIT
      <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$debug</span>&quot;</span> == <span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">trap</span> <span style="color: #ff0000;">'logger -t $0 -i -- $USER : $BASH_COMMAND'</span> DEBUG <span style="color: #666666; font-style: italic;">#syslog everything if we're debugging </span>
      <span style="color: #7a0874; font-weight: bold;">trap</span> <span style="color: #ff0000;">'logger -t $0 -i -- $USER : $BASH_COMMAND'</span> ERR  <span style="color: #666666; font-style: italic;">#log errors regardless </span>
      <span style="color: #666666; font-style: italic;">#echo $$ &gt; $pidfile</span>
      main
      <span style="color: #7a0874; font-weight: bold;">exit</span>
  <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$debug</span>&quot;</span> == <span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">trap</span> <span style="color: #ff0000;">'logger -t $0 -i -- $USER : $BASH_COMMAND'</span> DEBUG <span style="color: #666666; font-style: italic;">#syslog everything if we're debugging </span>
  <span style="color: #7a0874; font-weight: bold;">trap</span> <span style="color: #ff0000;">'logger -t $0 -i -- $USER : $BASH_COMMAND'</span> ERR  <span style="color: #666666; font-style: italic;">#log errors regardless </span>
  <span style="color: #666666; font-style: italic;"># fork and exit</span>
  main <span style="color: #000000; font-weight: bold;">&amp;</span>
  <span style="color: #666666; font-style: italic;"># create a pid file with the pid of the child</span>
  <span style="color: #666666; font-style: italic;">#  the parent will go away and leave the child owned by init</span>
  createpidfile <span style="color: #007800;">$!</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span>
  <span style="color: #7a0874; font-weight: bold;">trap</span> <span style="color: #ff0000;">'cleanup'</span> INT TERM 
<span style="color: #666666; font-style: italic;"># #echo $! &gt; $pidfile</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#===  FUNCTION  ================================================================</span>
<span style="color: #666666; font-style: italic;">#          NAME:  StopService</span>
<span style="color: #666666; font-style: italic;">#   DESCRIPTION:  implements the function from /etc/rc.common</span>
<span style="color: #666666; font-style: italic;">#    PARAMETERS:  none</span>
<span style="color: #666666; font-style: italic;">#       RETURNS:  void</span>
<span style="color: #666666; font-style: italic;">#===============================================================================</span>
StopService <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
&nbsp;
  <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-f</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
    <span style="color: #c20cb9; font-weight: bold;">kill</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">head</span> <span style="color: #660033;">-n</span> <span style="color: #000000;">1</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
    <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$pidfile</span>&quot;</span>
  <span style="color: #7a0874; font-weight: bold;">&#125;</span>
  <span style="color: #666666; font-style: italic;">#touch &quot;$quit&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#===  FUNCTION  ================================================================</span>
<span style="color: #666666; font-style: italic;">#          NAME:  RestartService</span>
<span style="color: #666666; font-style: italic;">#   DESCRIPTION:  implements the function from /etc/rc.common</span>
<span style="color: #666666; font-style: italic;">#    PARAMETERS:  none</span>
<span style="color: #666666; font-style: italic;">#       RETURNS:  void</span>
<span style="color: #666666; font-style: italic;">#===============================================================================</span>
RestartService <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
  StopService
  StartService
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#-------------------------------------------------------------------------------</span>
<span style="color: #666666; font-style: italic;">#  Call the function declared in /etc/rc.common to daemonize process</span>
<span style="color: #666666; font-style: italic;">#-------------------------------------------------------------------------------</span>
RunService <span style="color: #ff0000;">&quot;$1&quot;</span>  <span style="color: #666666; font-style: italic;">#First parameter is start/stop/restart</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://kirk.webfinish.com/2009/11/osx-daemon-script-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
