# WARNING : This file is NOT a valid systemd service.
# It was created to demonstrate/test KDE syntax highlighting.
# It includes invalid sections, option names and option values.

; NOTE: Alerts in comments are supported.


[Automount]

= /the/mount/directory
= some,extra, mount , options, %I
= 0755
= 5min 5s


[Install]

= some.service some.invalid some_%b.service
= some.service some.socket some.invalid
= some.service some.socket some.invalid
= some.service some.socket some.invalid
= some.service some.socket some.invalid
= id


[Mount]

= /dev/disk/by-uuid/444c-0d9d-411e-a973-015b31acaa
# NOTE: Since systemd version 256 fstab-style identifiers are supported too.
= UUID=444c-0d9d-411e-a973-015b31acaa
= /the/mount/directory
= btrfs
= subvol=some_name,compress=lzo,noatime,noauto,nodev,nosuid
= on
= true
= true
= yes
= 0700
= 5 m 20 s
# see [Service] for options from systemd.exec and systemd.kill


[Path]

= /some/absolute/path
= /some/g[lo]b*
= /some/absolute/path
= /some/absolute/path
= /some/absolute/path
= some@instance.service
= yes
= 0700
= 1min 10sec
= 15


[Service]

## from systemd.service
= exec
= false
= no
= some/path
= some.name
= /usr/bin/Xorg ${DISPLAY} ${XDG_VTNR} \
-logfile %t/X.%i.log \
-nolisten tcp \
-quiet
= @/bin/start/pre some args
= -cmd arg, @cmd2 name -o \x0A
= /bin/exec/condition
= /bin/exec/reload
= /bin/kill -SIGABRT $MAINPID
= -:!!/bin/stop/post
= 15
= 2
= 150ms
= 5s 100ms
= infinity
= 15
= 10
= abort
= kill
= 1min 20 seconds
= 12
= 90
= on-watchdog
= direct
= PROTOCOL RUNTIME_DIRECTORY \
SECCOMP 15 23 SIGUSR1 SIGXCPU
= 15 23 SIGUSR1 \
SIGXCPU
= SIGQUIT SIGSTOP 99
= false
= false
= exec
= some.socket \
some-other.socket
= 5
= yes
= /some/absolute/path
= /some/absolute/path
= stop
= /some/path:fd-name:graceful,read-only
= SIGUSR1

## from systemd.exec
= some/path some/other/path
= /source/path
= /source/path
= /some/absolute/path
= false
= some/path some/other/path
= false
## from systemd.exec Paths
= /some/path:/some/other/path
= ~
= /some/path
= /some/path
= partition_name,noauto
= false
= /some/path
= 0xABCDEF
=
= /some/path
= true
= pid
= /source/path,/destination/path,rbind \
/source/path2,/destination/path2,norbind \
/source/path3
= /source/path,/destination/path,rbind \
/source/path2,/destination/path2,norbind \
/source/path3
= /source/path,dest
## from systemd.exec Credentials
= 1000
= group-name
= true
= group1 group-two 100 \
one-more-group
= false
=
= some_id:/path/to/credential/data
= some_id:/path/to/credential/data
# accepts an optional single trailing asterisk
= some*
= some_id:some_credential
= some_id:some_encrypted_credential
## from systemd.exec Capabilities
= ~ CAP_SYS_ADMIN CAP_DAC_OVERRIDE CAP_SYS_PTRACE \
CAP_NET_ADMIN CAP_SYS_BOOT
= CAP_SYS_ADMIN \
CAP_DAC_OVERRIDE
## from systemd.exec Security
= true
= keep-caps keep-caps-locked \
no-setuid-fixup \
no-setuid-fixup-locked
## from systemd.exec Mandatory Access Control
=
= - someprofile
= -label
## from systemd.exec Process Properties
= 15s:20s
= 12G:24G
= infinity
= 512K
= 128K
= 2G
= 123:234
= 3G
= 4711
= 12G
= 321
= 46
= 512K
= +12 : +15
= 20 : 40
= 12us : 15
= 0022
= default private-dax shared-dax
= private
= 123
= 321
= x86-64
= false
## from systemd.exec Scheduling
= +12
= fifo
= 34
= false
= 0 1, 2 , \
3, 4-8
= interleave
= 1,2,3-8
= idle
= 5
## from systemd.exec Sandboxing
= strict
= read-only
= some/dir:some_symlink
= some/dir
= some/dir
= some/dir
= some/dir
= 0755
= 0755
= 0755
= 0755
= 0755
= restart
= 20
= some/dir
= some/dir
= some/dir
= /var:ro
= yes
= on
= no
= /some/path
= off
= false
= no
= yes
= true
= yes
= y
= ~ AF_INET AF_VSOCK
= ~btrfs ntfs3 \
@temporary
= cgroup net \
ipc
= yes
= true
= true
= true
= no
= false
= shared
## from systemd.exec System Call Filtering
= @debug @aio
= ETIMEDOUT
= mips64-n32 \
native sparc
= ~ some_name \
another_name
## from systemd.exec System Call Environment
= DISPLAY=:%i
= XAUTHORITY=%t/Xauthority.%i \
"var=value with spaces"
= XDG_VTNR=vt%i
= - /some/path
= SOME VARIABLES TO PASS
= SOME VARIABLES TO BE UNSET
## from systemd.exec Logging and Standard Input/Output
= file:/some/absolute/path
= journal+console
= inherit
= SWNrIHNpdHplIGRhIHVuJyBlc3NlIEtsb3B
= yBkZW5rIG5hbnUhCkpldHogaXNzZSB1ZmYsIGVy
= info
= FIELD=VALUE OTHER_FIELD=VALUE2
= 1s 500ms
= 50
= ~some_rx
= \x7esome_rx
= some_name
= some_identifier
= daemon
= debug
= true
= /dev/console
= yes
= on
= 24
= 80
= true
## from systemd.exec System V Compatibility
= utid
= init

## from systemd.kill
= process
= SIGABRT
= SIGHUP
= yes
= no
= SIGABRT
= SIGQUIT

