aboutsummaryrefslogtreecommitdiff
path: root/debian/bin/restart.sh
diff options
context:
space:
mode:
Diffstat (limited to 'debian/bin/restart.sh')
-rwxr-xr-xdebian/bin/restart.sh56
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