systemd.exec man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

SYSTEMD.EXEC(5)			 systemd.exec		       SYSTEMD.EXEC(5)

NAME
       systemd.exec - systemd execution environment configuration

SYNOPSIS
       systemd.service, systemd.socket, systemd.mount, systemd.swap

DESCRIPTION
       Unit configuration files for services, sockets, mount points and swap
       devices share a subset of configuration options which define the
       execution environment of spawned processes.

       This man page lists the configuration options shared by these four unit
       types. See systemd.unit(5) for the common options of all unit
       configuration files, and systemd.service(5), systemd.socket(5),
       systemd.swap(5) and systemd.mount(5) for more information on the
       specific unit configuration files. The execution specific configuration
       options are configured in the [Service], [Socket], [Mount] resp. [Swap]
       section, depending on the unit type.

OPTIONS
       WorkingDirectory=
	   Takes an absolute directory path. Sets the working directory for
	   executed processes.

       RootDirectory=
	   Takes an absolute directory path. Sets the root directory for
	   executed processes, with the chroot(2) system call. If this is used
	   it must be ensured that the process and all its auxiliary files are
	   available in the chroot() jail.

       User=, Group=
	   Sets the Unix user resp. group the processes are executed as. Takes
	   a single user resp. group name or ID as argument. If no group is
	   set the default group of the user is chosen.

       SupplementaryGroups=
	   Sets the supplementary Unix groups the processes are executed as.
	   This takes a space separated list of group names or IDs. This
	   option may be specified more than once in which case all listed
	   groups are set as supplementary groups. This option does not
	   override but extends the list of supplementary groups configured in
	   the system group database for the user.

       Nice=
	   Sets the default nice level (scheduling priority) for executed
	   processes. Takes an integer between -20 (highest priority) and 19
	   (lowest priority). See setpriority(2) for details.

       OOMScoreAdjust=
	   Sets the adjustment level for the Out-Of-Memory killer for executed
	   processes. Takes an integer between -1000 (to disable OOM killing
	   for this process) and 1000 (to make killing of this process under
	   memory pressure very likely). See proc.txt[1] for details.

       IOSchedulingClass=
	   Sets the IO scheduling class for executed processes. Takes an
	   integer between 0 and 3 or one of the strings none, realtime,
	   best-effort or idle. See ioprio_set(2) for details.

       IOSchedulingPriority=
	   Sets the IO scheduling priority for executed processes. Takes an
	   integer between 0 (highest priority) and 7 (lowest priority). The
	   available priorities depend on the selected IO scheduling class
	   (see above). See ioprio_set(2) for details.

       CPUSchedulingPolicy=
	   Sets the CPU scheduling policy for executed processes. Takes one of
	   other, batch, idle, fifo or rr. See sched_setscheduler(2) for
	   details.

       CPUSchedulingPriority=
	   Sets the CPU scheduling priority for executed processes. Takes an
	   integer between 1 (lowest priority) and 99 (highest priority). The
	   available priority range depends on the selected CPU scheduling
	   policy (see above). See sched_setscheduler(2) for details.

       CPUSchedulingResetOnFork=
	   Takes a boolean argument. If true elevated CPU scheduling
	   priorities and policies will be reset when the executed processes
	   fork, and can hence not leak into child processes. See
	   sched_setscheduler(2) for details. Defaults to false.

       CPUAffinity=
	   Controls the CPU affinity of the executed processes. Takes a
	   space-separated list of CPU indexes. See sched_setaffinity(2) for
	   details.

       UMask=
	   Controls the file mode creation mask. Takes an access mode in octal
	   notation. See umask(2) for details. Defaults to 0022.

       Environment=
	   Sets environment variables for executed processes. Takes a
	   space-separated list of variable assignments. This option may be
	   specified more than once in which case all listed variables will be
	   set. If the same variable is set twice the later setting will
	   override the earlier setting. See environ(7) for details.

       EnvironmentFile=
	   Similar to Environment= but reads the environment variables from a
	   text file. The text file should contain new-line separated variable
	   assignments. Empty lines and lines starting with ; or # will be
	   ignored, which may be used for commenting. The parser strips
	   leading and trailing whitespace from the values of assignments,
	   unless you use double quotes ("). The argument passed should be an
	   absolute file name, optionally prefixed with "-", which indicates
	   that if the file does not exist it won't be read and no error or
	   warning message is logged. The files listed with this directive
	   will be read shortly before the process is executed. Settings from
	   these files override settings made with Environment=. If the same
	   variable is set twice from these files the files will be read in
	   the order they are specified and the later setting will override
	   the earlier setting.

       StandardInput=
	   Controls where file descriptor 0 (STDIN) of the executed processes
	   is connected to. Takes one of null, tty, tty-force, tty-fail or
	   socket. If null is selected standard input will be connected to
	   /dev/null, i.e. all read attempts by the process will result in
	   immediate EOF. If tty is selected standard input is connected to a
	   TTY (as configured by TTYPath=, see below) and the executed process
	   becomes the controlling process of the terminal. If the terminal is
	   already being controlled by another process the executed process
	   waits until the current controlling process releases the terminal.
	   tty-force is similar to tty, but the executed process is forcefully
	   and immediately made the controlling process of the terminal,
	   potentially removing previous controlling processes from the
	   terminal.  tty-fail is similar to tty but if the terminal already
	   has a controlling process start-up of the executed process fails.
	   The socket option is only valid in socket-activated services, and
	   only when the socket configuration file (see systemd.socket(5) for
	   details) specifies a single socket only. If this option is set
	   standard input will be connected to the socket the service was
	   activated from, which is primarily useful for compatibility with
	   daemons designed for use with the traditional inetd(8) daemon. This
	   setting defaults to null.

       StandardOutput=
	   Controls where file descriptor 1 (STDOUT) of the executed processes
	   is connected to. Takes one of inherit, null, tty, syslog, kmsg,
	   journal, syslog+console, kmsg+console, journal+console or socket.
	   If set to inherit the file descriptor of standard input is
	   duplicated for standard output. If set to null standard output will
	   be connected to /dev/null, i.e. everything written to it will be
	   lost. If set to tty standard output will be connected to a tty (as
	   configured via TTYPath=, see below). If the TTY is used for output
	   only the executed process will not become the controlling process
	   of the terminal, and will not fail or wait for other processes to
	   release the terminal.  syslog connects standard output to the
	   syslog(3) system syslog service.  kmsg connects it with the kernel
	   log buffer which is accessible via dmesg(1).	 journal connects it
	   with the journal which is accessible via journalctl(1) (Note that
	   everything that is written to syslog or kmsg is implicitly stored
	   in the journal as well, those options are hence supersets of this
	   one).  syslog+console, journal+console and kmsg+console work
	   similarly but copy the output to the system console as well.
	   socket connects standard output to a socket from socket activation,
	   semantics are similar to the respective option of StandardInput=.
	   This setting defaults to the value set with DefaultStandardOutput=
	   in systemd.conf(5), which defaults to journal.

       StandardError=
	   Controls where file descriptor 2 (STDERR) of the executed processes
	   is connected to. The available options are identical to those of
	   StandardOutput=, with one exception: if set to inherit the file
	   descriptor used for standard output is duplicated for standard
	   error. This setting defaults to the value set with
	   DefaultStandardError= in systemd.conf(5), which defaults to
	   inherit.

       TTYPath=
	   Sets the terminal device node to use if standard input, output or
	   stderr are connected to a TTY (see above). Defaults to
	   /dev/console.

       TTYReset=
	   Reset the terminal device specified with TTYPath= before and after
	   execution. Defaults to no.

       TTYVHangup=
	   Disconnect all clients which have opened the terminal device
	   specified with TTYPath= before and after execution. Defaults to no.

       TTYVTDisallocate=
	   If the the terminal device specified with TTYPath= is a virtual
	   console terminal try to deallocate the TTY before and after
	   execution. This ensures that the screen and scrollback buffer is
	   cleared. Defaults to no.

       SyslogIdentifier=
	   Sets the process name to prefix log lines sent to syslog or the
	   kernel log buffer with. If not set defaults to the process name of
	   the executed process. This option is only useful when
	   StandardOutput= or StandardError= are set to syslog or kmsg.

       SyslogFacility=
	   Sets the syslog facility to use when logging to syslog. One of
	   kern, user, mail, daemon, auth, syslog, lpr, news, uucp, cron,
	   authpriv, ftp, local0, local1, local2, local3, local4, local5,
	   local6 or local7. See syslog(3) for details. This option is only
	   useful when StandardOutput= or StandardError= are set to syslog.
	   Defaults to daemon.

       SyslogLevel=
	   Default syslog level to use when logging to syslog or the kernel
	   log buffer. One of emerg, alert, crit, err, warning, notice, info,
	   debug. See syslog(3) for details. This option is only useful when
	   StandardOutput= or StandardError= are set to syslog or kmsg. Note
	   that individual lines output by the daemon might be prefixed with a
	   different log level which can be used to override the default log
	   level specified here. The interpretation of these prefixes may be
	   disabled with SyslogLevelPrefix=, see below. For details see sd-
	   daemon(7). Defaults to info.

       SyslogLevelPrefix=
	   Takes a boolean argument. If true and StandardOutput= or
	   StandardError= are set to syslog or kmsg log lines written by the
	   executed process that are prefixed with a log level will be passed
	   on to syslog with this log level set but the prefix removed. If set
	   to false, the interpretation of these prefixes is disabled and the
	   logged lines are passed on as-is. For details about this prefixing
	   see sd-daemon(7). Defaults to true.

       TimerSlackNSec=
	   Sets the timer slack in nanoseconds for the executed processes. The
	   timer slack controls the accuracy of wake-ups triggered by timers.
	   See prctl(2) for more information. Note that in contrast to most
	   other time span definitions this parameter takes an integer value
	   in nano-seconds if no unit is specified. The usual time units are
	   understood too.

       LimitCPU=, LimitFSIZE=, LimitDATA=, LimitSTACK=, LimitCORE=, LimitRSS=,
       LimitNOFILE=, LimitAS=, LimitNPROC=, LimitMEMLOCK=, LimitLOCKS=,
       LimitSIGPENDING=, LimitMSGQUEUE=, LimitNICE=, LimitRTPRIO=,
       LimitRTTIME=
	   These settings control various resource limits for executed
	   processes. See setrlimit(2) for details. Use the string infinity to
	   configure no limit on a specific resource.

       PAMName=
	   Sets the PAM service name to set up a session as. If set the
	   executed process will be registered as a PAM session under the
	   specified service name. This is only useful in conjunction with the
	   User= setting. If not set no PAM session will be opened for the
	   executed processes. See pam(8) for details.

       TCPWrapName=
	   If this is a socket-activated service this sets the tcpwrap service
	   name to check the permission for the current connection with. This
	   is only useful in conjunction with socket-activated services, and
	   stream sockets (TCP) in particular. It has no effect on other
	   socket types (e.g. datagram/UDP) and on processes unrelated to
	   socket-based activation. If the tcpwrap verification fails daemon
	   start-up will fail and the connection is terminated. See tcpd(8)
	   for details. Note that this option may be used to do access control
	   checks only. Shell commands and commands described in
	   hosts_options(5) are not supported.

       CapabilityBoundingSet=
	   Controls which capabilities to include in the capability bounding
	   set for the executed process. See capabilities(7) for details.
	   Takes a whitespace separated list of capability names as read by
	   cap_from_name(3). Capabilities listed will be included in the
	   bounding set, all others are removed. If the list of capabilities
	   is prefixed with ~ all but the listed capabilities will be
	   included, the effect of the assignment inverted. Note that this
	   option also effects the respective capabilities in the effective,
	   permitted and inheritable capability sets, on top of what
	   Capabilities= does. If this option is not used the capability
	   bounding set is not modified on process execution, hence no limits
	   on the capabilities of the process are enforced.

       SecureBits=
	   Controls the secure bits set for the executed process. See
	   capabilities(7) for details. Takes a list of strings: keep-caps,
	   keep-caps-locked, no-setuid-fixup, no-setuid-fixup-locked, noroot
	   and/or noroot-locked.

       Capabilities=
	   Controls the capabilities(7) set for the executed process. Take a
	   capability string describing the effective, permitted and inherited
	   capability sets as documented in cap_from_text(3). Note that these
	   capability sets are usually influenced by the capabilities attached
	   to the executed file. Due to that CapabilityBoundingSet= is
	   probably the much more useful setting.

       ControlGroup=
	   Controls the control groups the executed processes shall be made
	   members of. Takes a space-separated list of cgroup identifiers. A
	   cgroup identifier has a format like cpu:/foo/bar, where "cpu"
	   identifies the kernel control group controller used, and /foo/bar
	   is the control group path. The controller name and ":" may be
	   omitted in which case the named systemd control group hierarchy is
	   implied. Alternatively, the path and ":" may be omitted, in which
	   case the default control group path for this unit is implied. This
	   option may be used to place executed processes in arbitrary groups
	   in arbitrary hierarchies -- which can be configured externally with
	   additional execution limits. By default systemd will place all
	   executed processes in separate per-unit control groups (named after
	   the unit) in the systemd named hierarchy. Since every process can
	   be in one group per hierarchy only overriding the control group
	   path in the named systemd hierarchy will disable automatic
	   placement in the default group. This option is primarily intended
	   to place executed processes in specific paths in specific kernel
	   controller hierarchies. It is however not recommended to manipulate
	   the service control group path in the systemd named hierarchy. For
	   details about control groups see cgroups.txt[2].

       ControlGroupModify=
	   Takes a boolean argument. If true, the control groups created for
	   this unit will be owned by the user specified with User= (and the
	   appropriate group), and he/she can create subgroups as well as add
	   processes to the group.

       ControlGroupPersistent=
	   Takes a boolean argument. If true, the control groups created for
	   this unit will be marked to be persistent, i.e. systemd will not
	   remove them when stopping the unit. The default is false, meaning
	   that the control groups will be removed when the unit is stopped.
	   For details about the semantics of this logic see
	   PaxControlGroups[3].

       ControlGroupAttribute=
	   Set a specific control group attribute for executed processes, and
	   (if needed) add the the executed processes to a cgroup in the
	   hierarchy of the controller the attribute belongs to. Takes two
	   space-separated arguments: the attribute name (syntax is cpu.shares
	   where cpu refers to a specific controller and shares to the
	   attribute name), and the attribute value. Example:
	   ControlGroupAttribute=cpu.shares 512. If this option is used for an
	   attribute that belongs to a kernel controller hierarchy the unit is
	   not already configured to be added to (for example via the
	   ControlGroup= option) then the unit will be added to the controller
	   and the default unit cgroup path is implied. Thus, using
	   ControlGroupAttribute= is in most case sufficient to make use of
	   control group enforcements, explicit ControlGroup= are only
	   necessary in case the implied default control group path for a
	   service is not desirable. For details about control group
	   attributes see cgroups.txt[2]. This option may appear more than
	   once, in order to set multiple control group attributes.

       CPUShares=
	   Assign the specified overall CPU time shares to the processes
	   executed. Takes an integer value. This controls the cpu.shares
	   control group attribute, which defaults to 1024. For details about
	   this control group attribute see sched-design-CFS.txt[4].

       MemoryLimit=, MemorySoftLimit=
	   Limit the overall memory usage of the executed processes to a
	   certain size. Takes a memory size in bytes. If the value is
	   suffixed with K, M, G or T the specified memory size is parsed as
	   Kilobytes, Megabytes, Gigabytes, resp. Terabytes (to the base
	   1024). This controls the memory.limit_in_bytes and
	   memory.soft_limit_in_bytes control group attributes. For details
	   about these control group attributes see memory.txt[5].

       DeviceAllow=, DeviceDeny=
	   Control access to specific device nodes by the executed processes.
	   Takes two space separated strings: a device node path (such as
	   /dev/null) followed by a combination of r, w, m to control reading,
	   writing resp. creating of the specific device node by the unit.
	   This controls the devices.allow and devices.deny control group
	   attributes. For details about these control group attributes see
	   devices.txt[6].

       BlockIOWeight=
	   Set the default or per-device overall block IO weight value for the
	   executed processes. Takes either a single weight value (between 10
	   and 1000) to set the default block IO weight, or a space separated
	   pair of a file path and a weight value to specify the device
	   specific weight value (Example: "/dev/sda 500"). The file path may
	   be specified as path to a block device node or as any other file in
	   which case the backing block device of the file system of the file
	   is determined. This controls the blkio.weight and
	   blkio.weight_device control group attributes, which default to
	   1000. Use this option multiple times to set weights for multiple
	   devices. For details about these control group attributes see
	   blkio-controller.txt[7].

       BlockIOReadBandwidth=, BlockIOWriteBandwidth=
	   Set the per-device overall block IO bandwith limit for the executed
	   processes. Takes a space separated pair of a file path and a
	   bandwith value (in bytes per second) to specify the device specific
	   bandwidth. The file path may be specified as path to a block device
	   node or as any other file in which case the backing block device of
	   the file system of the file is determined. If the bandwith is
	   suffixed with K, M, G, or T the specified bandwith is parsed as
	   Kilobytes, Megabytes, Gigabytes, resp. Terabytes (Example:
	   "/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 5M"). This
	   controls the blkio.read_bps_device and blkio.write_bps_device
	   control group attributes. Use this option multiple times to set
	   bandwith limits for multiple devices. For details about these
	   control group attributes see blkio-controller.txt[7].

       ReadWriteDirectories=, ReadOnlyDirectories=, InaccessibleDirectories=
	   Sets up a new file-system name space for executed processes. These
	   options may be used to limit access a process might have to the
	   main file-system hierarchy. Each setting takes a space-separated
	   list of absolute directory paths. Directories listed in
	   ReadWriteDirectories= are accessible from within the namespace with
	   the same access rights as from outside. Directories listed in
	   ReadOnlyDirectories= are accessible for reading only, writing will
	   be refused even if the usual file access controls would permit
	   this. Directories listed in InaccessibleDirectories= will be made
	   inaccessible for processes inside the namespace. Note that
	   restricting access with these options does not extend to submounts
	   of a directory. You must list submounts separately in these
	   settings to ensure the same limited access. These options may be
	   specified more than once in which case all directories listed will
	   have limited access from within the namespace.

       PrivateTmp=
	   Takes a boolean argument. If true sets up a new file system
	   namespace for the executed processes and mounts a private /tmp
	   directory inside it, that is not shared by processes outside of the
	   namespace. This is useful to secure access to temporary files of
	   the process, but makes sharing between processes via /tmp
	   impossible. Defaults to false.

       PrivateNetwork=
	   Takes a boolean argument. If true sets up a new network namespace
	   for the executed processes and configures only the loopback network
	   device lo inside it. No other network devices will be available to
	   the executed process. This is useful to securely turn off network
	   access by the executed process. Defaults to false.

       MountFlags=
	   Takes a mount propagation flag: shared, slave or private, which
	   control whether the file system namespace set up for this unit's
	   processes will receive or propagate new mounts. See mount(1) for
	   details. Default to shared.

       UtmpIdentifier=
	   Takes a a four character identifier string for an utmp/wtmp entry
	   for this service. This should only be set for services such as
	   getty implementations where utmp/wtmp entries must be created and
	   cleared before and after execution. If the configured string is
	   longer than four characters it is truncated and the terminal four
	   characters are used. This setting interprets %I style string
	   replacements. This setting is unset by default, i.e. no utmp/wtmp
	   entries are created or cleaned up for this service.

       IgnoreSIGPIPE=
	   Takes a boolean argument. If true causes SIGPIPE to be ignored in
	   the executed process. Defaults to true, since SIGPIPE generally is
	   useful only in shell pipelines.

SEE ALSO
       systemd(1), systemctl(8), journalctl(8), systemd.unit(5),
       systemd.service(5), systemd.socket(5), systemd.swap(5),
       systemd.mount(5)

AUTHOR
       Lennart Poettering <lennart@poettering.net>
	   Developer

NOTES
	1. proc.txt
	   http://www.kernel.org/doc/Documentation/filesystems/proc.txt

	2. cgroups.txt
	   http://www.kernel.org/doc/Documentation/cgroups/cgroups.txt

	3. PaxControlGroups
	   http://www.freedesktop.org/wiki/Software/systemd/PaxControlGroups

	4. sched-design-CFS.txt
	   http://www.kernel.org/doc/Documentation/scheduler/sched-design-CFS.txt

	5. memory.txt
	   http://www.kernel.org/doc/Documentation/cgroups/memory.txt

	6. devices.txt
	   http://www.kernel.org/doc/Documentation/cgroups/devices.txt

	7. blkio-controller.txt
	   http://www.kernel.org/doc/Documentation/cgroups/blkio-controller.txt

systemd				  02/15/2013		       SYSTEMD.EXEC(5)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net