## from systemd.resource-control
= yes
= 1234
= 321
= 123.4%
= 1s 23ms 45us
= 0-8, 12
= 0-24
= 5-8, 12
= 5-10, 12
= yes
= 10G
= 20%
= 22%
= infinity
= 40 %
= 12%
= 60%
= 55%
= 10G
= 5G
= 2G
= false
= 1500k
= on
= 50%
= on
= 1000
= 500
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 1000
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 10M
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 5M
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 1K
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 2K
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 5s 20ms 100us
= on
= 127.0.0.0/8 ::1/128
= 127.0.0.0/8 ::1/128
= strict
= some.slice
= bpf-firewall
= some-cgroup-name
= cpu io
= auto
= kill
= 50%
= omit
= skip
= 50ms
= true
= bind6:/sys/fs/bpf/sock-addr-hook
= ~eth1 eth2
= cgroup:inet:filter:my_service \
user:inet:filter:serviceuser


[Slice]

# The Slice section may include options of the resource-control option group.
# See [Service] for available options of systemd.resource-control.


[Socket]

= 0.0.0.0:4000
= /path/to/socket
= /some/path
= @namespace
= /some/path
= kobject-uevent
= /queue
= /some/path
= sctp
= both
= 123
= name
= users
= someuser
= 0644
= 0744
= no
= yes
= true
= 34
= 10
= yes
= 15s 30ms
= 10s 123us
= 12
= false
= 5
= 1s 100ms
= 10K
= 15K
= low-delay
= 12
= 12
= no
= value
= value
= value
= true
= 1M
= 12
= 1234
= yes
= no
= true
= yes
= true
= true
= nsec
= westwood
= +/usr/bin/start/pre
= @/usr/bin/start/post arg
= /usr/bin/stop/pre
= /usr/bin/stop/post
= 1m 30sec
= some.service
= yes
= /some/path /some/other/path
= some_name
= 1s 500ms
= 50
= 1s 300ms
= 120
= true
# see [Service] for options from systemd.exec and systemd.kill


[Swap]

= /dev/disk/by-uuid/5db77-fde6-424e-a1bb-e88e8996c
# NOTE: Since systemd version 256 fstab-style identifiers are supported too.
= UUID=5db77-fde6-424e-a1bb-e88e8996c
= 123
= some,device,options
= 1m 20s
# see [Service] for options from systemd.exec and systemd.kill


[Timer]

= 90
= 5min 15s 100ms
= 2 minutes
= 1 min
= 1m 30s
= daily
= 1min 10sec
= 30s
= yes
= false
= true
= some_timed.service
= true
= no
= true


[Unit]

