Kris Lamoureux
8fa2d12bc9
- Install screen/procps and run in detached session - Monitor PID and trap signals for clean exit - Suppress stderr/stdout when running usermod - Clean up Dockerfile
41 lines
1.0 KiB
Bash
Executable File
41 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
set -eu
|
|
|
|
# Polling interval
|
|
SLEEP_INTERVAL=${SLEEP_INTERVAL:-2}
|
|
|
|
# GID/UID
|
|
USER_ID=${GUID:-1000}
|
|
GROUP_ID=${PGID:-1000}
|
|
|
|
# Create group/user
|
|
getent group rtorrent >/dev/null || groupadd -g "$GROUP_ID" rtorrent
|
|
id -u rtorrent &>/dev/null || \
|
|
useradd -m -u "$USER_ID" -g rtorrent -s /bin/bash rtorrent
|
|
|
|
# Update group/user IDs
|
|
groupmod -o -g "$GROUP_ID" rtorrent
|
|
usermod -o -u "$USER_ID" rtorrent &>/dev/null
|
|
|
|
# Copy default config
|
|
if [ ! -e /home/rtorrent/.rtorrent.rc ]; then
|
|
cp /tmp/rtorrent.rc.template /home/rtorrent/.rtorrent.rc
|
|
chown rtorrent:rtorrent /home/rtorrent/.rtorrent.rc
|
|
fi
|
|
|
|
# Start rtorrent in a detached screen session
|
|
su - rtorrent -c "screen -dmS rtorrent rtorrent" &
|
|
|
|
# Wait for the su process to finish
|
|
wait $!
|
|
|
|
# Find rtorrent PID and monitor it
|
|
RTORRENT_PID="$(pgrep -f "^rtorrent$")"
|
|
|
|
# Trap for graceful shutdown
|
|
trap 'su - rtorrent -c "kill -15 $RTORRENT_PID"' SIGTERM SIGINT
|
|
|
|
# Wait for PID
|
|
while kill -0 "$RTORRENT_PID" 2>/dev/null; do sleep "$SLEEP_INTERVAL"; done
|
|
exit 0
|