75 lines
2.2 KiB
Bash
Executable File
75 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
###
|
|
# File: sunshine-stop
|
|
# Project: bin
|
|
# File Created: Tuesday, 23rd August 2023 3:28:52 pm
|
|
# Author: Josh.5 (jsunnex@gmail.com)
|
|
# -----
|
|
# Last Modified: Friday, 23rd August 2023 4:21:00 pm
|
|
# Modified By: Josh.5 (jsunnex@gmail.com)
|
|
###
|
|
set -e
|
|
|
|
exec >> >(tee -a /tmp/sunshine-exec-stop.log) 2>&1
|
|
echo
|
|
echo "-------------------------------"
|
|
echo
|
|
date
|
|
echo
|
|
echo "-------------------------------"
|
|
echo
|
|
echo "**** Execute sunshine-stop ****"
|
|
echo
|
|
|
|
# Read the run config
|
|
if [ -f /tmp/sunshine-exec-run.conf ]; then
|
|
. /tmp/sunshine-exec-run.conf
|
|
fi
|
|
|
|
# Read the process PID
|
|
process_pid="$(cat /tmp/sunshine-exec-run.pid)"
|
|
echo " - Found initial sunshine-run PID '${process_pid}'"
|
|
|
|
# Send a INT signal to the PID
|
|
echo " - Sending SIGINT to PID '${process_pid}'"
|
|
kill -INT "${process_pid}"
|
|
|
|
# Run a loop to check for any other "sunshine-run" processes and send them also a INT signal
|
|
echo " - Checking for other sunshine-run processes '${process_pid}'"
|
|
for process_pid in $(ps aux | grep -v grep | grep sunshine-run | awk '{print $2}'); do
|
|
echo " - Sending SIGINT to PID '${process_pid}'"
|
|
kill -INT "${process_pid}" 2>/dev/null
|
|
sleep 0.5
|
|
counter=0
|
|
while kill -0 "$process_pid" 2>/dev/null; do
|
|
echo " - Sending SIGTERM to PID '${process_pid}'"
|
|
kill -TERM "$process_pid" 2>/dev/null
|
|
counter=$((counter + 1))
|
|
[ "$counter" -gt 2 ] && break
|
|
sleep 2
|
|
done
|
|
counter=0
|
|
while kill -0 "$process_pid" 2>/dev/null; do
|
|
echo " - Sending SIGKILL to PID '${process_pid}'"
|
|
kill -KILL "$process_pid" 2>/dev/null
|
|
counter=$((counter + 1))
|
|
[ "$counter" -gt 2 ] && break
|
|
sleep 1
|
|
done
|
|
done
|
|
|
|
# Check if the required information was stored for resetting the display resolution and refresh rate
|
|
if ([ "X${primary_output:-}" != "X" ] && [ "X${display_mode:-}" != "X" ] && [ "X${display_rate:-}" != "X" ]); then
|
|
# Reset display resolution and refresh rate
|
|
echo " - Resetting display resolution to ${display_mode:?} ${display_rate:?}Hz"
|
|
xrandr --output "${primary_output:?}" --mode "${display_mode:?}" --rate "${display_rate:?}"
|
|
fi
|
|
|
|
# Clean up config file
|
|
rm -f /tmp/sunshine-exec-run.conf
|
|
|
|
# Clean up PID file
|
|
rm -f /tmp/sunshine-exec-run.pid
|
|
|
|
echo "DONE"
|