blob: b2e24f267b2d9326c98dab9ee24f8298c863e45d [file] [log] [blame]
##/bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2024 Oracle. All Rights Reserved.
#
# Routines for managing systemd units
# Is systemd installed?
_systemd_installed() {
_have_program systemctl
}
_require_systemd_installed() {
_require_program systemctl systemd
}
# Is systemd running on this system?
_systemd_is_running() {
_systemd_installed || return 1
systemctl show-environment &>/dev/null
}
_require_systemd_is_running() {
_systemd_is_running || \
_notrun "systemd is not active"
}
# Is this unit defined, as according to systemd?
_systemd_unit_defined() {
_systemd_installed || return 1
systemctl cat "$1" >/dev/null
}
_require_systemd_unit_defined() {
_require_systemd_installed
_systemd_unit_defined "$1" || \
_notrun "systemd unit \"$1\" not found"
}
# Is this unit active, as according to systemd?
_systemd_unit_active() {
_systemd_installed || return 1
_systemd_unit_defined "$1" || return 1
test "$(systemctl is-active "$1")" = "active"
}
_require_systemd_unit_active() {
_require_systemd_unit_defined "$1"
_systemd_unit_active "$1" || \
_notrun "systemd unit \"$1\" not active"
}
# Find the path to a systemd unit
_systemd_unit_path() {
systemctl show "$1" | grep FragmentPath= | cut -d '=' -f 2
}
# Make systemd reload itself after changing unit files or generator sources
# such as /etc/fstab
_systemd_reload() {
systemctl daemon-reload
}
# Where is the systemd runtime directory?
_systemd_runtime_dir() {
echo "/run/systemd/system/"
}
# What is the status of this systemd unit?
_systemd_unit_status() {
_systemd_installed || return 1
systemctl status "$1"
}