#!/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