mirror of
https://github.com/morgan9e/mirror
synced 2026-04-14 00:14:15 +09:00
40 lines
1.2 KiB
Bash
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
|
|
|