Run program in a custom state

Quite cool and convenient, for example -u, -b, -/, etc.

chpst(8)                                  System Manager's Manual                                  chpst(8)

NAME
       chpst - runs a program with a changed process state

SYNOPSIS
       chpst  [-vP012]  [-u  user] [-U user] [-b argv0] [-e dir] [-/ root] [-n inc] [-l|-L lock] [-m bytes]
       [-d bytes] [-o n] [-p n] [-f bytes] [-c bytes] prog

DESCRIPTION
       prog consists of one or more arguments.

       chpst changes the process state according to the given options, and runs prog.

OPTIONS
       -u [:]user[:group]
              setuidgid.  Set uid and gid to the user's uid and gid, as found in /etc/passwd.  If  user  is
              followed  by a colon and a group, set the gid to group's gid, as found in /etc/group, instead
              of user's gid.  If group consists of a colon-separated list of group names,  chpst  sets  the
              group ids of all listed groups.  If user is prefixed with a colon, the user and all group ar‐
              guments are interpreted as uid and gids respectivly, and not looked up  in  the  password  or
              group file.  All initial supplementary groups are removed.

       -U [:]user[:group]
              envuidgid.   Set  the environment variables $UID and $GID to the user's uid and gid, as found
              in /etc/passwd.  If user is followed by a colon and a group, set $GID to the group's gid,  as
              found  in  /etc/group, instead of user's gid.  If user is prefixed with a colon, the user and
              group arguments are interpreted as uid and gid respectivly, and not looked up in the password
              or group file.

       -b argv0
              argv0.  Run prog with argv0 as the 0th argument.

       -e dir envdir.  Set various environment variables as specified by files in the directory dir: If dir
              contains a file named k whose first line is v, chpst removes the environment variable k if it
              exists,  and then adds the environment variable k with the value v.  The name k must not con‐
              tain =.  Spaces and tabs at the end of v are removed, and nulls in v are changed to newlines.
              If the file k is empty (0 bytes long), chpst removes the environment variable k if it exists,
              without adding a new variable.

       -/ root
              chroot.  Change the root directory to root before starting prog.

       -n inc nice.  Add inc to the nice(2) value before starting prog.  inc must be an  integer,  and  may
              start with a minus or plus.

       -l lock
              lock.  Open the file lock for writing, and obtain an exclusive lock on it.  lock will be cre‐
              ated if it does not exist.  If lock is locked by another process, wait until a new  lock  can
              be obtained.

       -L lock
              The same as -l, but fail immediately if lock is locked by another process.

       -m bytes
              limit memory.  Limit the data segment, stack segment, locked physical pages, and total of all
              segment per process to bytes bytes each.

       -d bytes
              limit data segment.  Limit the data segment per process to bytes bytes.

       -o n   limit open files.  Limit the number of open file descriptors per process to n.

       -p n   limit processes.  Limit the number of processes per uid to n.

       -f bytes

       -c bytes
              limit core size.  Limit the core file size to bytes bytes.

       -v     verbose.  Print verbose messages to standard error.  This includes warnings about limits  un‐
              supported by the system.

       -P     pgrphack.  Run prog in a new process group.

       -0     Close standard input before starting prog.

       -1     Close standard output before starting prog.

       -2     Close standard error before starting prog.

EXIT CODES
       chpst  exits 100 when called with wrong options.  It prints an error message and exits 111 if it has
       trouble changing the process state.  Otherwise its exit code is the same as that of prog.

EMULATION
       If chpst is called as envdir, envuidgid, pgrphack, setlock, setuidgid, or softlimit, it emulates the
       functionality of these programs from the daemontools package respectively.

SEE ALSO
       sv(8), runsv(8), setsid(2), runit(8), runit-init(8), runsvdir(8), runsvchdir(8)

        http://smarden.org/runit/
        http://cr.yp.to/daemontools.html

AUTHOR
       Gerrit Pape <pape@smarden.org>