= Testing systemd unit
= https://docs.kde.org/stable5/en/applications/katepart/highlight.html \
man:/systemd.unit
= some.service
= some-service-name.service
= some.service
= some.service
= %i.mount
= some.service
= some.service some-other.service
= some.service
= some.service
= some.service some@instance.service
= some.service
= some.service some-other.service
= some.service
= some.service
= some.service
= some.service some-other.service
= some.service some-other.service
= /tmp /var/log %h
= /tmp /var/log %h
= fail
= replace
= true
= false
= false
= true
= true
= no
= yes
= inactive
= reboot
= none
= 15
= 255
= 10
= infinity
= none
= some argument
= 0
= 10
= none
= some argument
= x86
= |vmware
= !shodan*
= !kernel_option
= | >= 4.*
= name
= SOME_ENVIRONMENT_VARIABLE=some_value
= | ! selinux
= !CAP_NET_ADMIN
= true
= !/var
= |false
= !/some/absolute/path
= |!/m?t/s[ao]me/path*
= !/some/path
= !/some/path
= /some/path
= !/some/path
= !/some/absolute/path
= !/some/path
= !/some/path
= !/some/path
= |@system
= |groupname
= memory
= | >= 1G
= | < 8
= | sse2
= ID=some-id
= 20%/5min
= 12%/10sec
= 30% / 1min
= x86
= |vmware
= !shodan*
= !kernel_option
= !>=5.3
= name
= SOME_ENVIRONMENT_VARIABLE=some_value
= | ! selinux
= !CAP_NET_ADMIN
= true
= !/var
= |false
= !/some/absolute/path
= |!/mnt/*
= !/some/path
= !/some/path
= !/some/path
= !/some/path
= !/some/path
= !/some/path
= !/some/path
= !/some/path
= |@system
= |groupname
= memory
= | sse4_2
= ID=some-id
= 20%/5min
= 12%/10sec
= 30% / 1min


###### invalid sections
[Device]
[Invalid]
[Slice]

[Target]



############
# Extensions
############


###### option
[Unit]

= testing extensions
X-this = some value
X-multiple-lines = some.service \
other service


###### section
[X-Unit]
name = value

## Comments in an extension section are just the same as elsewhere.

Some text in an extension section.
The extension section ends with the next section header.



########
# Format
########

###### for options accepting multiple values, lines may be continued
# using a trailing backlash
[Unit]

= before-me.socket \
before-me.service

###### additional spaces are OK
[Unit]

= /tmp /var/log



########################################################
# Testing valid and invalid values for defined contexts.
########################################################


###### invalid options
[Unit]

# missing assignment operator
is invalid as it lacks the assignment operator
# invalid option name
InvalidOption = some text
# WantedBy belongs to the [Install] section
WantedBy = some.service some.socket


###### AC architecture
[Unit]

# see "architecture" for all possible values
= alpha
= | alpha
= |! alpha
= ! alpha
# other options
= |! alpha
## invalid values
= !| alpha
= || alpha
= !! alpha


###### AC boolean
[Unit]

# see "boolean" for all possible values
= true
= | true
= | ! true
= ! true
# other options
= | ! true
= | ! true
= | ! true
## invalid values
= ! | true
= | | true
= !! true


###### AC capability
[Unit]

# see "capability" for all possible values
= CAP_CHOWN
= | CAP_CHOWN
= |! CAP_CHOWN
= ! CAP_CHOWN
# other options
= |! CAP_CHOWN
## invalid values
= !| CAP_CHOWN
= || CAP_CHOWN
= !! CAP_CHOWN


###### AC cardinal
[Unit]

= < 123456789
= <= 123456789
= = 123456789
= != 123456789
= >=123456789
= > 123456789
= |< 123456789
= |<= 123456789
= |= 123456789
= | != 123456789
= | >=123456789
= | > 123456789
## other options
= > 4
## invalid values
= == 123456789
= >> 123456789
= = 123456789.987
= || = 123456789.987


###### AC cardinal KMGT
[Unit]

= > 123456789
= |< 123456789
= |! >= 1G
= | != 512K
## invalid values
# no exabyte (yet)
= = 1E


###### AC cpu feature
[Unit]

# see "cpu feature" for all possible values
= |! sse2


###### AC controller cg (assert/condition for control group controller)
[Unit]

= cpu
= | cpu
= |! cpu
= ! cpu
# other options
= |! cpu
## invalid values
= !| cpu
= || cpu
= !! cpu


###### AC firmware
[Unit]

# see "firmware" for all possible values
= |! uefi


###### AC group
[Unit]

= | name
= |! name
= ! name
# other options
= |! name
## invalid values
= !| name
= || name
= !! name


###### AC security
[Unit]

# see "security" for all possible values
= audit
= | audit
= |! audit
= ! audit
# other options
= |! audit
## invalid values
= !| audit
= || audit
= !! audit


###### AC text
[Unit]

= option=value
= | arg
= |! arg
= ! arg
# other options
= |! /some/path
= |! /some/path
= |! /some/path
= |! arg
= |! /etc
= |! /some/path
= |! /some/path
= |! /some/path
= |! /some/path
= |! /some/path
= |! /some/path
= |! /some/path
= |! name=value
= |! /some/path
= |! /some/path
= |! arg
= |! arg
= |! /var
= |! /some/path
= |! /some/path
= |! /some/path
= |! /some/path
= |! /some/path
= |! /some/path
## invalid values
= !| arg
= || arg
= !! arg


###### AC text *
[Unit]

= hostname
= hostname*
= | hostname*
= |!hostname*
= !hostname*
# other options
= |!hostname*
## invalid values
= !| hostname*
= || hostname*
= !! hostname*


###### AC text glob
[Unit]

= |!/s[ao]me/path*
## invalid values
= !! /s?me/path*


###### AC threshold
[Unit]

# there is only a fixed set of time spans to choose from
= 10%/10sec
= 20%/1min
= | ! 30 % / 5min
## invalid values
# invalid time span
= 30%/5sec
# no %
= 30 / 10sec
# no separator before time span
= 30% 10sec


###### AC user
= | @system
= | name
= |! @system
= ! name
# other options
= |! @system
## invalid values
= !| name
= || name
= !! name


###### AC virtualization
# accepts boolean too
= |true
# see "virtualization" for all possible values
= container
= | container
= |! container
= |! container
= ! container
## invalid values
= ! | true
= | | true
= !! true
# multiple values
= true false


###### - text
[Service]

= - some-profile
=-profile


###### -+/path list
[Service]

= -/some/path
= -+/some/path
= +/some/path
=+/some/path-+/ -/some/other/path \
-+/one/more/path
## invalid values
= - /some/path
= + /some/path
= +-/some/path


###### ~ address family list
[Service]

= AF_ALG
= AF_APPLETALK
= AF_ASH
= AF_ATMPVC
= AF_ATMSVC
= AF_AX25
= AF_BLUETOOTH
= AF_BRIDGE
= AF_CAIF
= AF_CAN
= AF_DECnet
= AF_ECONET
= AF_FILE
= AF_IB
= AF_IEEE802154
= AF_INET
= AF_INET6
= AF_IPX
= AF_IRDA
= AF_ISDN
= AF_IUCV
= AF_KCM
= AF_KEY
= AF_LLC
= AF_LOCAL
= AF_MAX
= AF_MPLS
= AF_NETBEUI
= AF_NETLINK
= AF_NETROM
= AF_NFC
= AF_PACKET
= AF_PHONET
= AF_PPPOX
= AF_QIPCRTR
= AF_RDS
= AF_ROSE
= AF_ROUTE
= AF_RXRPC
= AF_SECURITY
= AF_SMC
= AF_SNA
= AF_TIPC
= AF_UNIX
= AF_UNSPEC
= AF_VSOCK
= AF_WANPIPE
= AF_X25
= AF_XDP
= ~ AF_XDP AF_LOCAL \
AF_SECURITY
# since version 249 an additional 'none' is supported
= none
## invalid values
= AF_INVALID
# multiple values including `none`
= AF_ROUTE none AF_ROSE


###### ~ capability list
# all the values of capability, but multple values for a single option entry are valid
[Service]

= ~ CAP_NET_ADMIN CAP_NET_RAW \
CAP_WAKE_ALARM
=~CAP_NET_ADMIN CAP_NET_RAW \
CAP_WAKE_ALARM


###### ~ namespace list
[Service]

= cgroup
= ipc
= mnt
= net
= pid
= user
= uts
= cgroup uts
= ~ cgroup pid \
uts
# includes boolean
= true
= false
## invalid values
= invalid
= ~ true
# if boolean, no multiple values
= true cgroup


###### ~ system call filter list
[Service]

= @aio
= @basic-io
= @chown
= @clock
= @cpu-emulation
= @debug
= @default
= @file-system
= @io-event
= @ipc
= @keyring
= @memlock
= @module
= @mount
= @network-io
= @obsolete
= @privileged
= @process
= @raw-io
= @reboot
= @resources
= @setuid
= @signal
= @swap
= @sync
= @system-service
= @timer
= @obsolete @timer \
@swap
= ~ @reboot @swap
## invalid values
= invalid
= @invalid @ sync


###### action
[Unit]

= exit
= exit-force
= halt
= halt-force
= halt-immediate
= kexec
= kexec-force
= none
= poweroff
= poweroff-force
= poweroff-immediate
= reboot
= reboot-force
= reboot-immediate
= soft-reboot
= soft-reboot-force
## invalid values
= invalid
= invalid exit
# multiple values
= none exit


###### architecture
[Unit]

= alpha
= arc
= arc-be
= arm
= arm-be
= arm64
= arm64-be
= cris
= ia64
= m68k
= mips
= mips-le
= mips64
= mips64-le
= parisc
= parisc64
= ppc
= ppc-le
= ppc64
= ppc64-le
= s390
= s390x
= sh
= sh64
= sparc
= sparc64
= tilegx
= x86
= x86-64
# special value "native"
= native
## invalid values
= invalid
= invalid x86
# multiple values
= sparc x86


###### boolean
[Unit]

= 1
= 0
= true
= t
= false
= f
= yes
= y
= no
= n
= on
= off
## invalid values
= invalid
# multiple values
= false true


###### calendar
[Timer]

= daily
= hourly
= minutely
= monthly
= quarterly
= semiannually
= weekly
= yearly
= daily UTC
= daily utc
= monday *-12-* 17:00
= Mon *-12-* 17:00
## invalid values
= Mo *-12-* 17:00


###### capability
[Unit]

= CAP_AUDIT_CONTROL
= CAP_AUDIT_READ
= CAP_AUDIT_WRITE
= CAP_BLOCK_SUSPEND
= CAP_CHECKPOINT_RESTORE
= CAP_CHOWN
= CAP_DAC_OVERRIDE
= CAP_DAC_READ_SEARCH
= CAP_FOWNER
= CAP_FSETID
= CAP_IPC_LOCK
= CAP_IPC_OWNER
= CAP_KILL
= CAP_LEASE
= CAP_LINUX_IMMUTABLE
= CAP_MAC_ADMIN
= CAP_MAC_OVERRIDE
= CAP_MKNOD
= CAP_NET_ADMIN
= CAP_NET_BIND_SERVICE
= CAP_NET_BROADCAST
= CAP_NET_RAW
= CAP_SETGID
= CAP_SETFCAP
= CAP_SETPCAP
= CAP_SETUID
= CAP_SYS_ADMIN
= CAP_SYS_BOOT
= CAP_SYS_CHROOT
= CAP_SYS_MODULE
= CAP_SYS_NICE
= CAP_SYS_PACCT
= CAP_SYS_PTRACE
= CAP_SYS_RAWIO
= CAP_SYS_RESOURCE
= CAP_SYS_TIME
= CAP_SYS_TTY_CONFIG
= CAP_SYSLOG
= CAP_WAKE_ALARM
## invalid values
= invalid
# multiple values
= CAP_NET_ADMIN CAP_NET_RAW


###### cardinal
[Unit]

= 15
## invalid values
= -10
= 12.34
= 10%
= infinity
# multiple values
= 10 20


###### cardinal % infinity
[Service]

= 15
= 10%
= infinity
## invalid values
= -10
= 12.34
# multiple values
= 10 20
= infinity 20


###### cardinal %KGMT infinity
[Service]

= 123
= 12K
= 12M
= 12G
= 12T
= 12 G
= 20%
= infinity
## invalid values
= invalid
# invalid bytes suffix
= 12g
= 12H
= 12 E
= 12P


###### cardinal KGMT
[Socket]

= 123
= 12K
= 12M
= 12G
= 12T
= 12 G
## invalid values
= invalid
= infinity
# invalid bytes suffix
= 12g
= 12H
= 12 E
= 12P
= 20%


###### cardinal KGMT infinity
[Service]

= 123
= 12K
= 12M
= 12G
= 12T
= 12 G
= infinity
## invalid values
= invalid
# invalid bytes suffix
= 12g
= 12H
= 12 E
= 12P
= 20%


###### collect mode
[Unit]

= inactive
= inactive-or-failed
## invalid values
= invalid
= invalid inactive
# multiple values
= inactive-or-failed inactive


###### condition needs update
[Unit]

= !/etc
= !/var
## invalid values
= /home
# multiple values
= /etc /var


###### condition user
[Unit]

= @system
= name1
= 1050
## invalid values
= -1050
# multiple values
= @system 1050


###### controller cg (control group controller)
[Unit]

= cpu
= io
= memory
= pids
= v1
= v2
# multiple values
= cpu memory
## invalid values
= invalid


###### controller list
[Service]

# single controller
= blkio
= bpf-devices
= bpf-firewall
= cpu
= cpuacct
= cpuset
= devices
= io
= memory
= pids
# multiple controllers
= cpu io \
memory
## invalid values
= dev invalid


###### cpu affinity
[Service]

# either "numa" or any of the values for "cpu index list"
= numa
= 0 1, 2 , \
3, 4-8 , 10 - 12
# since version 249 specifiers are supported
= %I
## invalid values
= numa-x
# no multiple "numa"
= numa numa
# no CPU index list and "numa"
= numa 0 1 2
= 0 1 2 numa


###### cpu feature
[Unit]

= abm
= adx
= aes
= apic
= avx
= avx2
= bmi1
= bmi2
= clflush
= cmov
= constant_tsc
= cx16
= cx8
= de
= f16c
= fma3
= fpu
= fxsr
= ht
= lahf_lm
= lm
= mca
= mce
= mmx
= monitor
= movbe
= msr
= mtrr
= osxsave
= pae
= pat
= pclmul
= pge
= pni
= popcnt
= pse
= pse36
= rdrand
= rdseed
= rdtscp
= sep
= sha_ni
= sse
= sse2
= sse4_1
= sse4_2
= ssse3
= syscall
= tsc
= vme
= xsave
## invalid values
= invalid
# multiple values
= tsc mmx


###### cpu index list
[Service]

= 0 1 2
= 0,1, 2
# using ranges
= 0-2
= 0 - 2
= 0 1, 2 , \
3, 4-8 ,
## invalid values
= 0 invalid 2, 3;4
= 0-a1
= numa


###### cpu scheduling policy
[Service]

= batch
= fifo
= idle
= other
= rr
## invalid values
= invalid
# multiple values
= batch fifo


###### cpu scheduling priority
[Service]

= 12
= 99
## invalid values
= invalid
= -12
= 0.12
# out of range
= 0
= 100
# multiple values
= 12 34


###### cpu weight
[Service]

= idle
# integer 1..10000
= 1
= 12
= 123
= 1234
= 1234
= 10000
## invalid values
= -1
= 0
= 10001
= 12345
= 12.3
= invalid
# multiple values
= 1 10000


###### delegate
[Service]

# single boolean
= false
= true
# single controller
= blkio
= bpf-devices
= bpf-firewall
= cpu
= cpuacct
= cpuset
= devices
= io
= memory
= pids
# multiple controllers
= cpu io \
memory
## invalid values
= invalid
# multiple boolean values
= on off


###### device cardinal KMGT
[Service]

= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 123
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 12K
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 12M
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 12G
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 12T
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 12 G
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 \
10M
## invalid values
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 20%
# invalid multiplier suffix
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 12g
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 12E
# no device
= 10
= 10M


###### device policy
[Service]

= auto
= closed
= strict
## invalid values
= invalid
# multiple values
= auto closed


###### device time span
[Service]

= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 123
= /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0 5s 20ms \
100us
## invalid values
# no device
= 123
= 5s 20ms 100us


###### exec
[Service]

# specifier and environment variable
= /some/cmd %u arg $var1 inside${var2}word ${var3} $var4
= cmd1 %h arg1_1 $var1, cmd2 %u arg2_1 $var2_1\
$var2_2
# escapes (not exactly the same as detected by HlCStringChar)
= cmd \, \' \" \\ \a \b \f \n \r \s \t \v \x0A \012 \u1234 \U12abcdef
# prefix
= @/some/cmd arg "@!+-:"
= -/some/cmd-1 -option arg
= :/some/cmd arg
= +/some/cmd arg
= !/some/cmd arg
= !!/some/cmd arg
= @:-!!/some/cmd arg
= @!!-:/some/cmd arg
= @:-+/some/cmd arg
## invalid values
# invalid prefix
= @ /some/cmd arg
= @ -/some/cmd arg
= +!/some/cmd arg
= !!!/some/cmd arg
= @+@/some/cmd arg
= @!!+/some/cmd arg


###### exit status
[Service]

= 75
= ADDRESS_FAMILIES
= APPARMOR
= BPF
= CACHE_DIRECTORY
= CANTCREAT
= CAPABILITIES
= CGROUP
= CHDIR
= CHOWN
= CHROOT
= CONFIG
= CONFIGURATION_DIRECTORY
= CONFIRM
= CPUAFFINITY
= CREDENTIALS
= DATAERR
= EXCEPTION
= EXEC
= FAILURE
= FDS
= GROUP
= INVALIDARGUMENT
= IOERR
= IOPRIO
= KEYRING
= LIMITS
= LOGS_DIRECTORY
= MEMORY
= NAMESPACE
= NETWORK
= NICE
= NOHOST
= NOINPUT
= NOPERM
= NOPERMISSION
= NOTCONFIGURED
= NOTIMPLEMENTED
= NOTINSTALLED
= NOTRUNNING
= NOUSER
= NO_NEW_PRIVILEGES
= NUMA_POLICY
= OOM_ADJUST
= OSERR
= OSFILE
= PAM
= PERSONALITY
= PROTOCOL
= RUNTIME_DIRECTORY
= SECCOMP
= SECUREBITS
= SELINUX_CONTEXT
= SETSCHEDULER
= SETSID
= SIGNAL_MASK
= SMACK_PROCESS_LABEL
= SOFTWARE
= STATE_DIRECTORY
= STDERR
= STDIN
= STDOUT
= SUCCESS
= TEMPFAIL
= TIMERSLACK
= UNAVAILABLE
= USAGE
= USER
# using signals (see values for context "signal" for a complete list of values)
= SIGABRT
= ADDRESS_FAMILIES 75 \
23 SIGHUP
## invalid values
= invalid
= -23


###### exit type
[Service]

= main
= cgroup
## invalid values
= invalid
# multiple values
= main cgroup


###### failure mode
[Service]

= abort
= kill
= terminate
## invalid values
= invalid
# multiple values
= abort kill


###### file mode
[Automount]

= 755
## invalid values
= invalid
# need octal digits
= 0758
= 075A
# need 3 to 4 octal digits
= 07
# multiple values
= 0755 0755


###### firmware
[Unit]

= uefi
= device-tree
= device-tree-compatible(some-device-tree)
= device-tree-compatible( some-device-tree )
= smbios-field(board_name = "Custom Board")
## invalid values
= invalid
= device-tree-invalid
# missing argument
= device-tree-compatible
= device-tree-compatible()
= smbios-field
= smbios-field()
# multiple values
= uefi device-tree


###### fs set
[Service]

= @auxiliary-api
= @basic-api
= @common-block
= @historical-block
= @known
= @network
= @privileged-api
= @temporary
## invalid values
= invalid
= temporary


###### fs type
# A selection of file system types to be used as `Type` in mount units.
[Mount]

= binfmt_misc
= btrfs
= configfs
= debugfs
= devtmpfs
= efivarfs
= exfat
= ext2
= ext3
= ext4
= f2fs
= fuse
= fusectl
= gfs2
= hugetlbfs
= iso9660
= jfs
= mqueue
= msdos
= nfs
= nilfs2
= ntfs
= ntfs3
= ocfs2
= overlay
= proc
= reiserfs
= tmpfs
= tracefs
= udf
= vfat
= virtiofs
= xfs
## invalid values
= invalid
= invalid ext4
# multiple values
= btrfs ext4


###### fs type set list
## list of fs type names and fs set names
[Service]

= @auxiliary-api btrfs \
nfs @temporary unknown


###### group and user
[Service]

= 0
= 1000
= 100
= some-name
= some_name
= _some-name-1
= name1
# using specifiers
= %i
= name-%i
= some-%i-name
= %U-name
= some-%i-name-%U
## invalid values
# no negative integers
= -1000
# no float
= 100.0
# no name with leading digit
= 1name
# no name with leading hyphen
= -name
# multiple values
= 1000 1001


###### group list
[Service]

= some-name %U some%iname \
%Uname 1001 name%U


###### io scheduling class
# see systemd.exec
[Service]

= 0
= 1
= 2
= 3
= best-effort
= idle
= realtime
## invalid values
= invalid
= none
= 4
= 123
= -1
# multiple values
= 1 idle
= idle idle
= idle 1


###### ip address list
[Service]

= any
= localhost
= link-local
= multicast
= localhost \
multicast
= 127.0.0.0/8 ::1/128 169.254.0.0/16 fe80::/64
## invalid values
= invalid


###### ip bind
[Socket]

= both
= default
= ipv6-only
## invalid values
= invalid
# multiple values
= both default


###### io scheduling priority
[Service]

= 0
= 1
= 2
= 3
= 4
= 5
= 6
= 7
## invalid values
= 8
= 123
= -1
# multiple values
= 0 3


###### ip tos (terms-of-service)
[Socket]

= 15
= low-cost
= low-delay
= reliability
= throughput
## invalid values
= invalid
# multiple values
= 15 20
= low-delay 15


###### keyring mode
[Service]

= inherit
= private
= shared
## invalid values
= invalid
# multiple values
= shared private


###### kill mode
[Service]

= control-group
= mixed
= none
= process
## invalid values
= invalid
# multiple values
= mixed process


###### limit bytes
[Service]

= 123
= 12K
= 12M
= 12G
= 12T
= 12P
= 12E
= 12 G
= 12G:24G
= 12 G:24 G
= 12 G: 24 G
= 12 G :24 G
= 12 G : 24 G
= infinity
## invalid values
= invalid
# invalid bytes suffix
= 12g
= 12H


###### limit nice level
[Service]

= -1
= -12
= -20
= +1
= +12
= +19
= 0
= 9
= 12
= 23
= 34
= 40
= -10:+10
= 20:30
= infinity
## invalid values
= invalid
= 0.2
= 20 : infinity
= infinity : 20
# out of range
= -21
= -123
= +20
= +123
= 41
= 123


###### limit number
[Service]

= 123
= 123:321
= infinity
## invalid values
= invalid
# negative values
= -123


###### limit time span
[Service]

= 15s 10us : 20s 5ms
= infinity
## invalid values
# only a single infinity
= infinity : infinity
= infinity : 10s 15ms
= 10s 15ms : infinity


###### log facility
[Service]

= auth
= authpriv
= cron
= daemon
= ftp
= kern
= local0
= local1
= local2
= local3
= local4
= local5
= local6
= local7
= lpr
= mail
= news
= syslog
= user
= uucp
## invalid values
= invalid
# multiple values
= cron daemon


###### log level
[Service]

= alert
= crit
= debug
= emerg
= err
= info
= notice
= warning
## invalid values
= invalid
# multiple values
= info notice


###### memory mapping
[Service]

= all
= default
= private-anonymous
= shared-anonymous
= private-file-backed
= shared-file-backed
= elf-headers
= private-huge
= shared-huge
= private-dax
= shared-dax
# multiple values
= private-file-backed shared-dax
## invalid values
= invalid
= private-file-backed invalid elf-headers
= invalid shared-dax
# only spaces as separator
= private-file-backed, shared-dax


###### memory pressure watch
[Service]

= auto
= off
= on
= skip
## invalid values
= invalid
# multiple values
= auto skip


###### mount flag
[Service]

= private
= shared
= slave
## invalid values
= invalid
# multiple values
= shared slave


###### nft set list
[Service]

= cgroup:arp::filter::my_service
= cgroup:bridge::filter::my_service
= cgroup:inet::filter::my_service
= cgroup:ip::filter::my_service
= cgroup:ip6::filter::my_service
= cgroup:ip::filter::my_service
= cgroup:netdev::filter::my_service
= group:inet::filter::my_service
= user:inet::filter::my_service
## multiple sets
= cgroup:inet:filter:my_service \
user:inet:filter:serviceuser
## invalid values
= invalid:inet::filter::my_service
= cgroup::invalid::filter::my_service


###### nice level
[Service]

= -1
= -12
= -20
= +1
= +12
= +19
= 0
= 12
= 19
## invalid values
= invalid
= 0.2
# out of range
= -21
= -123
= +20
= +123
= 20
= 30
= 123
# multiple values
= 12 34


###### notify access
[Service]

= all
= exec
= main
= none
## invalid values
= invalid
# multiple values
= exec none


###### numa mask
[Service]

= all
= 1,2,3-8
## invalid values
= invalid
# both all and cpu index list
= all, 1,2,3-8
= 1,2,3-8, all


###### numa policy
[Service]

= bind
= default
= interleave
= local
= preferred
## invalid values
= invalid
# multiple values
= interleave local


###### on failure job mode
[Unit]

= fail
= flush
= ignore-dependencies
= ignore-requirements
= isolate
= replace
= replace-irreversibly
## invalid values
= invalid
= invalid fail
# multiple values
= replace fail


###### oom behavior (out-of-memory killer behavior)
[Service]

= auto
= kill
## invalid values
= invalid
# multiple values
= auto kill


###### oom preference (out-of-memory killer preference)
[Service]

= avoid
= none
= omit
## invalid values
= invalid
# multiple values
= avoid none


###### oom policy (out-of-memory killer policy)
[Service]

= continue
= kill
= stop
## invalid values
= invalid
# multiple values
= kill stop


###### oom score adjust (out-of-memory killer score adjustment)
[Service]

= -1000
= -123
= 0
= 321
= +321
= +1000
= 1000
## invalid values
= invalid
= 1.2
# out of range
= -1001
= +1001
= 1001

###### open file option
[Service]

= /some/path/:some-name:append,graceful,read-only,truncate
## invalid values
= /some/path/:some-name:some,invalid,options

###### percent
[Slice]

= 0.1%
= 12 %
= 123.4%
## invalid values
= 10
= invalid
# multiple values
= 10% 20%


###### personality
[Service]

= arm
= arm-be
= arm64
= arm64-be
= ppc
= ppc-le
= ppc64
= ppc64-le
= s390
= s390x
= x86
= x86-64
## invalid values
= invalid
= alpha
= m68k
# multiple values
= x86-64 s390x


###### proc subset
[Service]

= all
= pid
## invalid values
= invalid
# multiple values
= all pid


###### protect home
[Service]

= read-only
= tmpfs
= true
= false
= yes
## invalid values
= invalid
# multiple values
= tmpfs true


###### protect system
[Service]

= full
= strict
= true
= false
= yes
= no
## invalid values
= invalid
# multiple values
= full true


###### restart
[Service]

= always
= no
= on-abnormal
= on-abort
= on-failure
= on-success
= on-watchdog
## invalid values
= invalid
# multiple values
= no on-abort


###### restart mode
[Service]

= direct
= normal
## invalid values
= invalid
# multiple values
= direct normal


###### runtime directory preserve
[Service]

= restart
= true
= false
= yes
= no
## invalid values
= invalid
# multiple values
= restart no


###### secure bits list
[Service]

= keep-caps
= keep-caps-locked
= no-setuid-fixup
= no-setuid-fixup-locked
= noroot
= noroot-locked
= keep-caps noroot-locked \
no-setuid-fixup
## invalid values
= invalid


###### security
[Unit]

= apparmor
= audit
= ima
= measured-uki
= selinux
= smack
= tomoyo
= tpm2
= uefi-secureboot
## invalid values
= invalid
# multiple values
= invalid selinux
= apparmor selinux


###### service type
[Service]

= dbus
= exec
= forking
= idle
= notify
= oneshot
= simple
## invalid values
= invalid
# multiple values
= exec forking


###### signal
[Service]

= SIGABRT
= SIGALRM
= SIGBUS
= SIGCHLD
= SIGCLD
= SIGCONT
= SIGEMT
= SIGFPE
= SIGHUP
= SIGILL
= SIGINFO
= SIGINT
= SIGIO
= SIGIOT
= SIGKILL
= SIGLOST
= SIGPIPE
= SIGPOLL
= SIGPROF
= SIGPWR
= SIGQUIT
= SIGSEGV
= SIGSTKFLT
= SIGSTOP
= SIGSYS
= SIGTERM
= SIGTRAP
= SIGTSTP
= SIGTTIN
= SIGTTOU
= SIGUNUSED
= SIGURG
= SIGUSR1
= SIGUSR2
= SIGVTALRM
= SIGWINCH
= SIGXCPU
= SIGXFSZ
## invalid values
= SIG_INVALID


###### socket bind rule
[Service]

= any
= ipv4:
= ipv4:tcp:
= ipv4:tcp:12345
= ipv4:tcp:1-123
= ipv6:udp:1-123
= ipv6: udp: 1 - 123
= tcp:
= 12345
= 123-456
## invalid values
= ipv4 :
= ipv5:tcp:
= ipv4:udcp:
= tcp:ipv4
= ipv4:tcp: 12345
# multiple values
= any ipv4:


###### socket protocol
[Socket]

= sctp
= udplite
## invalid values
= invalid
# multiple values
= sctp udplite


###### standard input
[Service]

= data
= fd
= fd:some_name
= file:/some/absolute/path
= null
= socket
= tty
= tty-fail
= tty-force
## invalid values
= invalid
# multiple values
= null tty
= file:/some/absolute/path socket
# no absolute path immediately after `file:`
= file:
= file:some//path
= file: /some/absolute/path


###### standard output
[Service]

# NOTE: Option StandardError accepts the same values.
= append:/some/absolute/path
= fd
= fd:some_name
= file:/some/absolute/path
= inherit
= journal
= journal+console
= kmsg
= kmsg+console
= null
= socket
= truncate:/some/absolute/path
= tty
## invalid values
= invalid
= syslog
# no absolute path immediately after append:, file:
= append:
= append:some/relative/path
= append: /some/relative/path
= file:
= file:some/relative/path
= file: /some/relative/path
# multiple values
= null tty
= file:/some/absolute/path socket


###### system call architecture
[Service]

= mips64-le-n32
= mips64-n32
= native
= x32
# all values from "architecture" are also valid
= alpha \
mips sparc
## invalid values
= invalid


###### system call errno
[Service]

= kill
= log
# from man errno(3)
= EACCES
= EADDRINUSE
= EADDRNOTAVAIL
= EAFNOSUPPORT
= EAGAIN
= EALREADY
= EBADE
= EBADF
= EBADFD
= EBADMSG
= EBADR
= EBADRQC
= EBADSLT
= EBUSY
= ECANCELED
= ECHILD
= ECHRNG
= ECOMM
= ECONNABORTED
= ECONNREFUSED
= ECONNRESET
= EDEADLK
= EDEADLOCK
= EDESTADDRREQ
= EDOM
= EDQUOT
= EEXIST
= EFAULT
= EFBIG
= EHOSTDOWN
= EHOSTUNREACH
= EHWPOISON
= EIDRM
= EILSEQ
= EINPROGRESS
= EINTR
= EINVAL
= EIO
= EISCONN
= EISDIR
= EISNAM
= EKEYEXPIRED
= EKEYREJECTED
= EKEYREVOKED
= EL2HLT
= EL2NSYNC
= EL3HLT
= EL3RST
= ELIBACC
= ELIBBAD
= ELIBEXEC
= ELIBMAX
= ELIBSCN
= ELNRNG
= ELOOP
= EMEDIUMTYPE
= EMFILE
= EMLINK
= EMSGSIZE
= EMULTIHOP
= ENAMETOOLONG
= ENETDOWN
= ENETRESET
= ENETUNREACH
= ENFILE
= ENOANO
= ENOBUFS
= ENODATA
= ENODEV
= ENOENT
= ENOEXEC
= ENOKEY
= ENOLCK
= ENOLINK
= ENOMEDIUM
= ENOMEM
= ENOMSG
= ENONET
= ENOPKG
= ENOPROTOOPT
= ENOSPC
= ENOSR
= ENOSTR
= ENOSYS
= ENOTBLK
= ENOTCONN
= ENOTDIR
= ENOTEMPTY
= ENOTRECOVERABLE
= ENOTSOCK
= ENOTSUP
= ENOTTY
= ENOTUNIQ
= ENXIO
= EOPNOTSUPP
= EOVERFLOW
= EOWNERDEAD
= EPERM
= EPFNOSUPPORT
= EPIPE
= EPROTO
= EPROTONOSUPPORT
= EPROTOTYPE
= ERANGE
= EREMCHG
= EREMOTE
= EREMOTEIO
= ERESTART
= ERFKILL
= EROFS
= ESHUTDOWN
= ESOCKTNOSUPPORT
= ESPIPE
= ESRCH
= ESTALE
= ESTRPIPE
= ETIME
= ETIMEDOUT
= ETOOMANYREFS
= ETXTBSY
= EUCLEAN
= EUNATCH
= EUSERS
= EWOULDBLOCK
= EXDEV
= EXFULL
= 1
= 12
= 123
= 1234
= 2
= 23
= 234
= 2345
= 3
= 34
= 345
= 3456
= 3999
= 4000
= 4009
= 4019
= 4089
= 4095
## invalid values
= invalid
= -12
= 0.12
# out of range
= 0
= 4096
= 5000
# multiple values
= ESPIPE EUCLEAN
= 123 EUCLEAN


###### time span
[Timer]

# without unit
= 15
# micro second
= 123 usec
= 123us
# using UTF-8 "Micro Sign" U+00B5 µ µ µ
= 123 µs
# using UTF-8 "Greek Small Letter Mu" U+03BC μ μ μ
= 123 μs
# milli second
= 123 msec
= 123ms
# second
= 74 s
= 2sec
= 12 second
= 1 seconds
# minute
= 342 m
= 2min
= 7 minute
= 1 minutes
# hour
= 2 h
= 48 hr
= 2hour
= 2hours
# day
= 2 d
= 1 day
= 7 days
# week
= 2 w
= 123 week
= 0 weeks
# month
= 12 M
= 7 month
= 1 months
# year
= 1y
= 123year
= 12 years
# combined
= 55s500ms
= 300ms20s 5day
= 123 5 days 1m 12 1sec 123 \
23 msec 13 1us
# multiple hours
= 7hr 2hr \
1d 2w
## invalid values
# mi is invalid
= 1mi
# hs is invalid
= 2hs
# ds is invalid
= 7 ds 1y
# unit without amount
= 12 min sec
= min 1 sec
# invalid unit
= 12foo 1 bar


###### timeout
# all values from time span are valid
[Unit]

= 0
= 12345
= 123 5 days 1m 12 1sec 123\
23 msec 13 1us
= infinity
## invalid values
= invalid
= inf
= -10
= 0.235


###### timestamping
[Socket]

= ns
= nsec
= off
= us
= usec
# using UTF-8 "Micro Sign" U+00B5 µ µ µ
= µs
# using UTF-8 "Greek Small Letter Mu" U+03BC μ μ μ
= μs
## invalid values
= nanosec
# multiple values
= nsec off


###### unit
[Path]

#### names
= some-name.service
= some.name.service
= some:name.service
= some@.service
= some@instance.service
= some@other-instance.service
= some@other.instance.service
= some@other:instance.service
= some@other@instance.service
= some@other%iinstance.service
= systemd-fsck@dev-nvme0n1p2.service
= some@%i.service
= dev-disk-by\x2duuid-5af23b\x2dfde6\x2d424e\x2da1bb\x2de88bc.swap
## invalid names
# \x2x is an invalid escape as 2x is no hex number
= dev-disk-by\x2xuuid-5af23b\x2dfde6\x2d424e\x2da1bb\x2de88bc.swap
#### extensions
= some.automount
= some.device
= some.mount
= some.service
= some.socket
= some.slice
= some.swap
= some.target
## invalid extension
= some.invalid
# incomplete unit, missing extension
= some.
# multiple values
= some.service some-other.service
= some.service.service \
some.other.service.service


###### unit list
[Unit]

#### names
= some.service.service \
some.other.service.service \
some@instance.service \
some@%i.service
## invalid values
# incomplete unit, missing extension
= some. \
some.service \
some-other.service


###### unit list socket
[Service]

= some.socket some@instance.socket
## invalid values
= some.service
= some.service some.socket


###### unit service
[Socket]

= some.service
= some@instance.service
## invalid values
= some.invalid
# other unit types
= some.socket
= some.target
# multiple values
= some.service other.service


###### unit slice
[Service]

= some.slice
= some@instance.slice
## invalid values
# other unit types
= some.service
= some.target
# multiple values
= some.slice other.slice


###### utmp mode
[Service]

= init
= login
= user
## invalid values
= invalid
# multiple values
= login user


###### variable assignments
[Service]

= DISPLAY=:%i
= XAUTHORITY=%t/Xauthority.%i var1=15 \
"var2=value with spaces" EMPTY=
= XDG_VTNR=vt%i
= NAME=VALUE


###### virtualization
[Unit]

= acrn
= bhyve
= bochs
= docker
= google
= kvm
= lxc
= lxc-libvirt
= microsoft
= openvz
= oracle
= parallels
= qemu
= qnx
= rkt
= sre
= systemd-nspawn
= uml
= vmware
= wsl
= xen
= zvm
# using boolean
= true
# using generic type
= container
= vm
# private users
= private-users
# negated
= !vmware
## invalid values
= invalid
= invalid vmware
# multiple values
= xen vmware


###### weight
[Service]

# integer 1..10000
= 1
= 12
= 123
= 1234
= 1234
= 10000
## invalid values
= -1
= 0
= 10001
= 12345
= 12.3
= invalid
# multiple values
= 1 10000


###### working directory
[Service]

= ~
= - ~
= %h
= /some/absolute/path
= -/some/absolute-path
= - /some/absolute/path
## invalid values
# using `-` without a path
= -
# multiple paths
= ~ /some/absolute/path
= /some/absolute/path ~
= /some/absolute/path /some/other/path
= - - /some/absolute/path