summaryrefslogtreecommitdiff
path: root/man/systemd.unit.xml
Commit message (Collapse)AuthorAgeFilesLines
* man: restore description of ConditionControlGroupController=v1|v2Zbigniew Jędrzejewski-Szmek2023-04-011-5/+14
| | | | | | | | | | We use ConditionControlGroupController=v2 in systemd-oomd.service, and also this condition makes sense in general, so it should be documented. This reverts a part of 6d48c7cf736ced70c1c2fef1e1f03618911d04bc. Deprecated commandline options and v1 controller names were removed from the description.
* man: correct/tweak text about unit name syntaxLennart Poettering2023-03-281-12/+12
| | | | | | | | Unit names can be 255 characters long, not 256. We first say "name prefix" and then continue with "unit prefix". Confusing. Couldn't figure out which term is better hence settled on "unit name prefix".
* docs, man: consistently use comma after "For example"Dmitry V. Levin2023-01-231-1/+1
|
* man: minor correctionsZbigniew Jędrzejewski-Szmek2023-01-221-1/+1
| | | | Two issues that were missed in 8b9f092112ce097dd5c72a58a092c4176458889c.
* virt: Support detection of LMHS SRE guestsNeil Moore2022-12-021-0/+1
|
* man: Add documentation for AssertCredential= (#25178)Steve Ramage2022-10-301-0/+1
| | | | | Fixes #25177. Co-authored-by: Steve Ramage <gitcommits@sjrx.net>
* man: use a list for description of ConditionFirmware=Zbigniew Jędrzejewski-Szmek2022-10-091-27/+32
| | | | | Also reduce confusion of <replaceable> and <literal> and reword things for legibility a bit.
* manager: fix/change evaluation of ConditionFirstBootZbigniew Jędrzejewski-Szmek2022-10-011-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code to evaluate the kernel command line option was busted because it was doing 'return b == !!r' at a point where 'r > 0'. Thus we'd return "true" in both cases: $ SYSTEMD_PROC_CMDLINE=systemd.condition-first-boot build/systemd-analyze condition 'ConditionFirstBoot=true' test.service: ConditionFirstBoot=true succeeded. Conditions succeeded. $ SYSTEMD_PROC_CMDLINE=systemd.condition-first-boot build/systemd-analyze condition 'ConditionFirstBoot=false' test.service: ConditionFirstBoot=false succeeded. Conditions succeeded. We only use 'ConditionFirstBoot=true' in units, so this wasn't noticed. But I think the logic is broken in general: the condition should evaluate as true only during initial boot. If we rerun the units at later points, we should not consider ConditionFirstBoot to be true. Also, the first boot logic is also used in pid1 itself. AFAICT, for two things: in first boot machine-id is initialized transiently (this allows first-boot operations to be restarted if boot fails), and preset-all is executed. But this logic was different and separate from the logic to evaluate ConditionFirstBoot. The distinction is abolished, and the operations in pid1 now use the same logic as ConditionFirstBoot, which means that the kernel command line option is checked, and condition_test_first_boot() just tests whether pid1 thinks we're in first boot. This makes things easier to grok for the user: there's just one condition for "first boot" and it applies to both pid1 and units.
* tree-wide: fix typoYu Watanabe2022-09-241-1/+1
|
* docs: add a note about selectively overriding default dependenciesLuca BRUNO2022-09-201-4/+4
| | | | | | | | | | | | | This documents that explicit `Before=`/`After=` dependencies can be used to selectively override implicit ordering coming from default dependencies. That allows for more granular control compared to the already documented `DefaultDependencies=no` option. The alternative approach came up in a discussion around the ordering of `boot-complete.target`, so this also adds an explicit suggestion in that direction to the "Automatic Boot Assessment" documentation. Ref: https://lists.freedesktop.org/archives/systemd-devel/2022-September/048330.html
* condition: change operator logic to use $= instead of =$ for glob comparisonsLennart Poettering2022-09-011-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | So this is a bit of a bikeshedding thing. But I think we should do this nonetheless, before this is released. Playing around with the glob matches I realized that "=$" is really hard to grep for, since in shell code it's an often seen construct. Also, when reading code I often found myself thinking first that the "$" belongs to the rvalue instead of the operator, in a variable expansion scheme. If we move the $ character to the left hand, I think we are on the safer side, since usually lvalues are much more restricted in character sets than rvalues (at least most programming languages do enforce limits on the character set for identifiers). It makes it much easier to grep for the new operator, and easier to read too. Example: before: ConditionOSRelease=ID=$fedora-* after: ConditionOSRelease=ID$=fedora-*
* condition: change ConditionKernelVersion= so that =/!= mean literal string ↵Lennart Poettering2022-09-011-3/+3
| | | | | | | | | | | | comparison, and ==/<> version comparison The only reason to do this is to ensure uniformity with the other options, that work like this, i.e. ConditionOSRelease= or ConditionSecurity=. This is a compatibility break, but a minor one, given that string comparison and version comparison is mostly the same for equality and inequality.
* condition: allow fnmatch() matches in ConditionKernelVersion=Lennart Poettering2022-09-011-5/+5
| | | | | | This is mostly to make things systematic, and brings no new functionality, as not specifying any operator is identical to prefixing with =$ anyway.
* compare: add two new operators "==" and "<>"Lennart Poettering2022-09-011-29/+33
| | | | | | | | These two operators always indicate ordering comparisons, as opposed to "=" and "!=" which depending on context mean literal string compares. This is useful for ConditionOSRelease= for example, as this means there's now always a way to do version compares.
* condition: allow fnmatch compares for ConditionOSRelease=Lennart Poettering2022-09-011-4/+7
| | | | | We support this for smbios matches, hence do so for /etc/os-release matches too.
* tree-wide: Use "unmet" for condition checks, not "failed"Colin Walters2022-09-011-2/+2
| | | | | | | | | | | | | | | | | | | Often I end up debugging a problem on a system, and I do e.g. `journalctl --grep=failed|error`. The use of the term "failed" for condition checks adds a *lot* of unnecessary noise into this. Now, I know this regexp search isn't precise, but it has proven to be useful to me. I think "failed" is too strong of a term as a baseline, and also just stands out to e.g. humans watching their servers boot or whatever. The term "met condition" is fairly widely used, e.g. https://stackoverflow.com/questions/63751794/what-does-the-condition-is-met-exactly-mean-in-programming-languages Use that instead.
* pid1: extend "ConditionFirmware=" for checking SMBIOS system identification ↵Daniel Braunwarth2022-08-251-4/+18
| | | | information
* Merge pull request #24370 from keszybz/sysusers-equivsLuca Boccassi2022-08-241-1/+1
|\ | | | | Use /bin/bash for root shell and suppress some warnings from sysusers
| * various: try to use DEFAULT_USER_SHELL for root tooZbigniew Jędrzejewski-Szmek2022-08-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | /bin/sh as a shell is punishing. There is no good reason to make the occasional root login unpleasant. Since /bin/sh is usually /bin/bash in compat mode, i.e. if one is available, the other will be too, /bin/bash is almost as good as a default. But to avoid a regression in the situation where /bin/bash (or DEFAULT_USER_SHELL) is not installed, we check with access() and fall back to /bin/sh. This should make this change in behaviour less risky. (FWIW, e.g. Fedora/RHEL use /bin/bash as default for root.) This is a follow-up of sorts for 53350c7bbade8c5f357aa3d1029ef9b2208ea675, which added the default-user-shell option, but most likely with the idea of using /bin/bash less ;) Fixes #24369.
* | Merge pull request #24072 from poettering/remove-cgroupsv1-docsLennart Poettering2022-08-241-16/+5
|\ \ | | | | | | decgroupsv1ification: first steps – remove from docs, and generate warnings
| * | docs: remove documentation about cgroupsv1 settingsLennart Poettering2022-08-231-16/+5
| |/ | | | | | | | | it's legacy. We'll continue to support it in code, but let's simplify the docs a bit, and not mention this legacy stuff anymore.
* | virt: Support detection of Apple Virtualization.framework guestsZhaofeng Li2022-08-241-0/+1
|/
* pid1: add mechanism for conditionalizing units/network/netdev/link based on ↵Lennart Poettering2022-07-151-0/+13
| | | | | | | credentials passed in This is useful when provisioning systems via nspawn/qemu and running specific services only if specific data is passed into the system.
* tree-wide: link to docs.kernel.org for kernel documentationnl67202022-07-041-1/+1
| | | | | | | https://www.kernel.org/ links to https://docs.kernel.org/ for the documentation. See https://git.kernel.org/pub/scm/docs/kernel/website.git/commit/?id=ebc1c372850f249dd143c6d942e66c88ec610520 These URLs are shorter and nicer looking.
* Documents the AssertCPUFeature= flag (#23594)Steve Ramage2022-06-021-0/+1
| | | Fixes #23593
* specifier: use %q for pretty hostnameLennart Poettering2022-04-081-1/+1
| | | | | | | %R is already used in service manager specifier expansion (cgroup root), hence use a different char, that was so far not used. Follow-up for: 6ceb0a4094908dd213a78b9f6d0c59a684831ab0
* fix typoYu Watanabe2022-03-301-1/+1
|
* man: fix invalid description of template handling in WantedBy=Zbigniew Jędrzejewski-Szmek2022-03-291-28/+25
| | | | | | | | | We don't need to talk about Alias=. The approach of using Alias= to enable units is still supported, but hasn't been advertised as the way to do thing for many years. Using it as an explanation is just confusing. Also, the description of templated units did not take DefaultInstance= into account. It is updated and extended.
* man: clarify the descriptions of aliases and linked unit filesZbigniew Jędrzejewski-Szmek2022-03-291-15/+43
| | | | | This just describes the rules that are implemented by the manager, and this pull request does not change any of them.
* core: add %d specifier for the $CREDENTIALS_DIRECTORYFrantisek Sumsal2022-03-171-0/+5
| | | | Resolves: #22549
* core: introduce %R specifier for pretty hostnameFrantisek Sumsal2022-03-101-0/+9
| | | | Resolves: #20054
* man: say that we ignore ignored optionsZbigniew Jędrzejewski-Szmek2022-03-041-7/+5
| | | | Fixes #22057.
* docs: Correct WantedBy= regarding template unitsMax Gautier2022-02-151-3/+3
|
* man: explicitly mention that Requires propagates restartsLuca Boccassi2022-02-031-2/+2
| | | | | It's implicit, but the actions are different, so let's be explicit to avoid any confusion.
* man: Fix paths for user units (transient/generator.early)Rike-Benjamin Schuppner2022-01-261-2/+2
|
* core: add %y/%Y specifiers for the fragment path of the unitZbigniew Jędrzejewski-Szmek2022-01-211-0/+10
| | | | | | | | | | | | | | | | | | Fixes #6308: people want to be able to link a unit file via 'systemctl enable' from a git checkout or such and refer to other files in the same repo. The new specifiers make that easy. %y/%Y is used because other more obvious choices like %d/%D or %p/%P are not available because at least on of the two letters is already used. The new specifiers are only available in units. Technically it would be trivial to add then in [Install] too, but I don't see how they could be useful, so I didn't do that. I added both %y and %Y because both were requested in the issue, and because I think both could be useful, depending on the case. %Y to refer to other files in the same repo, and %y in the case where a single repo has multiple unit files, and e.g. each unit has some corresponding asset named after the unit file.
* core: add Condition[Memory/CPU/IO]PressureLuca Boccassi2021-12-011-0/+26
| | | | | | | | | | By default checks PSI on /proc/pressure, and causes a unit to be skipped if the threshold is above the given configuration for the avg300 measurement. Also allow to pass a custom timespan, and a particular slice unit to check under. Fixes #20139
* core: Try to prevent infinite recursive template instantiationDaan De Meyer2021-10-281-2/+6
| | | | | | | | | | | | | | | | | To prevent situations like in #17602 from happening, let's drop direct recursive template dependencies. These will almost certainly lead to infinite recursion so let's drop them immediately to avoid instantiating potentially thousands of irrelevant units. Example of a template that would lead to infinite recursion which is caught by this check: notify@.service: ``` [Unit] Wants=notify@%n.service ```
* man: fix assorted issues reported by the manpage-l10n projectZbigniew Jędrzejewski-Szmek2021-07-271-1/+1
| | | | Fixes #20297.
* Typo correction on systemd.unit man pagehikigaya582021-07-221-1/+1
|
* core: rework unit printing and implement 'combined' formatZbigniew Jędrzejewski-Szmek2021-06-301-11/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code to print unit status formats had a long history, and became a hard-to-manage mess of duplicate code parts. We would use sprintf() to format a string, and then call sprintf() again… The code is reworked to avoid repeated formattings and to streamline printing to the log and the console. The approach used in this patch is a bit more complex then in patches by Colin Walter and Paweł Marciniak, because an allocation is only done if "combined" format is used. In other cases we return the existing ->id or ->description strings. The caller can also control whether a shorter or longer status string should be used. This way the caller can use a shorter format where it makes sense, for example in the cylon eye output, where we don't have enough horizontal space. Patch is based on Colin Walters' https://github.com/systemd/systemd/pull/15957, and Paweł Marciniak's patch posted on fedora-devel. Note: for some reason, the functions for printing of start and stop messages were sepearated by some unrelated functions. They are moved to be consecutive, but this makes the much more verbose than it would be otherwise. I found it useful to view in gitk's "new" mode. Co-authored-by: Colin Walters <walters@verbum.org> Co-authored-by: Paweł Marciniak <sunwire+git@gmail.com> Output from a Fedora Rawhide container boot (w/ some follow-up patches to tweak Descriptions): Welcome to Fedora 35 (Rawhide Prerelease)! Queued start job for default target graphical.target. [ OK ] Created slice system-getty.slice - Slice /system/getty. [ OK ] Created slice system-modprobe.slice - Slice /system/modprobe. [ OK ] Created slice system-sshd\x2dkeygen.slice - Slice /system/sshd-keygen. [ OK ] Created slice user.slice - User and Session Slice. [ OK ] Started systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch. [ OK ] Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch. [ OK ] Reached target cryptsetup.target - Local Encrypted Volumes. [ OK ] Reached target paths.target - Path Units. [ OK ] Reached target remote-cryptsetup.target - Remote Encrypted Volumes. [ OK ] Reached target remote-fs.target - Remote File Systems. [ OK ] Reached target slices.target - Slice Units. [ OK ] Reached target swap.target - Swaps. [ OK ] Reached target veritysetup.target - Local Verity Integrity Protected Volumes. [ OK ] Listening on systemd-coredump.socket - Process Core Dump Socket. [ OK ] Listening on systemd-initctl.socket - initctl Compatibility Named Pipe. [ OK ] Listening on systemd-journald-dev-log.socket - Journal Socket (/dev/log). [ OK ] Listening on systemd-journald.socket - Journal Socket. [ OK ] Listening on systemd-networkd.socket - Network Service Netlink Socket. [ OK ] Listening on systemd-userdbd.socket - User Database Manager Socket. Mounting dev-hugepages.mount - Huge Pages File System... Starting systemd-journald.service - Journal Service... Starting systemd-remount-fs.service - Remount Root and Kernel File Systems... Starting systemd-sysctl.service - Apply Kernel Variables... [ OK ] Mounted dev-hugepages.mount - Huge Pages File System. [ OK ] Finished systemd-remount-fs.service - Remount Root and Kernel File Systems. Starting systemd-hwdb-update.service - Rebuild Hardware Database... Starting systemd-sysusers.service - Create System Users... [ OK ] Finished systemd-sysctl.service - Apply Kernel Variables. [ OK ] Started systemd-journald.service - Journal Service. Starting systemd-journal-flush.service - Flush Journal to Persistent Storage... [ OK ] Finished systemd-sysusers.service - Create System Users. Starting systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev... [ OK ] Finished systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev. [ OK ] Reached target local-fs-pre.target - Preparation for Local File Systems. [ OK ] Reached target local-fs.target - Local File Systems. [ OK ] Reached target machines.target - Containers. Starting dracut-shutdown.service - Restore /run/initramfs on shutdown... Starting ldconfig.service - Rebuild Dynamic Linker Cache... [ OK ] Finished dracut-shutdown.service - Restore /run/initramfs on shutdown. [ OK ] Finished ldconfig.service - Rebuild Dynamic Linker Cache. [ OK ] Finished systemd-journal-flush.service - Flush Journal to Persistent Storage. Starting systemd-tmpfiles-setup.service - Create Volatile Files and Directories... [ OK ] Finished systemd-tmpfiles-setup.service - Create Volatile Files and Directories. Starting systemd-journal-catalog-update.service - Rebuild Journal Catalog... Starting systemd-oomd.service - Userspace Out-Of-Memory (OOM) Killer... Starting systemd-update-utmp.service - Update UTMP about System Boot/Shutdown... Starting systemd-userdbd.service - User Database Manager... [ OK ] Finished systemd-update-utmp.service - Update UTMP about System Boot/Shutdown. [ OK ] Finished systemd-journal-catalog-update.service - Rebuild Journal Catalog. [ OK ] Started systemd-userdbd.service - User Database Manager. [ OK ] Started systemd-oomd.service - Userspace Out-Of-Memory (OOM) Killer. [ OK ] Finished systemd-hwdb-update.service - Rebuild Hardware Database. Starting systemd-networkd.service - Network Configuration... Starting systemd-update-done.service - Update is Completed... [ OK ] Finished systemd-update-done.service - Update is Completed. [ OK ] Reached target sysinit.target - System Initialization. [ OK ] Started dnf-makecache.timer - dnf makecache --timer. [ OK ] Started logrotate.timer - Daily rotation of log files. [ OK ] Started systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories. [ OK ] Reached target timers.target - Timer Units. [ OK ] Listening on dbus.socket - D-Bus System Message Bus Socket. [ OK ] Reached target sockets.target - Socket Units. [ OK ] Reached target basic.target - Basic System. [ OK ] Reached target sshd-keygen.target. Starting sysstat.service - Resets System Activity Logs... Starting systemd-homed.service - Home Area Manager... Starting systemd-logind.service - User Login Management... Starting dbus-broker.service - D-Bus System Message Bus... [FAILED] Failed to start sysstat.service - Resets System Activity Logs. See 'systemctl status sysstat.service' for details. [ OK ] Started dbus-broker.service - D-Bus System Message Bus. [ OK ] Started systemd-homed.service - Home Area Manager. [ OK ] Finished systemd-homed-activate.service - Home Area Activation. [ OK ] Started systemd-logind.service - User Login Management. [ OK ] Started systemd-networkd.service - Network Configuration. Starting systemd-networkd-wait-online.service - Wait for Network to be Configured... Starting systemd-resolved.service - Network Name Resolution... [ OK ] Started systemd-resolved.service - Network Name Resolution. [ OK ] Reached target network.target - Network. [ OK ] Reached target nss-lookup.target - Host and Network Name Lookups. Starting sshd.service - OpenSSH server daemon... Starting systemd-user-sessions.service - Permit User Sessions... [ OK ] Finished systemd-user-sessions.service - Permit User Sessions. [ OK ] Started console-getty.service - Console Getty. [ OK ] Reached target getty.target - Login Prompts. [ OK ] Started sshd.service - OpenSSH server daemon. [ OK ] Reached target multi-user.target - Multi-User System. [ OK ] Reached target graphical.target - Graphical Interface. Starting systemd-update-utmp-runlevel.service - Update UTMP about System Runlevel Changes... [ OK ] Finished systemd-update-utmp-runlevel.service - Update UTMP about System Runlevel Changes. Fedora 35 (Rawhide Prerelease) Kernel 5.12.12-300.fc34.x86_64 on an x86_64 (console) rawhide login: [ OK ] Stopped session-24.scope - Session 24 of User zbyszek. [ OK ] Removed slice system-getty.slice - Slice /system/getty. [ OK ] Removed slice system-modprobe.slice - Slice /system/modprobe. [ OK ] Removed slice system-sshd\x2dkeygen.slice - Slice /system/sshd-keygen. [ OK ] Stopped target graphical.target - Graphical Interface. [ OK ] Stopped target multi-user.target - Multi-User System. [ OK ] Stopped target getty.target - Login Prompts. [ OK ] Stopped target machines.target - Containers. [ OK ] Stopped target nss-lookup.target - Host and Network Name Lookups. [ OK ] Stopped target remote-cryptsetup.target - Remote Encrypted Volumes. [ OK ] Stopped target timers.target - Timer Units. [ OK ] Stopped dnf-makecache.timer - dnf makecache --timer. [ OK ] Stopped logrotate.timer - Daily rotation of log files. [ OK ] Stopped systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories. [ OK ] Closed systemd-coredump.socket - Process Core Dump Socket. Stopping console-getty.service - Console Getty... Stopping dracut-shutdown.service - Restore /run/initramfs on shutdown... Stopping sshd.service - OpenSSH server daemon... Stopping systemd-logind.service - User Login Management... Stopping systemd-oomd.service - Userspace Out-Of-Memory (OOM) Killer... Stopping user@1000.service - User Manager for UID 1000... [ OK ] Stopped systemd-oomd.service - Userspace Out-Of-Memory (OOM) Killer. [ OK ] Stopped systemd-networkd-wait-online.service - Wait for Network to be Configured. [ OK ] Stopped sshd.service - OpenSSH server daemon. [ OK ] Stopped console-getty.service - Console Getty. [ OK ] Stopped dracut-shutdown.service - Restore /run/initramfs on shutdown. [ OK ] Stopped target sshd-keygen.target. [ OK ] Stopped systemd-logind.service - User Login Management. [ OK ] Stopped user@1000.service - User Manager for UID 1000. Stopping user-runtime-dir@1000.service - User Runtime Directory /run/user/1000... [ OK ] Unmounted run-user-1000.mount - /run/user/1000. [ OK ] Stopped user-runtime-dir@1000.service - User Runtime Directory /run/user/1000. [ OK ] Removed slice user-1000.slice - User Slice of UID 1000. Stopping systemd-user-sessions.service - Permit User Sessions... [ OK ] Stopped systemd-user-sessions.service - Permit User Sessions. [ OK ] Stopped target network.target - Network. [ OK ] Stopped target remote-fs.target - Remote File Systems. Stopping systemd-homed-activate.service - Home Area Activation... Stopping systemd-resolved.service - Network Name Resolution... [ OK ] Stopped systemd-resolved.service - Network Name Resolution. Stopping systemd-networkd.service - Network Configuration... [ OK ] Stopped systemd-homed-activate.service - Home Area Activation. Stopping systemd-homed.service - Home Area Manager... [ OK ] Stopped systemd-homed.service - Home Area Manager. [ OK ] Stopped target basic.target - Basic System. [ OK ] Stopped target paths.target - Path Units. [ OK ] Stopped target slices.target - Slice Units. [ OK ] Removed slice user.slice - User and Session Slice. [ OK ] Stopped target sockets.target - Socket Units. Stopping dbus-broker.service - D-Bus System Message Bus... [ OK ] Stopped dbus-broker.service - D-Bus System Message Bus. [ OK ] Closed dbus.socket - D-Bus System Message Bus Socket. [ OK ] Stopped target sysinit.target - System Initialization. [ OK ] Stopped target cryptsetup.target - Local Encrypted Volumes. [ OK ] Stopped systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch. [ OK ] Stopped systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch. [ OK ] Stopped target veritysetup.target - Local Verity Integrity Protected Volumes. [ OK ] Stopped systemd-update-done.service - Update is Completed. [ OK ] Stopped ldconfig.service - Rebuild Dynamic Linker Cache. [ OK ] Stopped systemd-hwdb-update.service - Rebuild Hardware Database. [ OK ] Stopped systemd-journal-catalog-update.service - Rebuild Journal Catalog. Stopping systemd-update-utmp.service - Update UTMP about System Boot/Shutdown... [ OK ] Stopped systemd-networkd.service - Network Configuration. [ OK ] Closed systemd-networkd.socket - Network Service Netlink Socket. [ OK ] Stopped systemd-sysctl.service - Apply Kernel Variables. [ OK ] Stopped systemd-update-utmp.service - Update UTMP about System Boot/Shutdown. [ OK ] Stopped systemd-tmpfiles-setup.service - Create Volatile Files and Directories. [ OK ] Stopped target local-fs.target - Local File Systems. Unmounting home.mount - /home... Unmounting run-credentials-systemd\x2dsysusers.se…e.mount - /run/credentials/systemd-sysusers.service... Unmounting tmp.mount - Temporary Directory /tmp... [ OK ] Unmounted home.mount - /home. [ OK ] Unmounted tmp.mount - Temporary Directory /tmp. [ OK ] Unmounted run-credentials-systemd\x2dsysusers.service.mount - /run/credentials/systemd-sysusers.service. [ OK ] Stopped target local-fs-pre.target - Preparation for Local File Systems. [ OK ] Stopped target swap.target - Swaps. [ OK ] Reached target umount.target - Unmount All Filesystems. [ OK ] Stopped systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev. [ OK ] Stopped systemd-sysusers.service - Create System Users. [ OK ] Stopped systemd-remount-fs.service - Remount Root and Kernel File Systems. [ OK ] Reached target shutdown.target - System Shutdown. [ OK ] Reached target final.target - Late Boot Services. [ OK ] Finished systemd-poweroff.service - System Power Off. [ OK ] Reached target poweroff.target - System Power Off. Sending SIGTERM to remaining processes... Sending SIGKILL to remaining processes... All filesystems, swaps, loop devices, MD devices and DM devices detached. Powering off.
* core: add ConditionOSRelease= directiveLuca Boccassi2021-06-241-0/+14
|
* man: fix missing markdown & minor errorsPeter Morrow2021-06-091-10/+9
| | | | | | In #19771 there were a few missing markdown tags a few style issue. Signed-off-by: Peter Morrow <pemorrow@linux.microsoft.com>
* man: add details on overriding top level drop-insPeter Morrow2021-06-081-4/+62
| | | | | | | | When using top level drop-ins it isn't immediately obvious that one can make use of symlinking to disable a top-level drop in for a specific unit. Signed-off-by: Peter Morrow <pemorrow@linux.microsoft.com>
* man: explain ConditionNeedsUpdate a bit moreZbigniew Jędrzejewski-Szmek2021-06-081-2/+14
| | | | | | We were effectively doing all post-upgrade scripts twice in Fedora. We got this wrong, so it's likely other people will get it wrong too. So let's explain what is actually needed to make this work, but also when it's not useful.
* man: fix typoadrian52021-06-031-1/+1
|
* man: fix list of escaped characters in unit namesLennart Poettering2021-05-261-4/+5
| | | | | | | | | | | | | The code works differently than the docs, and the code is right here. Fix the doc hence. See VALID_CHARS in unit-name.c for details about allowed chars in unit names, but keep in mind that "-" and "\" are special, since generated by the escaping logic: they are OK to show up in unit names, but need to be escaped when converting foreign strings to unit names to make sure things remain reversible. Fixes: #19623
* core: implement Uphold= dependency typeLennart Poettering2021-05-251-0/+18
| | | | | | | | | | | | | | This is like a really strong version of Wants=, that keeps starting the specified unit if it is ever found inactive. This is an alternative to Restart= inside a unit, acknowledging the fact that whether to keep restarting the unit is sometimes not a property of the unit itself but the state of the system. This implements a part of what #4263 requests. i.e. there's no distinction between "always" and "opportunistic". We just dumbly implement "always" and become active whenever we see no job queued for an inactive unit that is supposed to be upheld.
* core: add new OnSuccess= dependency typeLennart Poettering2021-05-251-5/+10
| | | | | | | | | | | | | | This is similar to OnFailure= but is activated whenever a unit returns into inactive state successfully. I was always afraid of adding this, since it effectively allows building loops and makes our engine Turing complete, but it pretty much already was it was just hidden. Given that we have per-unit ratelimits as well as an event loop global ratelimit I feel safe to add this finally, given it actually is useful. Fixes: #13386
* core: add new PropagateStopTo= dependency (and inverse)Lennart Poettering2021-05-251-7/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This takes inspiration from PropagatesReloadTo=, but propagates stop jobs instead of restart jobs. This is defined based on exactly two atoms: UNIT_ATOM_PROPAGATE_STOP + UNIT_ATOM_RETROACTIVE_STOP_ON_STOP. The former ensures that when the unit the dependency is originating from is stopped based on user request, we'll propagate the stop job to the target unit, too. In addition, when the originating unit suddenly stops from external causes the stopping is propagated too. Note that this does *not* include the UNIT_ATOM_CANNOT_BE_ACTIVE_WITHOUT atom (which is used by BoundBy=), i.e. this dependency is purely about propagating "edges" and not "levels", i.e. it's about propagating specific events, instead of continious states. This is supposed to be useful for dependencies between .mount units and their backing .device units. So far we either placed a BindsTo= or Requires= dependency between them. The former gave a very clear binding of the to units together, however was problematic if users establish mounnts manually with different block device sources than our configuration defines, as we there might come to the conclusion that the backing device was absent and thus we need to umount again what the user mounted. By combining Requires= with the new StopPropagatedFrom= (i.e. the inverse PropagateStopTo=) we can get behaviour that matches BindsTo= in every single atom but one: UNIT_ATOM_CANNOT_BE_ACTIVE_WITHOUT is absent, and hence the level-triggered logic doesn't apply. Replaces: #11340