{
    "content": [
        {
            "type": "text",
            "text": "# SYSTEMD.SPECIAL (info)\n\n## NAME\n\nsystemd.special - Special systemd units\n\n## SYNOPSIS\n\nbasic.target, bluetooth.target, cryptsetup-pre.target,\ncryptsetup.target, veritysetup-pre.target, veritysetup.target,\nctrl-alt-del.target, blockdev@.target, boot-complete.target,\ndefault.target, emergency.target, exit.target, final.target,\nfirst-boot-complete.target, getty.target, getty-pre.target,\ngraphical.target, halt.target, hibernate.target, hybrid-sleep.target,\nsuspend-then-hibernate.target, initrd.target, initrd-fs.target,\ninitrd-root-device.target, initrd-root-fs.target, initrd-usr-fs.target,\nkbrequest.target, kexec.target, local-fs-pre.target, local-fs.target,\nmachines.target multi-user.target, network-online.target,\nnetwork-pre.target, network.target, nss-lookup.target,\nnss-user-lookup.target, paths.target, poweroff.target, printer.target,\nreboot.target, remote-cryptsetup.target, remote-veritysetup.target,\nremote-fs-pre.target, remote-fs.target, rescue.target, rpcbind.target,\nrunlevel2.target, runlevel3.target, runlevel4.target, runlevel5.target,\nshutdown.target, sigpwr.target, sleep.target, slices.target,\nsmartcard.target, sockets.target, sound.target, suspend.target,\nswap.target, sysinit.target, system-update.target,\nsystem-update-pre.target, time-set.target, time-sync.target,\ntimers.target, umount.target, usb-gadget.target, -.slice, system.slice,\nuser.slice, machine.slice, -.mount, dbus.service, dbus.socket,\ndisplay-manager.service, init.scope, syslog.socket,\nsystem-update-cleanup.service\n\n## DESCRIPTION\n\nA few units are treated specially by systemd. Many of them have special\ninternal semantics and cannot be renamed, while others simply have a\nstandard meaning and should be present on all systems.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **UNITS MANAGED BY THE SYSTEM SERVICE MANAGER**\n- **UNITS MANAGED BY THE USER SERVICE MANAGER**\n- **SEE ALSO**\n- **NOTES**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "SYSTEMD.SPECIAL",
        "section": "",
        "mode": "info",
        "summary": "systemd.special - Special systemd units",
        "synopsis": "basic.target, bluetooth.target, cryptsetup-pre.target,\ncryptsetup.target, veritysetup-pre.target, veritysetup.target,\nctrl-alt-del.target, blockdev@.target, boot-complete.target,\ndefault.target, emergency.target, exit.target, final.target,\nfirst-boot-complete.target, getty.target, getty-pre.target,\ngraphical.target, halt.target, hibernate.target, hybrid-sleep.target,\nsuspend-then-hibernate.target, initrd.target, initrd-fs.target,\ninitrd-root-device.target, initrd-root-fs.target, initrd-usr-fs.target,\nkbrequest.target, kexec.target, local-fs-pre.target, local-fs.target,\nmachines.target multi-user.target, network-online.target,\nnetwork-pre.target, network.target, nss-lookup.target,\nnss-user-lookup.target, paths.target, poweroff.target, printer.target,\nreboot.target, remote-cryptsetup.target, remote-veritysetup.target,\nremote-fs-pre.target, remote-fs.target, rescue.target, rpcbind.target,\nrunlevel2.target, runlevel3.target, runlevel4.target, runlevel5.target,\nshutdown.target, sigpwr.target, sleep.target, slices.target,\nsmartcard.target, sockets.target, sound.target, suspend.target,\nswap.target, sysinit.target, system-update.target,\nsystem-update-pre.target, time-set.target, time-sync.target,\ntimers.target, umount.target, usb-gadget.target, -.slice, system.slice,\nuser.slice, machine.slice, -.mount, dbus.service, dbus.socket,\ndisplay-manager.service, init.scope, syslog.socket,\nsystem-update-cleanup.service",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "systemd",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/systemd/1/json"
            },
            {
                "name": "systemd.unit",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/systemd.unit/5/json"
            },
            {
                "name": "systemd.service",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/systemd.service/5/json"
            },
            {
                "name": "systemd.socket",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/systemd.socket/5/json"
            },
            {
                "name": "systemd.target",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/systemd.target/5/json"
            },
            {
                "name": "systemd.slice",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/systemd.slice/5/json"
            },
            {
                "name": "bootup",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/bootup/7/json"
            },
            {
                "name": "generator",
                "section": "8",
                "url": "https://www.chedong.com/phpMan.php/man/generator/8/json"
            },
            {
                "name": ".service",
                "section": "5",
                "url": "https://www.chedong.com/phpMan.php/man/.service/5/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 24,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "UNITS MANAGED BY THE SYSTEM SERVICE MANAGER",
                "lines": 746,
                "subsections": []
            },
            {
                "name": "UNITS MANAGED BY THE USER SERVICE MANAGER",
                "lines": 99,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "NOTES",
                "lines": 10,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "systemd.special - Special systemd units\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "basic.target, bluetooth.target, cryptsetup-pre.target,\ncryptsetup.target, veritysetup-pre.target, veritysetup.target,\nctrl-alt-del.target, blockdev@.target, boot-complete.target,\ndefault.target, emergency.target, exit.target, final.target,\nfirst-boot-complete.target, getty.target, getty-pre.target,\ngraphical.target, halt.target, hibernate.target, hybrid-sleep.target,\nsuspend-then-hibernate.target, initrd.target, initrd-fs.target,\ninitrd-root-device.target, initrd-root-fs.target, initrd-usr-fs.target,\nkbrequest.target, kexec.target, local-fs-pre.target, local-fs.target,\nmachines.target multi-user.target, network-online.target,\nnetwork-pre.target, network.target, nss-lookup.target,\nnss-user-lookup.target, paths.target, poweroff.target, printer.target,\nreboot.target, remote-cryptsetup.target, remote-veritysetup.target,\nremote-fs-pre.target, remote-fs.target, rescue.target, rpcbind.target,\nrunlevel2.target, runlevel3.target, runlevel4.target, runlevel5.target,\nshutdown.target, sigpwr.target, sleep.target, slices.target,\nsmartcard.target, sockets.target, sound.target, suspend.target,\nswap.target, sysinit.target, system-update.target,\nsystem-update-pre.target, time-set.target, time-sync.target,\ntimers.target, umount.target, usb-gadget.target, -.slice, system.slice,\nuser.slice, machine.slice, -.mount, dbus.service, dbus.socket,\ndisplay-manager.service, init.scope, syslog.socket,\nsystem-update-cleanup.service\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "A few units are treated specially by systemd. Many of them have special\ninternal semantics and cannot be renamed, while others simply have a\nstandard meaning and should be present on all systems.\n",
                "subsections": []
            },
            "UNITS MANAGED BY THE SYSTEM SERVICE MANAGER": {
                "content": "Special System Units\n-.mount\nThe root mount point, i.e. the mount unit for the / path. This unit\nis unconditionally active, during the entire time the system is up,\nas this mount point is where the basic userspace is running from.\n\nbasic.target\nA special target unit covering basic boot-up.\n\nsystemd automatically adds dependency of the type After= for this\ntarget unit to all services (except for those with\nDefaultDependencies=no).\n\nUsually, this should pull-in all local mount points plus /var/,\n/tmp/ and /var/tmp/, swap devices, sockets, timers, path units and\nother basic initialization necessary for general purpose daemons.\nThe mentioned mount points are special cased to allow them to be\nremote.\n\nThis target usually does not pull in any non-target units directly,\nbut rather does so indirectly via other early boot targets. It is\ninstead meant as a synchronization point for late boot services.\nRefer to bootup(7) for details on the targets involved.\n\nboot-complete.target\nThis target is intended as generic synchronization point for\nservices that shall determine or act on whether the boot process\ncompleted successfully. Order units that are required to succeed\nfor a boot process to be considered successful before this unit,\nand add a Requires= dependency from the target unit to them. Order\nunits that shall only run when the boot process is considered\nsuccessful after the target unit and pull in the target from it,\nalso with Requires=. Note that by default this target unit is not\npart of the initial boot transaction, but is supposed to be pulled\nin only if required by units that want to run only on successful\nboots.\n\nSee systemd-boot-check-no-failures.service(8) for a service that\nimplements a generic system health check and orders itself before\nboot-complete.target.\n\nSee systemd-bless-boot.service(8) for a service that propagates\nboot success information to the boot loader, and orders itself\nafter boot-complete.target.\n\nctrl-alt-del.target\nsystemd starts this target whenever Control+Alt+Del is pressed on\nthe console. Usually, this should be aliased (symlinked) to\nreboot.target.\n\ncryptsetup.target\nA target that pulls in setup services for all encrypted block\ndevices.\n\nveritysetup.target\nA target that pulls in setup services for all verity integrity\nprotected block devices.\n\ndbus.service\nA special unit for the D-Bus bus daemon. As soon as this service is\nfully started up systemd will connect to it and register its\nservice.\n\ndbus.socket\nA special unit for the D-Bus system bus socket. All units with\nType=dbus automatically gain a dependency on this unit.\n\ndefault.target\nThe default unit systemd starts at bootup. Usually, this should be\naliased (symlinked) to multi-user.target or graphical.target. See\nbootup(7) for more discussion.\n\nThe default unit systemd starts at bootup can be overridden with\nthe systemd.unit= kernel command line option, or more conveniently,\nwith the short names like single, rescue, 1, 3, 5, ...; see\nsystemd(1).\n\ndisplay-manager.service\nThe display manager service. Usually, this should be aliased\n(symlinked) to gdm.service or a similar display manager service.\n\nemergency.target\nA special target unit that starts an emergency shell on the main\nconsole. This target does not pull in other services or mounts. It\nis the most minimal version of starting the system in order to\nacquire an interactive shell; the only processes running are\nusually just the system manager (PID 1) and the shell process. This\nunit may be used by specifying emergency on the kernel command\nline; it is also used when a file system check on a required file\nsystem fails and boot-up cannot continue. Compare with\nrescue.target, which serves a similar purpose, but also starts the\nmost basic services and mounts all file systems.\n\nIn many ways booting into emergency.target is similar to the effect\nof booting with \"init=/bin/sh\" on the kernel command line, except\nthat emergency mode provides you with the full system and service\nmanager, and allows starting individual units in order to continue\nthe boot process in steps.\n\nNote that depending on how emergency.target is reached, the root\nfile system might be mounted read-only or read-write (no remounting\nis done specially for this target). For example, the system may\nboot with root mounted read-only when ro is used on the kernel\ncommand line and remain this way for emergency.target, or the\nsystem may transition to emergency.target after the system has been\npartially booted and disks have already been remounted read-write.\n\nexit.target\nA special service unit for shutting down the system or user service\nmanager. It is equivalent to poweroff.target on non-container\nsystems, and also works in containers.\n\nsystemd will start this unit when it receives the SIGTERM or SIGINT\nsignal when running as user service daemon.\n\nNormally, this (indirectly) pulls in shutdown.target, which in turn\nshould be conflicted by all units that want to be scheduled for\nshutdown when the service manager starts to exit.\n\nfinal.target\nA special target unit that is used during the shutdown logic and\nmay be used to pull in late services after all normal services are\nalready terminated and all mounts unmounted.\n\ngetty.target\nA special target unit that pulls in statically configured local TTY\ngetty instances.\n\ngraphical.target\nA special target unit for setting up a graphical login screen. This\npulls in multi-user.target.\n\nUnits that are needed for graphical logins shall add Wants=\ndependencies for their unit to this unit (or multi-user.target)\nduring installation. This is best configured via\nWantedBy=graphical.target in the unit's [Install] section.\n\nhibernate.target\nA special target unit for hibernating the system. This pulls in\nsleep.target.\n\nhybrid-sleep.target\nA special target unit for hibernating and suspending the system at\nthe same time. This pulls in sleep.target.\n\nsuspend-then-hibernate.target\nA special target unit for suspending the system for a period of\ntime, waking it and putting it into hibernate. This pulls in\nsleep.target.\n\nhalt.target\nA special target unit for shutting down and halting the system.\nNote that this target is distinct from poweroff.target in that it\ngenerally really just halts the system rather than powering it\ndown.\n\nApplications wanting to halt the system should not start this unit\ndirectly, but should instead execute systemctl halt (possibly with\nthe --no-block option) or call systemd(1)'s\norg.freedesktop.systemd1.Manager.Halt D-Bus method directly.\n\ninit.scope\nThis scope unit is where the system and service manager (PID 1)\nitself resides. It is active as long as the system is running.\n\ninitrd.target\nThis is the default target in the initramfs, similar to\ndefault.target in the main system. It is used to mount the real\nroot and transition to it. See bootup(7) for more discussion.\n\ninitrd-fs.target\nsystemd-fstab-generator(3) automatically adds dependencies of type\nBefore= to sysroot-usr.mount and all mount points found in\n/etc/fstab that have the x-initrd.mount mount option set and do not\nhave the noauto mount option set. It is also indirectly ordered\nafter sysroot.mount. Thus, once this target is reached the\n/sysroot/ hierarchy is fully set up, in preparation for the\ntransition to the host OS.\n\ninitrd-root-device.target\nA special initrd target unit that is reached when the root\nfilesystem device is available, but before it has been mounted.\nsystemd-fstab-generator(3) and systemd-gpt-auto-generator(3)\nautomatically setup the appropriate dependencies to make this\nhappen.\n\ninitrd-root-fs.target\nsystemd-fstab-generator(3) automatically adds dependencies of type\nBefore= to the sysroot.mount unit, which is generated from the\nkernel command line's root= setting (or equivalent).\n\ninitrd-usr-fs.target\nsystemd-fstab-generator(3) automatically adds dependencies of type\nBefore= to the sysusr-usr.mount unit, which is generated from the\nkernel command line's usr= switch. Services may order themselves\nafter this target unit in order to run once the /sysusr/ hierarchy\nbecomes available, on systems that come up initially without a root\nfile system, but with an initialized /usr/ and need to access that\nbefore setting up the root file system to ultimately switch to. On\nsystems where usr= is not used this target is ordered after\nsysroot.mount and thus mostly equivalent to initrd-root-fs.target.\nIn effect on any system once this target is reached the file system\nbacking /usr/ is mounted, though possibly at two different\nlocations, either below the /sysusr/ or the /sysroot/ hierarchies.\n\nkbrequest.target\nsystemd starts this target whenever Alt+ArrowUp is pressed on the\nconsole. Note that any user with physical access to the machine\nwill be able to do this, without authentication, so this should be\nused carefully.\n\nkexec.target\nA special target unit for shutting down and rebooting the system\nvia kexec.\n\nApplications wanting to reboot the system should not start this\nunit directly, but should instead execute systemctl kexec (possibly\nwith the --no-block option) or call systemd(1)'s\norg.freedesktop.systemd1.Manager.KExec D-Bus method directly.\n\nlocal-fs.target\nsystemd-fstab-generator(3) automatically adds dependencies of type\nBefore= to all mount units that refer to local mount points for\nthis target unit. In addition, it adds dependencies of type Wants=\nto this target unit for those mounts listed in /etc/fstab that have\nthe auto mount option set.\n\nmachines.target\nA standard target unit for starting all the containers and other\nvirtual machines. See systemd-nspawn@.service for an example.\n\nmulti-user.target\nA special target unit for setting up a multi-user system\n(non-graphical). This is pulled in by graphical.target.\n\nUnits that are needed for a multi-user system shall add Wants=\ndependencies for their unit to this unit during installation. This\nis best configured via WantedBy=multi-user.target in the unit's\n[Install] section.\n\nnetwork-online.target\nUnits that strictly require a configured network connection should\npull in network-online.target (via a Wants= type dependency) and\norder themselves after it. This target unit is intended to pull in\na service that delays further execution until the network is\nsufficiently set up. What precisely this requires is left to the\nimplementation of the network managing service.\n\nNote the distinction between this unit and network.target. This\nunit is an active unit (i.e. pulled in by the consumer rather than\nthe provider of this functionality) and pulls in a service which\npossibly adds substantial delays to further execution. In contrast,\nnetwork.target is a passive unit (i.e. pulled in by the provider of\nthe functionality, rather than the consumer) that usually does not\ndelay execution much. Usually, network.target is part of the boot\nof most systems, while network-online.target is not, except when at\nleast one unit requires it. Also see Running Services After the\nNetwork is up[1] for more information.\n\nAll mount units for remote network file systems automatically pull\nin this unit, and order themselves after it. Note that networking\ndaemons that simply provide functionality to other hosts (as\nopposed to consume functionality of other hosts) generally do not\nneed to pull this in.\n\nsystemd automatically adds dependencies of type Wants= and After=\nfor this target unit to all SysV init script service units with an\nLSB header referring to the \"$network\" facility.\n\nNote that this unit is only useful during the original system\nstart-up logic. After the system has completed booting up, it will\nnot track the online state of the system anymore. Due to this it\ncannot be used as a network connection monitor concept, it is\npurely a one-time system start-up concept.\n\npaths.target\nA special target unit that sets up all path units (see\nsystemd.path(5) for details) that shall be active after boot.\n\nIt is recommended that path units installed by applications get\npulled in via Wants= dependencies from this unit. This is best\nconfigured via a WantedBy=paths.target in the path unit's [Install]\nsection.\n\npoweroff.target\nA special target unit for shutting down and powering off the\nsystem.\n\nApplications wanting to power off the system should not start this\nunit directly, but should instead execute systemctl poweroff\n(possibly with the --no-block option) or call systemd-logind(8)'s\norg.freedesktop.login1.Manager.PowerOff D-Bus method directly.\n\nrunlevel0.target is an alias for this target unit, for\ncompatibility with SysV.\n\nreboot.target\nA special target unit for shutting down and rebooting the system.\n\nApplications wanting to reboot the system should not start this\nunit directly, but should instead execute systemctl reboot\n(possibly with the --no-block option) or call systemd-logind(8)'s\norg.freedesktop.login1.Manager.Reboot D-Bus method directly.\n\nrunlevel6.target is an alias for this target unit, for\ncompatibility with SysV.\n\nremote-cryptsetup.target\nSimilar to cryptsetup.target, but for encrypted devices which are\naccessed over the network. It is used for crypttab(8) entries\nmarked with netdev.\n\nremote-veritysetup.target\nSimilar to veritysetup.target, but for verity integrity protected\ndevices which are accessed over the network. It is used for\nveritytab(8) entries marked with netdev.\n\nremote-fs.target\nSimilar to local-fs.target, but for remote mount points.\n\nsystemd automatically adds dependencies of type After= for this\ntarget unit to all SysV init script service units with an LSB\nheader referring to the \"$remotefs\" facility.\n\nrescue.target\nA special target unit that pulls in the base system (including\nsystem mounts) and spawns a rescue shell. Isolate to this target in\norder to administer the system in single-user mode with all file\nsystems mounted but with no services running, except for the most\nbasic. Compare with emergency.target, which is much more reduced\nand does not provide the file systems or most basic services.\nCompare with multi-user.target, this target could be seen as\nsingle-user.target.\n\nrunlevel1.target is an alias for this target unit, for\ncompatibility with SysV.\n\nUse the \"systemd.unit=rescue.target\" kernel command line option to\nboot into this mode. A short alias for this kernel command line\noption is \"1\", for compatibility with SysV.\n\nrunlevel2.target, runlevel3.target, runlevel4.target, runlevel5.target\nThese are targets that are called whenever the SysV compatibility\ncode asks for runlevel 2, 3, 4, 5, respectively. It is a good idea\nto make this an alias for (i.e. symlink to) graphical.target (for\nrunlevel 5) or multi-user.target (the others).\n\nshutdown.target\nA special target unit that terminates the services on system\nshutdown.\n\nServices that shall be terminated on system shutdown shall add\nConflicts= and Before= dependencies to this unit for their service\nunit, which is implicitly done when DefaultDependencies=yes is set\n(the default).\n\nsigpwr.target\nA special target that is started when systemd receives the SIGPWR\nprocess signal, which is normally sent by the kernel or UPS daemons\nwhen power fails.\n\nsleep.target\nA special target unit that is pulled in by suspend.target,\nhibernate.target and hybrid-sleep.target and may be used to hook\nunits into the sleep state logic.\n\nslices.target\nA special target unit that sets up all slice units (see\nsystemd.slice(5) for details) that shall always be active after\nboot. By default the generic system.slice slice unit as well as the\nroot slice unit -.slice are pulled in and ordered before this unit\n(see below).\n\nAdding slice units to slices.target is generally not necessary.\nInstead, when some unit that uses Slice= is started, the specified\nslice will be started automatically. Adding WantedBy=slices.target\nlines to the [Install] section should only be done for units that\nneed to be always active. In that case care needs to be taken to\navoid creating a loop through the automatic dependencies on\n\"parent\" slices.\n\nsockets.target\nA special target unit that sets up all socket units (see\nsystemd.socket(5) for details) that shall be active after boot.\n\nServices that can be socket-activated shall add Wants= dependencies\nto this unit for their socket unit during installation. This is\nbest configured via a WantedBy=sockets.target in the socket unit's\n[Install] section.\n\nsuspend.target\nA special target unit for suspending the system. This pulls in\nsleep.target.\n\nswap.target\nSimilar to local-fs.target, but for swap partitions and swap files.\n\nsysinit.target\nsystemd automatically adds dependencies of the types Requires= and\nAfter= for this target unit to all services (except for those with\nDefaultDependencies=no).\n\nThis target pulls in the services required for system\ninitialization. System services pulled in by this target should\ndeclare DefaultDependencies=no and specify all their dependencies\nmanually, including access to anything more than a read only root\nfilesystem. For details on the dependencies of this target, refer\nto bootup(7).\n\nsyslog.socket\nThe socket unit syslog implementations should listen on. All\nuserspace log messages will be made available on this socket. For\nmore information about syslog integration, please consult the\nSyslog Interface[2] document.\n\nsystem-update.target, system-update-pre.target,\nsystem-update-cleanup.service\nA special target unit that is used for offline system updates.\nsystemd-system-update-generator(8) will redirect the boot process\nto this target if /system-update exists. For more information see\nsystemd.offline-updates(7).\n\nUpdates should happen before the system-update.target is reached,\nand the services which implement them should cause the machine to\nreboot. The main units executing the update should order themselves\nafter system-update-pre.target but not pull it in. Services which\nwant to run during system updates only, but before the actual\nsystem update is executed should order themselves before this unit\nand pull it in. As a safety measure, if this does not happen, and\n/system-update still exists after system-update.target is reached,\nsystem-update-cleanup.service will remove this symlink and reboot\nthe machine.\n\ntimers.target\nA special target unit that sets up all timer units (see\nsystemd.timer(5) for details) that shall be active after boot.\n\nIt is recommended that timer units installed by applications get\npulled in via Wants= dependencies from this unit. This is best\nconfigured via WantedBy=timers.target in the timer unit's [Install]\nsection.\n\numount.target\nA special target unit that unmounts all mount and automount points\non system shutdown.\n\nMounts that shall be unmounted on system shutdown shall add\nConflicts dependencies to this unit for their mount unit, which is\nimplicitly done when DefaultDependencies=yes is set (the default).\n\nSpecial System Units for Devices\nSome target units are automatically pulled in as devices of certain\nkinds show up in the system. These may be used to automatically\nactivate various services based on the specific type of the available\nhardware.\n\nbluetooth.target\nThis target is started automatically as soon as a Bluetooth\ncontroller is plugged in or becomes available at boot.\n\nThis may be used to pull in Bluetooth management daemons\ndynamically when Bluetooth hardware is found.\n\nprinter.target\nThis target is started automatically as soon as a printer is\nplugged in or becomes available at boot.\n\nThis may be used to pull in printer management daemons dynamically\nwhen printer hardware is found.\n\nsmartcard.target\nThis target is started automatically as soon as a smartcard\ncontroller is plugged in or becomes available at boot.\n\nThis may be used to pull in smartcard management daemons\ndynamically when smartcard hardware is found.\n\nsound.target\nThis target is started automatically as soon as a sound card is\nplugged in or becomes available at boot.\n\nThis may be used to pull in audio management daemons dynamically\nwhen audio hardware is found.\n\nusb-gadget.target\nThis target is started automatically as soon as a USB Device\nController becomes available at boot.\n\nThis may be used to pull in usb gadget dynamically when UDC\nhardware is found.\n\nSpecial Passive System Units\nA number of special system targets are defined that can be used to\nproperly order boot-up of optional services. These targets are\ngenerally not part of the initial boot transaction, unless they are\nexplicitly pulled in by one of the implementing services. Note\nspecifically that these passive target units are generally not pulled\nin by the consumer of a service, but by the provider of the service.\nThis means: a consuming service should order itself after these targets\n(as appropriate), but not pull it in. A providing service should order\nitself before these targets (as appropriate) and pull it in (via a\nWants= type dependency).\n\nNote that these passive units cannot be started manually, i.e.\n\"systemctl start time-sync.target\" will fail with an error. They can\nonly be pulled in by dependency. This is enforced since they exist for\nordering purposes only and thus are not useful as only unit within a\ntransaction.\n\nblockdev@.target\nThis template unit is used to order mount units and other consumers\nof block devices after services that synthesize these block\ndevices. In particular, this is intended to be used with storage\nservices (such as systemd-cryptsetup@.service(5)/ systemd-\nveritysetup@.service(5)) that allocate and manage a virtual block\ndevice. Storage services are ordered before an instance of\nblockdev@.target, and the consumer units after it. The ordering is\nparticularly relevant during shutdown, as it ensures that the mount\nis deactivated first and the service backing the mount later. The\nblockdev@.target instance should be pulled in via a Wants=\ndependency of the storage daemon and thus generally not be part of\nany transaction unless a storage daemon is used. The instance name\nfor instances of this template unit must be a properly escaped\nblock device node path, e.g.  blockdev@dev-mapper-foobar.target for\nthe storage device /dev/mapper/foobar.\n\ncryptsetup-pre.target\nThis passive target unit may be pulled in by services that want to\nrun before any encrypted block device is set up. All encrypted\nblock devices are set up after this target has been reached. Since\nthe shutdown order is implicitly the reverse start-up order between\nunits, this target is particularly useful to ensure that a service\nis shut down only after all encrypted block devices are fully\nstopped.\n\nveritysetup-pre.target\nThis passive target unit may be pulled in by services that want to\nrun before any verity integrity protected block device is set up.\nAll verity integrity protected block devices are set up after this\ntarget has been reached. Since the shutdown order is implicitly the\nreverse start-up order between units, this target is particularly\nuseful to ensure that a service is shut down only after all verity\nintegrity protected block devices are fully stopped.\n\nfirst-boot-complete.target\nThis passive target is intended as a synchronization point for\nunits that need to run once during the first boot. Only after all\nunits ordered before this target have finished, will the machine-\nid(5) be committed to disk, marking the first boot as completed. If\nthe boot is aborted at any time before that, the next boot will\nre-run any units with ConditionFirstBoot=yes.\n\ngetty-pre.target\nA special passive target unit. Users of this target are expected to\npull it in the boot transaction via a dependency (e.g.  Wants=).\nOrder your unit before this unit if you want to make use of the\nconsole just before getty is started.\n\nlocal-fs-pre.target\nThis target unit is automatically ordered before all local mount\npoints marked with auto (see above). It can be used to execute\ncertain units before all local mounts.\n\nnetwork.target\nThis unit is supposed to indicate when network functionality is\navailable, but it is only very weakly defined what that is supposed\nto mean. However, the following should apply at minimum:\n\no   At start-up, any configured synthetic network devices (i.e. not\nphysical ones that require hardware to show up and be probed,\nbut virtual ones like bridge devices and similar which are\ncreated programmatically) that do not depend on any underlying\nhardware should be allocated by the time this target is\nreached. It is not necessary for these interfaces to also have\ncompleted IP level configuration by the time network.target is\nreached.\n\no   At shutdown, a unit that is ordered after network.target will\nbe stopped before the network -- to whatever level it might be\nset up by then -- is shut down. It is hence useful when writing\nservice files that require network access on shutdown, which\nshould order themselves after this target, but not pull it in.\nAlso see Running Services After the Network is up[1] for more\ninformation.\n\nIt must emphasized that at start-up there's no guarantee that\nhardware-based devices have shown up by the time this target is\nreached, or even acquired complete IP configuration. For that\npurpose use network-online.target as described above.\n\nnetwork-pre.target\nThis passive target unit may be pulled in by services that want to\nrun before any network is set up, for example for the purpose of\nsetting up a firewall. All network management software orders\nitself after this target, but does not pull it in.\n\nnss-lookup.target\nA target that should be used as synchronization point for all\nhost/network name service lookups. Note that this is independent of\nUNIX user/group name lookups for which nss-user-lookup.target\nshould be used. All services for which the availability of full\nhost/network name resolution is essential should be ordered after\nthis target, but not pull it in. systemd automatically adds\ndependencies of type After= for this target unit to all SysV init\nscript service units with an LSB header referring to the \"$named\"\nfacility.\n\nnss-user-lookup.target\nA target that should be used as synchronization point for all\nregular UNIX user/group name service lookups. Note that this is\nindependent of host/network name lookups for which\nnss-lookup.target should be used. All services for which the\navailability of the full user/group database is essential should be\nordered after this target, but not pull it in. All services which\nprovide parts of the user/group database should be ordered before\nthis target, and pull it in. Note that this unit is only relevant\nfor regular users and groups -- system users and groups are\nrequired to be resolvable during earliest boot already, and hence\ndo not need any special ordering against this target.\n\nremote-fs-pre.target\nThis target unit is automatically ordered before all mount point\nunits (see above) and cryptsetup/veritysetup devices marked with\nthe netdev. It can be used to run certain units before remote\nencrypted devices and mounts are established. Note that this unit\nis generally not part of the initial transaction, unless the unit\nthat wants to be ordered before all remote mounts pulls it in via a\nWants= type dependency. If the unit wants to be pulled in by the\nfirst remote mount showing up, it should use network-online.target\n(see above).\n\nrpcbind.target\nThe portmapper/rpcbind pulls in this target and orders itself\nbefore it, to indicate its availability. systemd automatically adds\ndependencies of type After= for this target unit to all SysV init\nscript service units with an LSB header referring to the \"$portmap\"\nfacility.\n\ntime-set.target\nServices responsible for setting the system clock (CLOCKREALTIME)\nfrom a local source (such as a maintained timestamp file or\nimprecise real-time clock) should pull in this target and order\nthemselves before it. Services where approximate, roughly monotonic\ntime is desired should be ordered after this unit, but not pull it\nin.\n\nThis target does not provide the accuracy guarantees of\ntime-sync.target (see below), however does not depend on remote\nclock sources to be reachable, i.e. the target is typically not\ndelayed by network problems and similar. Use of this target is\nrecommended for services where approximate clock accuracy and rough\nmonotonicity is desired but activation shall not be delayed for\npossibly unreliable network communication.\n\nThe service manager automatically adds dependencies of type After=\nfor this target unit to all timer units with at least one\nOnCalendar= directive.\n\nThe systemd-timesyncd.service(8) service is a simple daemon that\npulls in this target and orders itself before it. Besides\nimplementing the SNTP network protocol it maintains a timestamp\nfile on disk whose modification time is regularlary updated. At\nservice start-up the local system clock is set from that\nmodification time, ensuring it increases roughly monotonically.\n\nNote that ordering a unit after time-set.target only has effect if\nthere's actually a service ordered before it that delays it until\nthe clock is adjusted for rough monotonicity. Otherwise, this\ntarget might get reached before the clock is adjusted to be roughly\nmonotonic. Enable systemd-timesyncd.service(8), or an alternative\nNTP implementation to delay the target.\n\ntime-sync.target\nServices indicating completed synchronization of the system clock\n(CLOCKREALTIME) to a remote source should pull in this target and\norder themselves before it. Services where accurate time is\nessential should be ordered after this unit, but not pull it in.\n\nThe service manager automatically adds dependencies of type After=\nfor this target unit to all SysV init script service units with an\nLSB header referring to the \"$time\" facility, as well to all timer\nunits with at least one OnCalendar= directive.\n\nThis target provides stricter clock accuracy guarantees than\ntime-set.target (see above), but likely requires network\ncommunication and thus introduces unpredictable delays. Services\nthat require clock accuracy and where network communication delays\nare acceptable should use this target. Services that require a less\naccurate clock, and only approximate and roughly monotonic clock\nbehaviour should use time-set.target instead.\n\nNote that ordering a unit after time-sync.target only has effect if\nthere's actually a service ordered before it that delays it until\nclock synchronization is reached. Otherwise, this target might get\nreached before the clock is synchronized to any remote accurate\nreference clock. When using systemd-timesyncd.service(8), enable\nsystemd-time-wait-sync.service(8) to delay the target; or use an\nequivalent service for other NTP implementations.\n\nTable 1. Comparison\n+---------------------------+--------------------------------+\n|time-set.target            | time-sync.target               |\n+---------------------------+--------------------------------+\n|\"quick\" to reach           | \"slow\" to reach                |\n+---------------------------+--------------------------------+\n|typically uses local clock | typically uses remote          |\n|sources, boot process not  | clock sources, inserts         |\n|affected by availability   | dependencies on remote         |\n|of external resources      | resources into boot            |\n|                           | process                        |\n+---------------------------+--------------------------------+\n|reliable, because local    | unreliable, because            |\n|                           | typically network involved     |\n+---------------------------+--------------------------------+\n|typically guarantees an    | typically guarantees an        |\n|approximate and roughly    | accurate clock                 |\n|monotonic clock only       |                                |\n+---------------------------+--------------------------------+\n|implemented by             | implemented by                 |\n|systemd-timesyncd.service  | systemd-time-wait-sync.service |\n+---------------------------+--------------------------------+\n\nSpecial Slice Units\nThere are four \".slice\" units which form the basis of the hierarchy for\nassignment of resources for services, users, and virtual machines or\ncontainers. See systemd.slice(7) for details about slice units.\n\n-.slice\nThe root slice is the root of the slice hierarchy. It usually does\nnot contain units directly, but may be used to set defaults for the\nwhole tree.\n\nsystem.slice\nBy default, all system services started by systemd are found in\nthis slice.\n\nuser.slice\nBy default, all user processes and services started on behalf of\nthe user, including the per-user systemd instance are found in this\nslice. This is pulled in by systemd-logind.service.\n\nmachine.slice\nBy default, all virtual machines and containers registered with\nsystemd-machined are found in this slice. This is pulled in by\nsystemd-machined.service.\n",
                "subsections": []
            },
            "UNITS MANAGED BY THE USER SERVICE MANAGER": {
                "content": "Special User Units\nWhen systemd runs as a user instance, the following special units are\navailable:\n\ndefault.target\nThis is the main target of the user session, started by default.\nVarious services that compose the normal user session should be\npulled into this target. In this regard, default.target is similar\nto multi-user.target in the system instance, but it is a real unit,\nnot an alias.\n\nIn addition, the following units are available which have definitions\nsimilar to their system counterparts: exit.target, shutdown.target,\nsockets.target, timers.target, paths.target, bluetooth.target,\nprinter.target, smartcard.target, sound.target.\n\nSpecial Passive User Units\ngraphical-session.target\nThis target is active whenever any graphical session is running. It\nis used to stop user services which only apply to a graphical (X,\nWayland, etc.) session when the session is terminated. Such\nservices should have \"PartOf=graphical-session.target\" in their\n[Unit] section. A target for a particular session (e. g.\ngnome-session.target) starts and stops \"graphical-session.target\"\nwith \"BindsTo=graphical-session.target\".\n\nWhich services are started by a session target is determined by the\n\"Wants=\" and \"Requires=\" dependencies. For services that can be\nenabled independently, symlinks in \".wants/\" and \".requires/\"\nshould be used, see systemd.unit(5). Those symlinks should either\nbe shipped in packages, or should be added dynamically after\ninstallation, for example using \"systemctl add-wants\", see\nsystemctl(1).\n\nExample 1. Nautilus as part of a GNOME session\n\"gnome-session.target\" pulls in Nautilus as top-level service:\n\n[Unit]\nDescription=User systemd services for GNOME graphical session\nWants=nautilus.service\nBindsTo=graphical-session.target\n\n\"nautilus.service\" gets stopped when the session stops:\n\n[Unit]\nDescription=Render the desktop icons with Nautilus\nPartOf=graphical-session.target\n\n[Service]\n...\n\ngraphical-session-pre.target\nThis target contains services which set up the environment or\nglobal configuration of a graphical session, such as SSH/GPG agents\n(which need to export an environment variable into all desktop\nprocesses) or migration of obsolete d-conf keys after an OS upgrade\n(which needs to happen before starting any process that might use\nthem). This target must be started before starting a graphical\nsession like gnome-session.target.\n\nxdg-desktop-autostart.target\nThe XDG specification defines a way to autostart applications using\nXDG desktop files. systemd ships systemd-xdg-autostart-generator(8)\nfor the XDG desktop files in autostart directories. Desktop\nEnvironments can opt-in to use this service by adding a Wants=\ndependency on xdg-desktop-autostart.target.\n\nSpecial User Slice Units\nThere are four \".slice\" units which form the basis of the user\nhierarchy for assignment of resources for user applications and\nservices. See systemd.slice(7) for details about slice units and the\ndocumentation about Desktop Environments[3] for further information.\n\n-.slice\nThe root slice is the root of the user's slice hierarchy. It\nusually does not contain units directly, but may be used to set\ndefaults for the whole tree.\n\napp.slice\nBy default, all user services and applications managed by systemd\nare found in this slice. All interactively launched applications\nlike web browsers and text editors as well as non-critical services\nshould be placed into this slice.\n\nsession.slice\nAll essential services and applications required for the session\nshould use this slice. These are services that either cannot be\nrestarted easily or where latency issues may affect the\ninteractivity of the system and applications. This includes the\ndisplay server, screen readers and other services such as DBus or\nXDG portals. Such services should be configured to be part of this\nslice by adding Slice=session.slice to their unit files.\n\nbackground.slice\nAll services running low-priority background tasks should use this\nslice. This permits resources to be preferentially assigned to the\nother slices. Examples include non-interactive tasks like file\nindexing or backup operations where latency is not important.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "systemd(1), systemd.unit(5), systemd.service(5), systemd.socket(5),\nsystemd.target(5), systemd.slice(5), bootup(7), systemd-fstab-\ngenerator(8), user@.service(5)\n",
                "subsections": []
            },
            "NOTES": {
                "content": "1. Running Services After the Network is up\nhttps://www.freedesktop.org/wiki/Software/systemd/NetworkTarget\n\n2. Syslog Interface\nhttps://www.freedesktop.org/wiki/Software/systemd/syslog\n\n3. Desktop Environments\nhttps://systemd.io/DESKTOPENVIRONMENTS\n\nsystemd 249                                                 SYSTEMD.SPECIAL(7)",
                "subsections": []
            }
        }
    }
}