If sh is not bash, some builtin command behave slightly differently. E.g. if sh is provided by busybox, its builtin test command does not check if the path is a mount point or not, and 'test -w' only checks the access mode of the inode. So, even if a readonly filesystem is mounted on a directory, the test command may succeed. To avoid such confusion, let's unconditionally use bash.
18 lines
733 B
Bash
Executable File
18 lines
733 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
set -eux
|
|
set -o pipefail
|
|
|
|
# Check that timestamps of a Type=notify service are consistent
|
|
|
|
systemd-run --service-type notify --property NotifyAccess=all --unit notify.service --wait bash -c 'systemd-notify --ready; exit 1' || :
|
|
|
|
start=$(systemctl show --property=ExecMainStartTimestampMonotonic --value notify.service)
|
|
handoff=$(systemctl show --property=ExecMainHandoffTimestampMonotonic --value notify.service)
|
|
active=$(systemctl show --property=ActiveEnterTimestampMonotonic --value notify.service)
|
|
exit=$(systemctl show --property=ExecMainExitTimestampMonotonic --value notify.service)
|
|
|
|
[[ $start -le $handoff ]]
|
|
[[ $handoff -le $active ]]
|
|
[[ $active -le $exit ]]
|