diff options
Diffstat (limited to 'gemfeed/2011-05-07-perl-daemon-service-framework.html')
| -rw-r--r-- | gemfeed/2011-05-07-perl-daemon-service-framework.html | 138 |
1 files changed, 72 insertions, 66 deletions
diff --git a/gemfeed/2011-05-07-perl-daemon-service-framework.html b/gemfeed/2011-05-07-perl-daemon-service-framework.html index d68f12ca..071bf51b 100644 --- a/gemfeed/2011-05-07-perl-daemon-service-framework.html +++ b/gemfeed/2011-05-07-perl-daemon-service-framework.html @@ -2,12 +2,17 @@ <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Perl Daemon (Service Framework)</title> <link rel="shortcut icon" type="image/gif" href="/favicon.ico" /> <link rel="stylesheet" href="../style.css" /> <link rel="stylesheet" href="style-override.css" /> </head> -<body> +<body class="rfx-boot"> +<div class="rfx-overlay-grid"></div> +<div class="rfx-overlay-scanlines"></div> +<div id="rfx-stars"></div> +<div class="rfx-vignette"></div> <p class="header"> <a href="https://foo.zone">Home</a> | <a href="https://codeberg.org/snonux/foo.zone/src/branch/content-md/gemfeed/2011-05-07-perl-daemon-service-framework.md">Markdown</a> | <a href="gemini://foo.zone/gemfeed/2011-05-07-perl-daemon-service-framework.gmi">Gemini</a> </p> @@ -58,14 +63,14 @@ by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre><i><font color="silver"># Starting</font></i> - ./bin/perldaemon start (or shortcut ./control start) +<pre><i><font color="#ababab"># Starting</font></i> +<font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">/bin/perldaemon start </font><font color="#F3E651">(</font><font color="#ff0000">or shortcut </font><font color="#F3E651">.</font><font color="#ff0000">/control start</font><font color="#F3E651">)</font> -<i><font color="silver"># Stopping</font></i> - ./bin/perldaemon stop (or shortcut ./control stop) +<i><font color="#ababab"># Stopping</font></i> +<font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">/bin/perldaemon stop </font><font color="#F3E651">(</font><font color="#ff0000">or shortcut </font><font color="#F3E651">.</font><font color="#ff0000">/control stop</font><font color="#F3E651">)</font> -<i><font color="silver"># Alternatively: Starting in foreground </font></i> -./bin/perldaemon start daemon.daemonize=no (or shortcut ./control foreground) +<i><font color="#ababab"># Alternatively: Starting in foreground </font></i> +<font color="#F3E651">.</font><font color="#ff0000">/bin/perldaemon start daemon</font><font color="#F3E651">.</font><font color="#ff0000">daemonize</font><font color="#F3E651">=</font><font color="#ff0000">no </font><font color="#F3E651">(</font><font color="#ff0000">or shortcut </font><font color="#F3E651">.</font><font color="#ff0000">/control foreground</font><font color="#F3E651">)</font> </pre> <br /> <span>To stop a daemon from running in foreground mode, "Ctrl+C" must be hit. To see more available startup options run "./control" without any argument.</span><br /> @@ -78,30 +83,30 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre>pb@titania:~/svn/utils/perldaemon/trunk$ ./control keys -<i><font color="silver"># Path to the logfile</font></i> -daemon.logfile=./log/perldaemon.log +<pre><font color="#ff0000">pb@titania</font><font color="#F3E651">:~</font><font color="#ff0000">/svn/utils/perldaemon/trunk$ </font><font color="#F3E651">.</font><font color="#ff0000">/control keys</font> +<i><font color="#ababab"># Path to the logfile</font></i> +<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">logfile</font><font color="#F3E651">=.</font><font color="#ff0000">/log/perldaemon</font><font color="#F3E651">.</font><font color="#ff0000">log</font> -<i><font color="silver"># The amount of seconds until the next event look takes place</font></i> -daemon.loopinterval=<font color="#000000">1</font> +<i><font color="#ababab"># The amount of seconds until the next event look takes place</font></i> +<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">1</font> -<i><font color="silver"># Path to the modules dir</font></i> -daemon.modules.dir=./lib/PerlDaemonModules +<i><font color="#ababab"># Path to the modules dir</font></i> +<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">modules</font><font color="#F3E651">.</font><font color="#ff0000">dir</font><font color="#F3E651">=.</font><font color="#ff0000">/lib/PerlDaemonModules</font> -<i><font color="silver"># Specifies either the daemon should run in daemon or foreground mode</font></i> -daemon.daemonize=yes +<i><font color="#ababab"># Specifies either the daemon should run in daemon or foreground mode</font></i> +<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">daemonize</font><font color="#F3E651">=</font><font color="#ff0000">yes</font> -<i><font color="silver"># Path to the pidfile</font></i> -daemon.pidfile=./run/perldaemon.pid +<i><font color="#ababab"># Path to the pidfile</font></i> +<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">pidfile</font><font color="#F3E651">=.</font><font color="#ff0000">/run/perldaemon</font><font color="#F3E651">.</font><font color="#ff0000">pid</font> -<i><font color="silver"># Each module should run every run interval seconds</font></i> -daemon.modules.runinterval=<font color="#000000">3</font> +<i><font color="#ababab"># Each module should run every run interval seconds</font></i> +<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">modules</font><font color="#F3E651">.</font><font color="#ff0000">runinterval</font><font color="#F3E651">=</font><font color="#bb00ff">3</font> -<i><font color="silver"># Path to the alive file (is touched every loop interval seconds, usable for monitoring)</font></i> -daemon.alivefile=./run/perldaemon.alive +<i><font color="#ababab"># Path to the alive file (is touched every loop interval seconds, usable for monitoring)</font></i> +<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">alivefile</font><font color="#F3E651">=.</font><font color="#ff0000">/run/perldaemon</font><font color="#F3E651">.</font><font color="#ff0000">alive</font> -<i><font color="silver"># Specifies the working directory</font></i> -daemon.wd=./ +<i><font color="#ababab"># Specifies the working directory</font></i> +<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">wd</font><font color="#F3E651">=./</font> </pre> <br /> <h2 style='display: inline' id='example-'>Example </h2><br /> @@ -112,17 +117,17 @@ daemon.wd=./ by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre>$ ./control keys | grep daemon.loopinterval -daemon.loopinterval=<font color="#000000">1</font> -$ ./control keys daemon.loopinterval=<font color="#000000">10</font> | grep daemon.loopinterval -daemon.loopinterval=<font color="#000000">10</font> -$ ./control start daemon.loopinterval=<font color="#000000">10</font>; sleep <font color="#000000">10</font>; tail -n <font color="#000000">2</font> log/perldaemon.log -Starting daemon now... -Mon Jun <font color="#000000">13</font> <font color="#000000">11</font>:<font color="#000000">29</font>:<font color="#000000">27</font> <font color="#000000">2011</font> (PID <font color="#000000">2838</font>): Triggering PerlDaemonModules::ExampleModule -(last triggered before <font color="#000000">10</font>.002106s; carry: <font color="#000000">7</font>.002106s; wanted interval: 3s) -Mon Jun <font color="#000000">13</font> <font color="#000000">11</font>:<font color="#000000">29</font>:<font color="#000000">27</font> <font color="#000000">2011</font> (PID <font color="#000000">2838</font>): ExampleModule Test <font color="#000000">2</font> -$ ./control stop -Stopping daemon now... +<pre><font color="#ff0000">$ </font><font color="#F3E651">.</font><font color="#ff0000">/control keys </font><font color="#F3E651">|</font><font color="#ff0000"> grep daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font> +<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">1</font> +<font color="#ff0000">$ </font><font color="#F3E651">.</font><font color="#ff0000">/control keys daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">10</font><font color="#ff0000"> </font><font color="#F3E651">|</font><font color="#ff0000"> grep daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font> +<font color="#ff0000">daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">10</font> +<font color="#ff0000">$ </font><font color="#F3E651">.</font><font color="#ff0000">/control start daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">10</font><font color="#F3E651">;</font><font color="#ff0000"> sleep </font><font color="#bb00ff">10</font><font color="#F3E651">;</font><font color="#ff0000"> tail -n </font><font color="#bb00ff">2</font><font color="#ff0000"> log/perldaemon</font><font color="#F3E651">.</font><font color="#ff0000">log</font> +<font color="#ff0000">Starting daemon now</font><font color="#F3E651">...</font> +<font color="#ff0000">Mon Jun </font><font color="#bb00ff">13</font><font color="#ff0000"> </font><font color="#bb00ff">11</font><font color="#F3E651">:</font><font color="#bb00ff">29</font><font color="#F3E651">:</font><font color="#bb00ff">27</font><font color="#ff0000"> </font><font color="#bb00ff">2011</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">PID </font><font color="#bb00ff">2838</font><font color="#F3E651">):</font><font color="#ff0000"> Triggering PerlDaemonModules</font><font color="#F3E651">::</font><font color="#ff0000">ExampleModule </font> +<font color="#F3E651">(</font><font color="#ff0000">last triggered before </font><font color="#bb00ff">10</font><font color="#F3E651">.</font><font color="#ff0000">002106s</font><font color="#F3E651">;</font><font color="#ff0000"> carry</font><font color="#F3E651">:</font><font color="#ff0000"> </font><font color="#bb00ff">7</font><font color="#F3E651">.</font><font color="#ff0000">002106s</font><font color="#F3E651">;</font><font color="#ff0000"> wanted interval</font><font color="#F3E651">:</font><font color="#ff0000"> 3s</font><font color="#F3E651">)</font> +<font color="#ff0000">Mon Jun </font><font color="#bb00ff">13</font><font color="#ff0000"> </font><font color="#bb00ff">11</font><font color="#F3E651">:</font><font color="#bb00ff">29</font><font color="#F3E651">:</font><font color="#bb00ff">27</font><font color="#ff0000"> </font><font color="#bb00ff">2011</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">PID </font><font color="#bb00ff">2838</font><font color="#F3E651">):</font><font color="#ff0000"> ExampleModule Test </font><font color="#bb00ff">2</font> +<font color="#ff0000">$ </font><font color="#F3E651">.</font><font color="#ff0000">/control stop</font> +<font color="#ff0000">Stopping daemon now</font><font color="#F3E651">...</font> </pre> <br /> <span>If you want to change that property forever, either edit perldaemon.conf or do this:</span><br /> @@ -131,7 +136,7 @@ Stopping daemon now... by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre>$ ./control keys daemon.loopinterval=<font color="#000000">10</font> > new.conf; mv new.conf conf/perldaemon.conf +<pre><font color="#ff0000">$ </font><font color="#F3E651">.</font><font color="#ff0000">/control keys daemon</font><font color="#F3E651">.</font><font color="#ff0000">loopinterval</font><font color="#F3E651">=</font><font color="#bb00ff">10</font><font color="#ff0000"> </font><font color="#F3E651">></font><font color="#ff0000"> new</font><font color="#F3E651">.</font><font color="#ff0000">conf</font><font color="#F3E651">;</font><font color="#ff0000"> mv new</font><font color="#F3E651">.</font><font color="#ff0000">conf conf/perldaemon</font><font color="#F3E651">.</font><font color="#ff0000">conf</font> </pre> <br /> <h2 style='display: inline' id='hires-event-loop'>HiRes event loop</h2><br /> @@ -148,35 +153,35 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre><b><u><font color="#000000">package</font></u></b> PerlDaemonModules::ExampleModule; +<pre><b><font color="#ffffff">package</font></b><font color="#ff0000"> PerlDaemonModules</font><font color="#F3E651">::</font><font color="#ff0000">ExampleModule</font><font color="#F3E651">;</font> -<b><u><font color="#000000">use</font></u></b> strict; -<b><u><font color="#000000">use</font></u></b> warnings; +<b><font color="#ffffff">use</font></b><font color="#ff0000"> strict</font><font color="#F3E651">;</font> +<b><font color="#ffffff">use</font></b><font color="#ff0000"> warnings</font><font color="#F3E651">;</font> -<b><u><font color="#000000">sub</font></u></b> new ($$$) { - <b><u><font color="#000000">my</font></u></b> ($class, $conf) = @_; +<b><font color="#ffffff">sub</font></b><font color="#ff0000"> </font><font color="#7bc710">new</font><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">$$$</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font> +<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">$class</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">$conf</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#ff0000">@_</font><font color="#F3E651">;</font> - <b><u><font color="#000000">my</font></u></b> $self = <b><u><font color="#000000">bless</font></u></b> { conf => $conf }, $class; +<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$self</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#ffffff">bless</font></b><font color="#ff0000"> </font><font color="#F3E651">{</font><font color="#ff0000"> conf </font><font color="#F3E651">=></font><font color="#ff0000"> </font><font color="#ff0000">$conf</font><font color="#ff0000"> </font><font color="#F3E651">}</font><font color="#F3E651">,</font><font color="#ff0000"> </font><font color="#ff0000">$class</font><font color="#F3E651">;</font> - <i><font color="silver"># Store some private module stuff</font></i> - $self->{counter} = <font color="#000000">0</font>; +<font color="#ff0000"> </font><i><font color="#ababab"># Store some private module stuff</font></i> +<font color="#ff0000"> </font><font color="#ff0000">$self</font><font color="#F3E651">-></font><font color="#F3E651">{</font><font color="#ff0000">counter</font><font color="#F3E651">}</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#bb00ff">0</font><font color="#F3E651">;</font> - <b><u><font color="#000000">return</font></u></b> $self; -} +<font color="#ff0000"> </font><b><font color="#ffffff">return</font></b><font color="#ff0000"> </font><font color="#ff0000">$self</font><font color="#F3E651">;</font> +<font color="#F3E651">}</font> -<i><font color="silver"># Runs periodically in a loop (set interval in perldaemon.conf)</font></i> -<b><u><font color="#000000">sub</font></u></b> <b><u><font color="#000000">do</font></u></b> ($) { - <b><u><font color="#000000">my</font></u></b> $self = <b><u><font color="#000000">shift</font></u></b>; - <b><u><font color="#000000">my</font></u></b> $conf = $self->{conf}; - <b><u><font color="#000000">my</font></u></b> $logger = $conf->{logger}; +<i><font color="#ababab"># Runs periodically in a loop (set interval in perldaemon.conf)</font></i> +<b><font color="#ffffff">sub</font></b><font color="#ff0000"> </font><b><font color="#ffffff">do</font></b><font color="#ff0000"> </font><font color="#F3E651">(</font><font color="#ff0000">$</font><font color="#F3E651">)</font><font color="#ff0000"> </font><font color="#F3E651">{</font> +<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$self</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><b><font color="#ffffff">shift</font></b><font color="#F3E651">;</font> +<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$conf</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#ff0000">$self</font><font color="#F3E651">-></font><font color="#F3E651">{</font><font color="#ff0000">conf</font><font color="#F3E651">}</font><font color="#F3E651">;</font> +<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$logger</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#ff0000">$conf</font><font color="#F3E651">-></font><font color="#F3E651">{</font><font color="#ff0000">logger</font><font color="#F3E651">}</font><font color="#F3E651">;</font> - <i><font color="silver"># Calculate some private module stuff</font></i> - <b><u><font color="#000000">my</font></u></b> $count = ++$self->{counter}; +<font color="#ff0000"> </font><i><font color="#ababab"># Calculate some private module stuff</font></i> +<font color="#ff0000"> </font><b><font color="#ffffff">my</font></b><font color="#ff0000"> </font><font color="#ff0000">$count</font><font color="#ff0000"> </font><font color="#F3E651">=</font><font color="#ff0000"> </font><font color="#F3E651">++</font><font color="#ff0000">$self</font><font color="#F3E651">-></font><font color="#F3E651">{</font><font color="#ff0000">counter</font><font color="#F3E651">}</font><font color="#F3E651">;</font> - $logger->logmsg(<font color="#808080">"ExampleModule Test $count"</font>); -} +<font color="#ff0000"> </font><font color="#ff0000">$logger</font><font color="#F3E651">-></font><font color="#7bc710">logmsg</font><font color="#F3E651">(</font><font color="#bb00ff">"ExampleModule Test $count"</font><font color="#F3E651">);</font> +<font color="#F3E651">}</font> -<font color="#000000">1</font>; +<font color="#bb00ff">1</font><font color="#F3E651">;</font> </pre> <br /> <h3 style='display: inline' id='your-own-module'>Your own module</h3><br /> @@ -187,11 +192,11 @@ http://www.gnu.org/software/src-highlite --> by Lorenzo Bettini http://www.lorenzobettini.it http://www.gnu.org/software/src-highlite --> -<pre> cd ./lib/PerlDaemonModules/ - cp ExampleModule.pm YourModule.pm - vi YourModule.pm - cd - - ./bin/perldaemon restart (or shortcurt ./control restart) +<pre><font color="#ff0000"> cd </font><font color="#F3E651">.</font><font color="#ff0000">/lib/PerlDaemonModules</font><font color="#F3E651">/</font> +<font color="#ff0000"> cp ExampleModule</font><font color="#F3E651">.</font><font color="#ff0000">pm YourModule</font><font color="#F3E651">.</font><font color="#ff0000">pm</font> +<font color="#ff0000"> vi YourModule</font><font color="#F3E651">.</font><font color="#ff0000">pm</font> +<font color="#ff0000"> cd -</font> +<font color="#ff0000"> </font><font color="#F3E651">.</font><font color="#ff0000">/bin/perldaemon restart </font><font color="#F3E651">(</font><font color="#ff0000">or shortcurt </font><font color="#F3E651">.</font><font color="#ff0000">/control restart</font><font color="#F3E651">)</font> </pre> <br /> <span>Now watch <span class='inlinecode'>./log/perldaemon.log</span> closely. It is a good practice to test your modules in 'foreground mode' (see above how to do that).</span><br /> @@ -215,11 +220,12 @@ http://www.gnu.org/software/src-highlite --> <br /> <a class='textlink' href='../'>Back to the main site</a><br /> <p class="footer"> - Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> | - served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> | - <a href="https://foo.zone/site-mirrors.html">Site Mirrors</a> - <br /> - Webring: <a href="https://shring.sh/foo.zone/previous">previous</a> | <a href="https://shring.sh">shring</a> | <a href="https://shring.sh/foo.zone/next">next</a> + Generated with <a href="https://codeberg.org/snonux/gemtexter">Gemtexter 3.0.1-develop</a> | + served by <a href="https://www.OpenBSD.org">OpenBSD</a>/<a href="https://man.openbsd.org/relayd.8">relayd(8)</a>+<a href="https://man.openbsd.org/httpd.8">httpd(8)</a> | + <a href="https://foo.zone/site-mirrors.html">Site Mirrors</a> + <br /> + Webring: <a href="https://shring.sh/foo.zone/previous">previous</a> | <a href="https://shring.sh">shring</a> | <a href="https://shring.sh/foo.zone/next">next</a> </p> +<script type="text/javascript" src="../retrofuturistic.js"></script> </body> </html> |
