diff options
Diffstat (limited to 'debian/bin/restart.sh')
| -rwxr-xr-x | debian/bin/restart.sh | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/debian/bin/restart.sh b/debian/bin/restart.sh new file mode 100755 index 000000000..4847b918b --- /dev/null +++ b/debian/bin/restart.sh @@ -0,0 +1,56 @@ +#!/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 + +if type sudo >/dev/null 2>&1; then + sudo_command=sudo +else + sudo_command= +fi + +echo "Detected service control platform '$cmd'; using it to restart Jellyfin..." +case $cmd in + 'systemctl') + # Without systemd-run here, `jellyfin.service`'s shutdown terminates this process too + $sudo_command systemd-run systemctl restart jellyfin + ;; + 'service') + echo "sleep 0.5; $sudo_command service jellyfin start" | at now + ;; + 'sysv') + echo "sleep 0.5; /usr/bin/sudo /etc/init.d/jellyfin start" | at now + ;; +esac +exit 0 |
