bionic (1) launchtool.1.gz

Provided by: launchtool_0.8-2build1_amd64 bug

NAME

       launchtool - run a command supervising its execution.

SYNOPSIS

       launchtool [options] [command]

DESCRIPTION

       launchtool is a tool that runs a user-supplied command and can supervise its execution in many ways, such
       as  controlling  its  environment,  blocking  signals,  logging  its  output,  changing  user  and  group
       permissions,  limiting  resource usage, restarting it if it fails, running it continuously and turning it
       into a daemon.

       launchtool  is  fully  configurable,  both  through  the  commandline  and  using  configuration   files.
       Configuration  files  can be made executable and start with “#!/usr/bin/launchtool -C”, to create daemons
       using simpler commands.

INVOCATION

       launchtool executes the command it finds in the commandline, via switches or the configuration file.  All
       non-switch parameters are concatenated to the command, that will be executed using “/bin/sh -c”.

       launchtool  default  mode  of  execution  is  to run the command normally and return its exit status. All
       features are disabled by default and activated using commandline options or values in  the  configuration
       file.  Commandline options override configuration files.

       launchtool  sessions are identified by a tag that is used both to mark the command output in logfiles and
       to identify running sessions to check if they have already been started or send  them  a  signal  without
       specifying the process PID.

OPTIONS

       launchtool follows the usual GNU command line syntax, with long options starting with two dashes (`-').

       -?, --help
              Display a detailed help message with a summary of all options.

       --usage
              Display a brief usage message.

       -k, --kill[=signal]
              Kill  a  running  launchtool  with  the specified signal (15 by default) and exit.  No signal name
              parsing is (yet) provided, so the signal must be specified by its number.

       --check
              Check if another launchtool is running, then exit.

       --showcfg
              Process config files and commandline, show the resulting configuration and exit.

       -V, --version
              Print version and exit.

       -t, --tag=tag, “tag”
              Tag used to identify the session

       -C, --config=file
              Read configuration data from “file”.  Defaults to /etc/launchtool/<tag>.conf

       -v, --verbose, “verbose”
              Enable verbose output.

       --no-verbose
              Disable verbose output.

       --debug, “debug”
              Enable debug output (includes --verbose output).

       --no-debug
              Disable debug output.

       -c, --command=cmd, “command”
              Command to execute.

       --visible-tag=tag, “visible tag”
              Tag to use for pidfiles and logfiles instead of “launchtool-<tag>”.

       -d, --daemon, “daemon”
              Fork to background and detach from terminal, becoming a daemon.

       -n, --no-daemon
              Don't become a daemon.

       --pidfile, “pidfile”
              Create a pidfile (default when --daemon is used).

       --no-pidfile
              Don't create a pidfile (default when --daemon is not used).

       --piddir=dir, “piddir”
              Directory where pidfiles are stored (default to /var/run).

       --chroot=dir, “root dir”
              Chroot to this directory before running the command.

       --chdir=dir, “start dir”
              Chdir to this directory before running the command (default to '.' or '/' if --daemon is present).

       -u, --user=user, “user”
              User privileges to run the command with.

       -g, --group=group, “group”
              Group privileges to run the command with.

       --umask=mask, “umask”
              Set this umask before running the command.

       -L, --infinite-runs, “infinite runs”
              Never give up restarting the command if it fails.

       --no-infinite-runs
              Give up restarting the command after a certain number of failures.

       --wait-times=t1,t2,... , “wait times”
              List of times (in seconds) to  wait  after  a  program  failure  before  restarting  it.   If  not
              specified, failed commands will not be restarted.

       --good-running-time=seconds, “good running time”
              Minimum running time needed to restart for the first wait time.

       --forwarded-signals=sig1,sig2,... , “forwarded signals”
              List of signals (in name or in number) to be forwarded to the command.

       --blocked-signals=sig1,sig2,... , “blocked signals”
              List of signals (in name or in number) to be blocked before running the command.

       --limit-cpu=seconds, “cpu limit”
              CPU time limit for the command (see setrlimit(2)).

       --limit-file-size=1024b-blocks, “file size limit”
              File size limit for the command (see setrlimit(2)).

       --limit-data-memory=1024b-blocks, “data memory limit”
              Data memory size limit for the command (see setrlimit(2)).

       --limit-process-count=count, “process count limit”
              Process count limit for the command (see setrlimit(2)).

       --limit-open-files=count, “open files limit”
              Open files limit for the command (see setrlimit(2)).

       --limit-core-size=1024b-blocks, “core size limit”
              Core file size limit for the command (see setrlimit(2)).

       --restrict-environment, “restrict environment”
              Restrict the child environment.

       --no-restrict-environment
              Copy all environment variables to the child environment.

       --allowed-env-vars=var1,var2,... , “allowed env vars”
              List of environment variables to be copied to the child when the environment is restricted.

       --log-launchtool-output=target, “launchtool output”
              Target    of    the    launchtool    output    (ignore,    stdout,    stderr,   file:filename   or
              syslog:identity,facility,level).

       --log-launchtool-errors=target, “launchtool errors”
              Target  of  the  launchtool   error   messages   (ignore,   stdout,   stderr,   file:filename   or
              syslog:identity,facility,level).

       --log-child-output=target, “command output”
              Target     of     the     child    output    (ignore,    stdout,    stderr,    file:filename    or
              syslog:identity,facility,level).

       --log-child-errors=target, “command errors”
              Target   of   the   child   error   messages   (ignore,   stdout,   stderr,    file:filename    or
              syslog:identity,facility,level).

       --silent-restart-status=value, “silent restart status”
              Return  value  used  by  the  child  to  explicitly  request  a  restart  (feature disabled if not
              specified).

       --silent-restart-time=seconds, “silent restart time”
              Time to wait before restarting the child after an explicit restart request.

       --stats, “stats”
              Produce some statistics when the command terminates (implied by --verbose).

       --no-stats
              Do not produce statistics when the command terminates.

LOGGING TARGETS

       Logging targets are specified with a target name and its optional parameters, separated by a colon (“:”).

       Possible target configurations are:

       ignore Output is just discarded.

       stdout Output goes to the standard output stream.

       stderr Output goes to the standard error stream.

       file:filename
              Output goes to the file “filename”.

       syslog:identity,facility,level
              Output goes to syslog, with the given identity (a string identifying the  logger),  facility  (see
              syslog(3)) and level (see syslog(3)).

CONFIGURATION FILE

       The configuration file is a sequence of “key = value” lines.  Empty lines and lines starting with '#' are
       ignored.

       The possible keys have been listed in the OPTIONS section next to the corresponding commandline switch.

       Boolean (yes/no) values can take the values “yes”, “no”, “true”, “false”, “0” and “1”.

EXAMPLES

       # Running a command normally

       launchtool -t tag 'echo "Hello, world!"'

       # Run a command restarting it if it fails:

       launchtool -t tag --wait-times=1,1,1,3,3,3,10,10,10 'my_wonderful_server'

       # Run a command, with restrictions, restarting it if it fails, as a daemon

       launchtool -t myserver -d --user=myserver    --chroot=/var/myserver \
            --limit-process-count=5 --limit-open-files=10 \
            --wait-times=1,1,1,3,3,3,10,10,10 \
            --infinite-runs --stats \
            --log-launchtool-output=syslog:myserver,LOG_DAEMON,LOG_INFO \
            --log-launchtool-errors=syslog:myserver,LOG_DAEMON,LOG_ERR \
            --log-child-output=syslog:myserver,LOG_DAEMON,LOG_INFO \
            --log-child-errors=syslog:myserver,LOG_DAEMON,LOG_ERR \
            'my_experimental_server'

       # Same thing, using a configuration file

       tag = myserver
       command = my_wonderful_server
       daemon = yes
       stats = yes
       user = myserver
       root dir = /var/myserver
       process count limit = 5
       open files limit = 10
       wait times = 1,1,1,3,3,3,10,10,10
       infinite runs = yes
       launchtool output = syslog:myserver,LOG_DAEMON,LOG_INFO
       launchtool errors = syslog:myserver,LOG_DAEMON,LOG_ERR
       command output = syslog:myserver,LOG_DAEMON,LOG_INFO
       command errors = syslog:myserver,LOG_DAEMON,LOG_ERR

       # Transform a shell command in a polling daemon
       # Make the file /tmp/have_mobile exist only if my cell phone is present in the
       # IRDA discovery list

       launchtool -t celldetect -d --silent-restart-time=5 --silent-restart-status=0 --user=nobody \
            "if grep -q SIEMENS /proc/sys/net/irda/discovery; then touch /tmp/have_mobile; else rm -f /tmp/have_mobile; fi ; exit 0"

       # Ceck if the celldetect daemon is running

       launchtool -t celldetect --check

       # Kill the celldetect daemon launched with the command above

       launchtool -t celldetect -k

       # Same polling daemon, with an executable configuration file

       #!/usr/bin/launchtool -C
       tag = celldetect
       command = if grep -q SIEMENS /proc/sys/net/irda/discovery; then touch /tmp/have_mobile; else rm -f /tmp/have_mobile; fi ; exit 0
       daemon = yes
       user = nobody
       silent restart time = 5
       silent restart status = 0

       # Ceck if the celldetect daemon is running, using the executable configuration
       # file

       celldetect --check

       # Kill the celldetect daemon using the executable configuration file

       celldetect -k

SEE ALSO

       syslog(3), setrlimit(2).

AUTHOR

       launchtool has been written by Enrico Zini <enrico@debian.org>.

                                                october 03, 2002                                   LAUNCHTOOL(1)