NSSM 2.2. v2.2
authorIain Patterson <me@iain.cx>
Sun, 4 Apr 2010 17:34:48 +0000 (18:34 +0100)
committerIain Patterson <me@iain.cx>
Sun, 4 Apr 2010 20:36:50 +0000 (21:36 +0100)
README.txt
nssm.h

index 84a34ba..2d38eaf 100644 (file)
@@ -1,5 +1,5 @@
 NSSM: The Non-Sucking Service Manager\r
 NSSM: The Non-Sucking Service Manager\r
-Version 2.1, 2009-12-28 by Benjamin Mayrargue (www.softlion.com)\r
+Version 2.2, 2010-04-04\r
 \r
 NSSM is a service helper program similar to srvany and cygrunsrv.  It can \r
 start any application as an NT service and will restart the service if it \r
 \r
 NSSM is a service helper program similar to srvany and cygrunsrv.  It can \r
 start any application as an NT service and will restart the service if it \r
@@ -17,6 +17,9 @@ options on the command line.
 Since version 2.1, NSSM can be compiled for x64 platforms.\r
 Thanks Benjamin Mayrargue.\r
 \r
 Since version 2.1, NSSM can be compiled for x64 platforms.\r
 Thanks Benjamin Mayrargue.\r
 \r
+Since version 2.2, NSSM can be configured to take different actions\r
+based on the exit code of the managed application.\r
+\r
 \r
 Usage\r
 -----\r
 \r
 Usage\r
 -----\r
@@ -56,13 +59,37 @@ Managing the service
 --------------------\r
 NSSM will launch the application listed in the registry when you send it a \r
 start signal and will terminate it when you send a stop signal.  So far, so \r
 --------------------\r
 NSSM will launch the application listed in the registry when you send it a \r
 start signal and will terminate it when you send a stop signal.  So far, so \r
-much like srvany.  But NSSM is the Non-Sucking service manager and will take \r
+much like srvany.  But NSSM is the Non-Sucking service manager and can take \r
 action if/when the application dies.\r
 \r
 action if/when the application dies.\r
 \r
-NSSM will try to restart itself if it notices that the application died but \r
-you didn't send it a stop signal.  NSSM will keep trying, pausing 30 seconds \r
-between each attempt, until the service is successfully started or you send \r
-it a stop signal.\r
+With no configuration from you, NSSM will try to restart itself if it notices\r
+that the application died but you didn't send it a stop signal.  NSSM will\r
+keep trying, pausing 30 seconds between each attempt, until the service is\r
+successfully started or you send it a stop signal.\r
+\r
+NSSM will look in the registry under\r
+HKLM\SYSTEM\CurrentControlSet\Services\<service>\Parameters\AppExit for\r
+string (REG_SZ) values corresponding to the exit code of the application.\r
+If the application exited with code 1, for instance, NSSM will look for a\r
+string value under AppExit called "1" or, if it does not find it, will\r
+fall back to the AppExit (Default) value.  You can find out the exit code\r
+for the application by consulting the system event log.  NSSM will log the\r
+exit code when the application exits.\r
+\r
+Based on the data found in the registry, NSSM will take one of three actions:\r
+\r
+If the value data is "Restart" NSSM will try to restart the application as\r
+described above.  This is its default behaviour.\r
+\r
+If the value data is "Ignore" NSSM will not try to restart the application\r
+but will continue running itself.  This emulates the (usually undesirable)\r
+behaviour of srvany.  The Windows Services console would show the service\r
+as still running even though the application has exited.\r
+\r
+If the value data is "Exit" NSSM will exit.  The Windows Services console\r
+would show the service as stopped.  If you wish to provide finer-grained\r
+control over service recovery you should use this code and edit the failure\r
+action manually.\r
 \r
 \r
 Removing services using the GUI\r
 \r
 \r
 Removing services using the GUI\r
diff --git a/nssm.h b/nssm.h
index ac4c246..9b8c7cd 100644 (file)
--- a/nssm.h
+++ b/nssm.h
@@ -13,8 +13,8 @@
 int str_equiv(const char *, const char *);\r
 \r
 #define NSSM "nssm"\r
 int str_equiv(const char *, const char *);\r
 \r
 #define NSSM "nssm"\r
-#define NSSM_VERSION "2.1"\r
-#define NSSM_DATE "2009-12-28"\r
+#define NSSM_VERSION "2.2"\r
+#define NSSM_DATE "2010-04-04"\r
 #define NSSM_RUN "run"\r
 \r
 #endif\r
 #define NSSM_RUN "run"\r
 \r
 #endif\r