mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-20 14:03:39 +03:00
3776e1f2ee
Brief is sweet. (cherry picked from commit 128db0aa0098b58b415065c2955f9abc7fc967e1) (cherry picked from commit f3abd451dde25086e06c56ba0b8388f64c1d306e) (cherry picked from commit 3626aabecb8a8682caa466de711e8f6509f954ec)
67 lines
2.2 KiB
Bash
Executable File
67 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
set -eux
|
|
set -o pipefail
|
|
|
|
systemd-analyze log-level debug
|
|
systemd-analyze log-target console
|
|
|
|
# Create a binary for which execve() will fail
|
|
touch /tmp/brokenbinary
|
|
chmod +x /tmp/brokenbinary
|
|
|
|
# These three commands should succeed.
|
|
systemd-run --unit=one -p Type=simple /bin/sleep infinity
|
|
systemd-run --unit=two -p Type=simple -p User=idontexist /bin/sleep infinity
|
|
systemd-run --unit=three -p Type=simple /tmp/brokenbinary
|
|
|
|
# And now, do the same with Type=exec, where the latter two should fail
|
|
systemd-run --unit=four -p Type=exec /bin/sleep infinity
|
|
(! systemd-run --unit=five -p Type=exec -p User=idontexist /bin/sleep infinity)
|
|
(! systemd-run --unit=six -p Type=exec /tmp/brokenbinary)
|
|
|
|
systemd-run --unit=seven -p KillSignal=SIGTERM -p RestartKillSignal=SIGINT -p Type=exec /bin/sleep infinity
|
|
# Both TERM and SIGINT happen to have the same number on all architectures
|
|
test "$(systemctl show --value -p KillSignal seven.service)" -eq 15
|
|
test "$(systemctl show --value -p RestartKillSignal seven.service)" -eq 2
|
|
|
|
systemctl restart seven.service
|
|
systemctl stop seven.service
|
|
|
|
# For issue #20933
|
|
|
|
# Should work normally
|
|
busctl call \
|
|
org.freedesktop.systemd1 /org/freedesktop/systemd1 \
|
|
org.freedesktop.systemd1.Manager StartTransientUnit \
|
|
"ssa(sv)a(sa(sv))" test-20933-ok.service replace 1 \
|
|
ExecStart "a(sasb)" 1 \
|
|
/usr/bin/sleep 2 /usr/bin/sleep 1 true \
|
|
0
|
|
|
|
# DBus call should fail but not crash systemd
|
|
(! busctl call \
|
|
org.freedesktop.systemd1 /org/freedesktop/systemd1 \
|
|
org.freedesktop.systemd1.Manager StartTransientUnit \
|
|
"ssa(sv)a(sa(sv))" test-20933-bad.service replace 1 \
|
|
ExecStart "a(sasb)" 1 \
|
|
/usr/bin/sleep 0 true \
|
|
0)
|
|
|
|
# Same but with the empty argv in the middle
|
|
(! busctl call \
|
|
org.freedesktop.systemd1 /org/freedesktop/systemd1 \
|
|
org.freedesktop.systemd1.Manager StartTransientUnit \
|
|
"ssa(sv)a(sa(sv))" test-20933-bad-middle.service replace 1 \
|
|
ExecStart "a(sasb)" 3 \
|
|
/usr/bin/sleep 2 /usr/bin/sleep 1 true \
|
|
/usr/bin/sleep 0 true \
|
|
/usr/bin/sleep 2 /usr/bin/sleep 1 true \
|
|
0)
|
|
|
|
systemd-analyze log-level info
|
|
|
|
echo OK >/testok
|
|
|
|
exit 0
|