Это не поддерживается, если вы используете Centos 7, потому что он не поддерживает флаг --user
для systemctl
. См. этот отчет об ошибке Centos, Поддержка пользователей Systemd нарушена при доставке
Этот скрипт tmux.sh работал на моем tmux 3.0a, и после добавления этого:set -g pane-border-format "#{@mytitle}"
в мой.tmux.conf (см. почему в комментариях ниже сценария ). Возможно, вам также придется добавить это:set -g pane-border-status bottom
в ваш.tmux.conf. С помощью следующей команды вы называете свою сессию «ses», свое окно «win», панель 0 «p1» и панель 1 «p2» :
tmux.sh ses win p1 p2
#!/bin/bash
session=$1
window=$2
pan1=$3
pan2=$4
#Get width and lenght size of terminal, this is needed if one wants to resize a detached session/window/pane
#with resize-pane command here
set -- $(stty size) #$1=rows, $2=columns
#start a new session in dettached mode with resizable panes
tmux new-session -s $session -n $window -d -x "$2" -y "$(($1 - 1))"
tmux send-keys -t $session 'echo "first command in 1st pane"' C-m
#rename pane 0 with value of $pan1
tmux set -p @mytitle "$pan1"
#split window vertically
tmux split-window -h
tmux send-keys -t $session 'echo "first command in 2nd pane"' C-m
tmux set -p @mytitle "$pan2"
#At the end, attach to the customized session
tmux attach -t $session
У меня было много проблем с переименованием панелей, потому что tmux select-pane -t $window.0 -T $pan1
должно работать, но, как указано здесь,:https://stackoverflow.com/questions/60106672/prevent-tmuxs-pane-title-from-being-updatedнекоторые обновления заголовков панелей могут выполняться приложениями внутри tmux. Поэтому я использовал приемы, указанные в ответе по предыдущей ссылке (Николас Марриотт также дал решение для версии tmux старше 3.0a)
Более короткий способ сделать это. В этом примере создается 4 панели в сетке.
#!/bin/bash
sh="/usr/bin/env sh" # You can also choose zsh.
SESSION="misc" # Session name.
WINDOW="experiments" # Window name.
tmux kill-session -t "$SESSION" 2>&1
tmux start \; new-session -d -s "$SESSION" -n "$WINDOW" "$sh -c \"echo 'first shell'\"; $sh -i" \;
tmux split-window "$sh -c \"echo 'second shell'\"; $sh -i" \;
tmux split-window "$sh -c \"echo 'third shell'\"; $sh -i" \;
tmux split-window "$sh -c \"echo 'fourth shell'\"; $sh -i" \;
tmux select-layout tiled \;
tmux attach -t "$SESSION" \;
tmux switch -t "$SESSION"