Separate tmux sockets, fix systemd service
This commit is contained in:
parent
cbf15e2bde
commit
9e6355ed94
6
PKGBUILD
6
PKGBUILD
@ -1,7 +1,7 @@
|
||||
# Maintainer: NullBite <aur.archlinux@nullbite.com>
|
||||
pkgname=mcserver
|
||||
pkgver=0.0.2
|
||||
pkgrel=1
|
||||
pkgrel=2
|
||||
pkgdesc="Minecraft server manager"
|
||||
arch=("any")
|
||||
url="https://gitea.protogen.io/nullbite/mcserver"
|
||||
@ -9,8 +9,8 @@ license=('GPL')
|
||||
depends=('tmux')
|
||||
source=(mcserver
|
||||
mcserver@.service)
|
||||
sha256sums=('2ad18525822ff9e6136306fec8379a36151dfe682a4fd00797acb111fbb2831d'
|
||||
'7a89d9d657cba77e3157c12f3b26a3354101bed46fcc2d3d8ac366bab4198b04')
|
||||
sha256sums=('c45db69d0b991e37e7ad586f7eeba61aee274e7fc62c1e67dadea4eced14fdc1'
|
||||
'e6a901e658acdd23c0ec9dc6a60d672a1cdf931535a16fe634c57fcdb28fb90e')
|
||||
|
||||
package() {
|
||||
cd "$pkgdir"
|
||||
|
15
mcserver
15
mcserver
@ -13,25 +13,25 @@ if [[ "$(id -u)" == 0 ]] ; then
|
||||
fi
|
||||
|
||||
_stop_and_wait () {
|
||||
tmux $TMUX_OPTS send-keys -t "$TMUX_SESSION" -l "$code_clear" 'stop' "$code_send"
|
||||
tmux -L "$TMUX_SOCKET" send-keys -t "$TMUX_SESSION" -l "$code_clear" 'stop' "$code_send"
|
||||
echo Waiting for session to exit...
|
||||
while tmux $TMUX_OPTS has-session -t "$TMUX_SESSION" ; do
|
||||
while tmux -L "$TMUX_SOCKET" has-session -t "$TMUX_SESSION" ; do
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
_start () {
|
||||
! tmux $TMUX_OPTS has-session -t "$TMUX_SESSION" > /dev/null 2>&1 && \
|
||||
tmux $TMUX_OPTS new-session -d -s "$TMUX_SESSION" "./start.sh" || \
|
||||
! tmux -L "$TMUX_SOCKET" has-session -t "$TMUX_SESSION" > /dev/null 2>&1 && \
|
||||
tmux -L "$TMUX_SOCKET" new-session -d -s "$TMUX_SESSION" "./start.sh" || \
|
||||
die "Instance $instance is already running."
|
||||
}
|
||||
|
||||
_send_command() {
|
||||
exec tmux $TMUX_OPTS send-keys -t "$TMUX_SESSION" -l "$code_clear" "$*" "$code_send"
|
||||
exec tmux -L "$TMUX_SOCKET" send-keys -t "$TMUX_SESSION" -l "$code_clear" "$*" "$code_send"
|
||||
}
|
||||
|
||||
_attach() {
|
||||
tmux $TMUX_OPTS attach -t "$TMUX_SESSION"
|
||||
tmux -L "$TMUX_SOCKET" attach -t "$TMUX_SESSION"
|
||||
}
|
||||
|
||||
# directories
|
||||
@ -72,7 +72,8 @@ source ./vars
|
||||
# override value defined in vars for compatibility with old servers
|
||||
TMUX_SESSION=mcserver-"$instance"
|
||||
# set socket for tmux to separate it from user sessions
|
||||
TMUX_OPTS="-L mcserver"
|
||||
# also each server gets its own socket so systemd doesn't break
|
||||
TMUX_SOCKET="mcserver-$instance"
|
||||
|
||||
case "$cmd" in
|
||||
stop) _stop_and_wait ;;
|
||||
|
@ -4,8 +4,7 @@ Wants=network.target
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=true
|
||||
Type=forking
|
||||
ExitType=cgroup
|
||||
ExecStart=/usr/bin/env mcserver start %i
|
||||
ExecStop =/usr/bin/env mcserver stop %i
|
||||
|
Loading…
x
Reference in New Issue
Block a user