X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=README.txt;h=00440f9f4aeac955000a78ddf8e8f73e8f7ec189;hb=ee9a86c8408feaf173733aea12a80211e5d74483;hp=224af93f15e0bcf391b754eaf4c631f343d171b8;hpb=61e7185453e213b98c0046cff96f0ace10d12924;p=nssm.git diff --git a/README.txt b/README.txt index 224af93..00440f9 100644 --- a/README.txt +++ b/README.txt @@ -68,6 +68,12 @@ Since version 2.22, NSSM can manage existing services. Since version 2.25, NSSM can execute commands in response to service events. +Since version 2.25, NSSM can list services it manages. + +Since version 2.25, NSSM can dump the configuration of services it manages. + +Since version 2.25, NSSM can show the processes managed by a service. + Usage ----- @@ -331,7 +337,7 @@ a non-zero value of AppRotateBytesHigh. If AppRotateDelay is non-zero, NSSM will pause for the given number of milliseconds after rotation. -If AppStdoutCopyAndTruncate or AppStdErrCopyAndTruncate are non-zero, the +If AppStdoutCopyAndTruncate or AppStderrCopyAndTruncate are non-zero, the stdout (or stderr respectively) file will be rotated by first taking a copy of the file then truncating the original file to zero size. This allows NSSM to rotate files which are held open by other processes, preventing the @@ -572,6 +578,12 @@ If the application crashes and is restarted by NSSM, the order might be: Exit/Post +If NSSM is redirecting stdout or stderr it can be configured to redirect +the output of any hooks it runs. Set AppRedirectHooks to 1 to enable +that functionality. A hook can of course redirect its own I/O independently +of NSSM. + + Managing services using the GUI ------------------------------- NSSM can edit the settings of existing services with the same GUI that is @@ -630,9 +642,10 @@ would have the same effect. Non-standard parameters ----------------------- -The AppEnvironment and AppEnvironmentExtra parameters recognise an -additional argument when querying the environment. The following syntax -will print all extra environment variables configured for a service +The AppEnvironment, AppEnvironmentExtra and Environment parameters +recognise an additional argument when querying the environment. The +following syntax will print all extra environment variables configured +for a service nssm get AppEnvironmentExtra @@ -647,6 +660,39 @@ KEY=VALUE pair in separate command line arguments. For example: nssm set AppEnvironment CLASSPATH=C:\Classes TEMP=C:\Temp +Alternatively the KEY can be prefixed with a + or - symbol to respectively +add or remove a pair from the block. + +The following two lines set CLASSPATH and TEMP: + + nssm set AppEnvironment CLASSPATH=C:\Classes + nssm set AppEnvironment +TEMP=C:\Temp + +If the key is already present, specifying +KEY will override the value +while preserving the order of keys: + + nssm set AppEnvironment +CLASSPATH=C:\NewClasses + +The following syntax removes a single variable from the block while +leaving any other variables in place. + + nssm set AppEnvironment -TEMP + +Specifying -KEY=VALUE will remove the variable only if the existing +value matches. + +The following syntax would not remove TEMP=C:\Temp + + nssm set AppEnvironment -TEMP=C:\Work\Temporary + +The + and - symbols are valid characters in environment variables. +The syntax :KEY=VALUE is equivalent to KEY=VALUE and can be used to +set variables which start with +/- or to explicitly reset the block in +a script: + + nssm set AppEnvironment :CLASSPATH=C:\Classes + nssm set AppEnvironment +TEMP=C:\Temp + The AppExit parameter requires an additional argument specifying the exit code to get or set. The default action can be specified with the string @@ -687,6 +733,34 @@ separate command line arguments. For example: nssm set DependOnService RpcSs LanmanWorkstation +Alternatively the dependency name can be prefixed with a + or - symbol to +respectively add or remove a dependency. + +The following two lines set dependencies on RpcSs and LanmanWorkstation: + + nssm set DependOnService RpcSs + nssm set DependOnService +LanmanWorkstation + +The follwing syntax removes the dependency on RpcSs: + + nssm set DependOnService -RpcSs + +Service groups should, strictly speaking, be prefixed with the + symbol. +To specify a single dependency on a group, the + symbol can be prefixed +with the : symbol. + +The following lines are equivalent, and each set a dependency ONLY on +NetBIOSGroup: + + nssm set DependOnGroup NetBIOSGroup + nssm set DependOnGroup :NetBIOSGroup + nssm set DependOnGroup :+NetBIOSGroup + +Whereas these lines add to any existing dependencies: + + nssm set DependOnGroup +NetBIOSGroup + nssm set DependOnGroup ++NetBIOSGroup + The Name parameter can only be queried, not set. It returns the service's registry key name. This may be useful to know if you take advantage of @@ -716,6 +790,7 @@ parameter can be omitted when using them: "LocalSystem" aka "System" aka "NT Authority\System" "LocalService" aka "Local Service" aka "NT Authority\Local Service" "NetworkService" aka "Network Service" aka "NT Authority\Network Service" + Virtual service account "NT Service\" The Start parameter is used to query or set the startup type of the service. @@ -790,6 +865,50 @@ running multiple instances of NSSM from different locations may be confusing if they are not all the same version. +Listing managed services +------------------------ +The following command will print the names of all services managed by NSSM: + + nssm list + +To see all services on the system, not just NSSM's, use list all: + + nssm list all + + +Showing processes started by a service +-------------------------------------- +The following command will print the process ID and executable path of +processes started by a given service: + + nssm processes + +Note that if 32-bit NSSM is run on a 64-bit system running an older version of +Windows than Vista it will not be able to query the paths of 64-bit processes. + + +Exporting service configuration +------------------------------- +NSSM can dump commands which would recreate the configuration of a service. +The output can be pasted into a batch script to back up the service or +transfer to another computer. + + nssm dump + +Because the service configuration may contain characters which need to be +quoted or escaped from the command prompt, NSSM tries hard to produce +output which will work correctly when run as a script, by adding quotes +and caret escapes as appropriate. + +To facilitate copying a service, the dump command accepts a second +argument which specifies the name of the service to be used in the output. + + nssm dump + +Lines in the dump will reference the service while showing the +configuration of . + + Example usage ------------- To install an Unreal Tournament server: @@ -878,6 +997,15 @@ Thanks to Yuriy Lesiuk for suggesting setting the environment before querying the registry for parameters. Thanks to Gerald Haider for noticing that installing a service with NSSM in a path containing spaces was technically a security vulnerability. +Thanks to Scott Ware for reporting a crash saving the environment on XP 32-bit. +Thanks to Stefan and Michael Scherer for reporting a bug writing the event messages source. +Thanks to Paul Baxter for help with Visual Studio 2015. +Thanks to Mathias Breiner for help with Visual Studio and some registry fixes. +Thanks to David Bremner for general tidyups. +Thanks to Nabil Redmann for suggesting redirecting hooks' output. +Thanks to Bader Aldurai for suggesting the process tree. +Thanks to Christian Long for suggesting virtual accounts. +Thanks to Marcin Lewandowski for spotting a bug appending to large files. Licence -------