Java类:
package example;import java.util.Date;import java.util.Timer;import java.util.TimerTask;import org.apache.commons.daemon.*;class EchoTask extends TimerTask { @Override public void run() { System.out.println(new Date() + " running ..."); }}public class Main implements Daemon { private static Timer timer = null; public static void main(String[] args) { timer = new Timer(); timer.schedule(new EchoTask(), 0, 1000); } @Override public void init(DaemonContext dc) throws DaemonInitException, Exception { System.out.println("initializing ..."); } @Override public void start() throws Exception { System.out.println("starting ..."); main(null); } @Override public void stop() throws Exception { System.out.println("stopping ..."); if (timer != null) { timer.cancel(); } } @Override public void destroy() { System.out.println("done."); } }Shell启动/停止脚本:
#!/bin/sh# Setup variablesEXEC=/usr/bin/jsvcJAVA_HOME=/usr/lib/jvm/java-6-sunCLASS_PATH="/usr/share/java/commons-daemon.jar":"/path/to/your.jar"CLASS=example.MainUSER=fooPID=/tmp/example.pidLOG_OUT=/tmp/example.outLOG_ERR=/tmp/example.errdo_exec(){ $EXEC -home "$JAVA_HOME" -cp $CLASS_PATH -user $USER -outfile $LOG_OUT -errfile $LOG_ERR -pidfile $PID $1 $CLASS}case "$1" in start) do_exec ;; stop) do_exec "-stop" ;; restart) if [ -f "$PID" ]; then do_exec "-stop" do_exec else echo "service not running, will do nothing" exit 1 fi ;; *) echo "usage: daemon {start|stop|restart}" >&2 exit 3 ;;esac效果:
$ ./service start && sleep 5 && ./service stop$ cat /tmp/example.outinitializing ...starting ...Fri Oct 07 16:26:54 EEST 2011 running ...Fri Oct 07 16:26:55 EEST 2011 running ...Fri Oct 07 16:26:56 EEST 2011 running ...Fri Oct 07 16:26:57 EEST 2011 running ...Fri Oct 07 16:26:58 EEST 2011 running ...stopping ...done.



