jellyfin/fedora/restart.sh
AJ Jordan a4e1732e35
Fix restart.sh to look at what's actually booted
The old code was wrong because e.g. systemd can be *installed* on the
system, but not actually used as PID1. In that case we would pick
`systemctl`, but it wouldn't actually work because PID1 was some other
init system.
2020-11-29 03:43:03 -05:00

50 lines
1.7 KiB
Bash
Executable file

#!/bin/bash
# restart.sh - Jellyfin server restart script
# Part of the Jellyfin project (https://github.com/jellyfin)
#
# This script restarts the Jellyfin daemon on Linux when using
# the Restart button on the admin dashboard. It supports the
# systemctl, service, and traditional /etc/init.d (sysv) restart
# methods, chosen automatically by which one is found first (in
# that order).
#
# This script is used by the Debian/Ubuntu/Fedora/CentOS packages.
# This is the Right Way(tm) to check if we are booted with
# systemd, according to sd_booted(3)
if [ -d /run/systemd/system ]; then
cmd=systemctl
else
# Everything else is really hard to figure out, so we just use
# service(8) if it's available - that works with most init
# systems/distributions I know of, including FreeBSD
if type service >/dev/null 2>&1; then
cmd=service
else
# If even service(8) isn't available, we just try /etc/init.d
# and hope for the best
if [ -d /etc/init.d ]; then
cmd=sysv
else
echo "Unable to detect a way to restart Jellyfin; bailing out" 1>&2
echo "Please report this bug to https://github.com/jellyfin/jellyfin/issues" 1>&2
exit 1
fi
fi
fi
echo "Detected service control platform '$cmd'; using it to restart Jellyfin..."
case $cmd in
'systemctl')
echo "sleep 0.5; /usr/bin/sudo $( which systemctl ) start jellyfin" | at now
;;
'service')
echo "sleep 0.5; /usr/bin/sudo $( which service ) jellyfin start" | at now
;;
'sysv')
echo "sleep 0.5; /usr/bin/sudo /etc/init.d/jellyfin start" | at now
;;
esac
exit 0