Skip to main content
  1. Knowledge Base/
  2. Linux/

systemd

Table of Contents

Simple generic service file
#

/etc/systemd/system/foo.service

[Unit]
Description=Foo
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/foo
LimitNOFILE=1024
PIDFile=/var/run/foo/running.pid
ExecStart=/bin/foo start
ExecStop=/bin/foo stop
KillSignal=SIGTERM
Restart=on-abort
User=nobody
Group=nobody
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/log/foo
ExecStartPre=/bin/chown root:adm /var/log/foo
ExecStartPre=/bin/chmod 755 /var/log/foo
RestartSec=9
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=foo

[Install]
WantedBy=multi-user.target

Mappings of limits
#

Credits to this StackOverflow answer!

Directiveulimit equivalentUnit
LimitCPU=ulimit -tSeconds
LimitFSIZE=ulimit -fBytes
LimitDATA=ulimit -dBytes
LimitSTACK=ulimit -sBytes
LimitCORE=ulimit -cBytes
LimitRSS=ulimit -mBytes
LimitNOFILE=ulimit -nNumber of File Descriptors
LimitAS=ulimit -vBytes
LimitNPROC=ulimit -uNumber of Processes
LimitMEMLOCK=ulimit -lBytes
LimitLOCKS=ulimit -xNumber of Locks
LimitSIGPENDING=ulimit -iNumber of Queued Signals
LimitMSGQUEUE=ulimit -qBytes
LimitNICE=ulimit -eNice Level
LimitRTPRIO=ulimit -rRealtime Priority
LimitRTTIME=No equivalent
ulimit -c unlimited is the same as LimitCORE=infinity
ulimit -v unlimited is the same as LimitAS=infinity
ulimit -m unlimited is the same as LimitRSS=infinity

Interact with systemd
#

Reload changes

systemctl daemon-reload

List unit files

systemctl list-unit-files [--state=[LODA|SUB|ACTIVE|failed]]

Enable/Disable unit

systemctl enable|disable FOO

Edit unit file

systemctl edit --full FOO # or just by directly editing the file

Start/Stop/Reload/Restart

systemctl start/stop/reload/restart FOO