Files
mirror/tmux.sh
2026-02-28 22:17:51 +09:00

40 lines
1.2 KiB
Bash

#!/bin/bash
SESSION_NAME=$1
WINDOW_NAME=$2
COMMAND=$3
export SHELL=/bin/bash
echo [$(date)] $SESSION_NAME $WINDOW_NAME \"$COMMAND\"
if tmux has-session -t "$SESSION_NAME" 2>/dev/null; then
if tmux list-windows -t "$SESSION_NAME" | grep -q "$WINDOW_NAME"; then
PANE_ID=$(tmux list-panes -t "$SESSION_NAME:$WINDOW_NAME" -F "#{pane_id}" | head -n 1)
if [ -n "$(ps -o state= -o comm= -t "$(tmux list-panes -F "#{pane_tty}" -t "$SESSION_NAME:$WINDOW_NAME" | head -n 1)" | grep -v -E '(bash|zsh|fish|sh|tmux)')" ]; then
echo "ERROR-BUSY"
exit 1
else
echo "EXECUTE"
tmux send-keys -t "$SESSION_NAME:$WINDOW_NAME" "$COMMAND" C-m
fi
else
echo "CREATE-WINDOW-EXECUTE"
tmux new-window -t "$SESSION_NAME" -n "$WINDOW_NAME"
tmux send-keys -t "$SESSION_NAME:$WINDOW_NAME" "$COMMAND" C-m
fi
else
echo "CREATE-SESSION-CREATE-WINDOW-EXECUTE"
tmux new-session -d -s "$SESSION_NAME" -n "$WINDOW_NAME"
tmux send-keys -t "$SESSION_NAME:$WINDOW_NAME" "$COMMAND" C-m
fi
# 0 */4 * * * /home/user/tmux.sh cron mirror "/srv/mirror/scripts/dosync.sh" | tee -a $HOME/cron.log
# 0 */4 * * * /home/user/tmux.sh cron fedora "/srv/mirror/scripts/fedora-sync.sh" | tee -a $HOME/cron.log