내 세션 이름을 기반으로 디렉터리의 파일에 내 모든 "tmux" 세션을 자동으로 기록하려면 어떻게 해야 합니까?

내 세션 이름을 기반으로 디렉터리의 파일에 내 모든 "tmux" 세션을 자동으로 기록하려면 어떻게 해야 합니까?

여러 개의 명명된 세션이 있습니다 tmux. 예를 들어:

$ tmux new -s mysession1
$ tmux new -s mysession2

~/.tmux.conf세션 이름을 기반으로 디렉터리의 파일에 각 세션을 자동으로 기록하는 기능을 my에 추가하고 싶습니다 . 예를 들어 위에서 제공 하고 생성한 ~/mytmuxsessions/시나리오에서는 터미널 창 명령(명령과 유사 )의 출력을 포함하는 다음 로그 파일을 생성합니다.mysession1mysession2script -f file.log

  1. ~/mytmuxsessions/mysession1.log
  2. ~/mytmuxsessions/mysession2.log

나는 그것을 조사해 보았고 이것을 발견했습니다 :

  1. tmux에 GNU Screen의 "log" 명령과 동등한 것이 있습니까?
  2. https://blog.sleeplessbeastie.eu/2019/10/28/how-to-store-the-contents-of-tmux-pane/

이러한 질문은 키를 명령에 바인딩하려고 시도하지만 자동으로 수행되기를 원합니다. 즉, ~/.tmux.conf입력하고 잊어버릴 수 있는 것입니다. 예를 들어, 이 명령이 수행하는 작업은 로그 파일의 현재 출력을 모두 처리하는 것입니다.

capture-pane -b temp-capture-buffer -S - \; save-buffer -b temp-capture-buffer ~/tmux.log \; delete-buffer -b capture-buffer

하지만 내가 원하는 것은 내 세션 이름을 기반으로 터미널 출력을 로그 파일에 지속적으로 저장하는 명령에 넣을 수 있는 Linux script명령과 비슷한 것 입니다.script -f mysession.log~/.tmux.conf

답변1

을 사용하는 방법을 찾을 수 없습니다 .tmux.conf. "동적"이란 귀하의 경우 세션 이름을 기반으로 함을 의미합니다.유닉스 타임스탬프나는. 하지만 기본 코드는 사용할 수 있습니다.tmux 로깅;나에게 맞는 것을 얻기 위해 소스 코드를 수정했습니다.

이 솔루션은 특정 세션의 모든 내용을 하나의 로그 파일에 저장하지 않습니다. 이는 가능하지만 해당 세션에 존재할 수 있는 다양한 창과 분할창을 결합하는 것은 어려울 수 있습니다. 그러나 이 솔루션은 세션의 각 창에 대한 로그 파일을 저장하므로 모든 입력 및 출력이 로그 파일에 포함됩니다. 언제든지 에서 파생할 수도 있고 tmux-plugins/tmux-login, 함께 구성한 내용을 기반으로 자신만의 코드를 작성하고 원하는 것을 사용할 수도 있습니다.


긴 이야기 짧게

tmux-logginggit 저장소에서 설치합니다 tmux-plugins.

filename_suffix원하는 형식과 일치 하도록 변수 정의를 변경합니다 . 이 작업은 에서 수행되어야 합니다 /path/to/tmux-plugins/tmux-logging/scripts/variables.sh.

다른 스크립트에 복사했습니다 toggle_logging.sh. 호출했습니다 ~/.ensure_tmux_logging_on.sh. 내 디렉토리에 있으므로 $HOME향후 업데이트에서는 tmux제거되지 않습니다. if is_logging아무 작업도 수행하지 않도록(또는 메시지만 출력하도록) 스크립트를 변경하십시오 . 연관된 else분기를 변경하지 않고 그대로 둡니다.

~/.ensure_tmux_logging_on.sh.bash_profile(또는 .bash_login또는 .login또는 .profile비로그인 쉘에서 호출되고 있는지 확인하는 것) 에서 호출하십시오. tmux항상 비로그인 셸을 열므로 .bashrc이전 스크립트 중 하나에서 가져오지 않으면 작동하지 않습니다. 바라보다여기(1),여기 (2), 또는여기(3)- 세 가지 모두 동일한 질문에 대한 답변입니다. 자세한 내용을 알아보세요.

업데이트가 있으면 tmux-logging동일한 방법을 사용해야 하므로 어딘가에 메모해 두십시오.

이 작업을 수행하는 방법을 찾으려고 노력 중이지만 .tmux.conf액세스 가능한 변수에 설정된 것 같아서 세션 정보를 가져오는 데 문제가 있습니다.뒤쪽에 .tmux.conf구매되었습니다.


자세한 내용은

내가 사용하는 것은Tmux 플러그인 관리자( tpm) 설치 방법 은 tmux-logging한번에 설치 한다는 뜻 입니다 tpm. 다음은 tmux-logging및의 추가 정보 파일에 설명된 작업을 수행하는 몇 가지 빠른 명령입니다 .tpmtmux-logging노트, 이미 가지고 있는 경우 tpm다음 지침을 따르세요.읽어보기 tmux-logging파일, 즉 행 추가

set -g @plugin 'tmux-plugins/tmux-logging'

귀하의 플러그인 목록에 ~/.tmux.conf.

tpm이 명령을 사용하여 (적어도 표준 설치의 경우)

$ test ! -d ~/.tmux/plugins/tpm && \
 echo -e "\n\nYou don't have \`tpm', continue with the next commands\n" || \
 echo -e "\n\n\
You have \`tpm'.
\033[0;31mPAY ATTENTION TO THIS MESSAGE\x21\033[0m
Follow the instructions at
'https://github.com/tmux-plugins/tmux-logging/'
then
\033[0;32mgo to the 'After getting tmux-logging' part of the answer\033[0m\n"

그렇지 않은 경우 tpm실행하십시오.

#(prompt can be in tmux or not)
## It's best, but not necessary, to get in the directory where we'll be doing stuff.
bbd025@MACHINE $ cd
## check the existence of ~/.tmux/plugins/tpm directory, 
##+ create it if it doesn't exist
bbd025@MACHINE $ test -d ~/.tmux/plugins/tpm || mkdir -p ~/.tmux/plugins/tpm
## clone in the tpm code
bbd025@MACHINE $ git clone https://github.com/tmux-plugins/tpm \
   ~/.tmux/plugins/tpm
## create ~/.tmux.conf if it doesn't exist
bbd025@MACHINE $ test -f ~/.tmux.conf || touch ~/.tmux.conf
## Add the lines to ~/.tmux.conf as directed by the READMEs. Note that
##+ that the lines with only a '.' allow for spacing between the end of
##+ anything currently in your ~/.tmux.conf and these lines
bbd025@MACHINE $ cat <<'EOF' | sed 's/^\.$//g;' >> ~/.tmux.conf
.
.
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
# -v- OUR LOGGING PLUGIN -v-
set -g @plugin 'tmux-plugins/tmux-logging'

# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'github_username/plugin_name#branch'
# set -g @plugin '[email protected]:user/plugin'
# set -g @plugin '[email protected]:user/plugin'

#Initialize TMUX plugin manager(keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
EOF
bbd025@MACHINE $

tmux-logging을 얻은 후

다른 방법을 사용하여 다른 콘텐츠를 설치하거나 구성하는 경우 를 사용해야 tmux-logging합니다 ./my/path/to/tmux-logging/~/.tmux/plugins/tmux-logging/

아직 시작하지 않았다면 tmux세션 을 시작하세요.

$ tmux

하단에 녹색 배너 유형이 표시되어 해당 항목에 있음을 알려줍니다 tmux. [Prefix]+ Shift+를 누릅니다 . ( + i라고도 하며 기본적으로 +를 먼저 누른 다음 +를 누릅니다 .)[Prefix]ICtrlbShifti

다음 줄이 표시됩니다실제 터미널에서, 녹색 알림 표시줄 대신.

TMUX environment reloaded.
Done, press ENTER to continue.

~에 따르면ENTER

이제 편집해 보겠습니다 ~/.tmux/plugins/tmux-logging/scripts/variables.sh.

원하는 출력 파일 이름에 가까운 것(OP)의 경우(그러나 새 창이나 창에서 호출할 때 덮어쓰거나 뒤섞이지 않습니다. 적어도 그럴 것이라고 생각합니다) 다음과 같이 변경하십시오. 선:

# General options
# Next, commented line has original variable
#replaced#filename_suffix="#{session_name}-#{window_index}-#{pane_index}-%Y%m%dT%H%M%S.log"
filename_suffix="#{session_name}-#{window_index}-#{pane_index}.log"

( 업데이트할 때 이 정보를 안전하게 유지하는 방법을 알아보려면 참고 [1]tmux 을 참조하세요 .)

-#{window_index}-#{pane_index}세션에서 열린 적이 없는 경우 여러 창을 삭제할 수 있습니다. 그러면 OP에 필요한 것과 정확히 일치하는 로그 파일 이름이 제공됩니다. 여러 창으로 끝나는 경우 로깅이 어떻게 될지는 잘 모르겠지만 재정의하지 않으면 지저분해질 것이라고 생각합니다. 참고로, 표시되는 변수는 ~/.tmux/plugins/tmux-logging/scripts/shared.sh.

default_logging_path파일에서 몇 줄을 변경할 수도 있지만 이는 처리할 수 있는 ~/.tmux.conf것이므로 엉망으로 만들지 않았습니다.

내가 하는 일 - 내 사용자 이름이 로그 파일의 일부가 되도록 하고, 완전히 고유하고 추적 가능한 타임스탬프를 원하며, 시간순으로 정렬되기를 원합니다. (그리고 내 파일이 한 줄에 80자를 초과하는 것을 좋아하지 않습니다. ) - 라인을 변경 중이므로

# General options
# -v- original before change by bballdave025 -v- , 2022-02-28
#filename_suffix=\
#"#{session_name}-#{window_index}-#{pane_index}-%Y%m%dT%H%M%S.log"
filename_suffix="bbd025-%s\
-#{session_name}-#{window_index}-#{pane_index}-%Y%m%dT%H%M%S%z.log"

tmux-파일 이름 앞에 오는 내용을 원하지 않으면 variables.sh파일을 다시 변경해야 합니다. 약간 다른 로깅 옵션에는 파일 이름 접두사가 다르기 때문에 내 컴퓨터에서는 이 작업을 수행하지 않지만 이 답변에서는 수행했습니다.

따라서 접두사가 필요하지 않으면 variables.sh다음 줄로 변경하십시오.

# original commented out on the line below
#default_logging_filename="tmux-${filename_suffix}"
default_logging_filename="${filename_suffix}"

이제 필요한 것을 ~/.tmux.conf. 다른 법적 경로는 여기에 배치할 수 있습니다. 화면 캡처 및/또는 로그 버퍼를 사용 tmux-logging하고 로깅 옵션을 계속하면 화면 캡처 또는 버퍼가 포함된 전체 기록이 자동 시작 로그 파일과 동일한 디렉터리에 저장됩니다. 이 줄을 파일의 어디에 넣는지는 정확히 중요하지 않지만 ~/.tmux.confTMUX 플러그인 관리자가 마지막에 유지하라고 지시하는 마지막 줄까지 그대로 둡니다.

set -g @logging-path "$HOME/mytmuxsessions"
set -g @screen-capture-path "$HOME/mytmuxsessions"
set -g @save-complete-history-path "$HOME/mytmuxsessions"

다음으로 새 스크립트에 복사하여 해당 스크립트가 스크립트 (또는 비로그인 스크립트에서 호출되도록 결정된 모든 항목) toggle_logging.sh에 포함되어 있는지 확인합니다 .~/.bash_profile

실제로 ~/.bashrc~/.bash_profile코드에서 다음을 얻습니다.

# @file  .bash_profile

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

다음과 같은 줄이 있으면 ~/.bashrc주석 처리할 수 있습니다.

# If not running interactively, don't do anything
[[ "$-" != *i* ]] && return

도착하다

## If not running interactively, don't do anything
#[[ "$-" != *i* ]] && return

그렇지 않고 로그인 셸에서만 사용하도록 for 환경과 기능을 유지하려면 ~/.bashrc끝에 넣을 줄을 추가하거나 비로그인 스크립트용으로 로드되는 파일을 추가하면 됩니다.~/.bashrc~/.bash_login

마침내 우리는 그것을 얻었습니다 toggle_logging.sh. 아래 제공된 복사 명령을 실행하십시오. 다시 한번 말하지만, 향후 업그레이드로 인해 파일이 삭제되지 않도록 파일을 홈 폴더( ~일명 )에 저장했습니다 . 아래에서 선택한 디렉토리와 파일 이름 대신 자신에게 맞는 디렉토리와 파일 이름을 선택할 수 있습니다.$HOMEtmux

$ cp ~/.tmux/plugins/tmux-logging/scripts/toggle_logging.sh \
     ~/.ensure_tmux_logging_on.sh

tpm(사용된 옵션이 없으면 tmux-logging복제하거나 빌드한 모든 위치에서 스크립트에 액세스해야 합니다 tmux-logging.)

~/.ensure_tmux_logging_on.sh이제 아래와 같이 변경해 보세요 . (제가 주석 처리한 원본 코드를 유지할 필요는 없습니다. 해당 부분이 있으므로 원본 텍스트를 검색하여 바꾸거나 저처럼 주석 처리할 수 있습니다. 이렇게 하면 새로운 내용이 어디에 있어야 하는지 알 수 있습니다. 가다 .)

---

### changed for auto-logging (I often put in my username and date of change)
### bballdave025, 2022-02-28
#orig#CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

#orig#source "$CURRENT_DIR/variables.sh"
#orig#source "$CURRENT_DIR/shared.sh"

## new for tmux auto-logging, bballdave025 2022-02-28
TMUX_LOGGING_SCRIPTS_DIR="$HOME/.tmux/plugins/tmux-logging/scripts"
CURRENT_DIR="$TMUX_LOGGING_SCRIPTS_DIR"
  ## Not really our current dir, but it allows other code called
  ##+ downstream to work.

source "$TMUX_LOGGING_SCRIPTS_DIR/variables.sh"
source "$TMUX_LOGGING_SCRIPTS_DIR/shared.sh"

---

### original function commented out, bballdave025 2022-02-28
#stop_pipe_pane() {
#  tmux pipe-pane
#  display_message "Ended logging to $logging_full_filename"
#}

### new function added, bballdave025 2022-02-28
confirm_logging()
{
  display_message "Logging already happening to ${logging_full_filename}"
}

---

#original comment## starts/stop logging
# starts/continues logging ( bballdave025, 2022-02-28 )
#orig#toggle_pipe_pane() {
## -v- new function name -v- , bballdave025, 2022-03-09
ensure_pipe_pane_on()
{
  if is_logging; then
    #orig#set_logging_variable "not logging"
    #orig#stop_pipe_pane
    # -v- bballdave025 2022-02-28 -v- first line probably unneeded (?)
    set_logging_variable "logging"
    confirm_logging
    # everything from here is as in the original
  else
    set_logging_variable "logging"
    start_pipe_pane
  fi
}

## -v- main changed -v- by bballdave025, 2022-03-08
#orig#main() {
#orig#  if supported_tmux_version_ok; then
#orig#    toggle_pipe_pane
#orig#  fi
#orig#}

main()
{
  if supported_tmux_version_ok; then
    ensure_pipe_pane_on
  fi
}
main

---

나만큼 장황할 필요는 없습니다. 즉, 모든 주석과 이전 줄이 필요하지 않습니다. 무엇이 바뀌고 있는지 명확해지기를 바랍니다. 이 코드를 더 간단하게 만드는 방법이 있습니다. 무슨 일이 일어나고 있는지 이해했다면 그렇게 해도 됩니다.

스크립트가 실행 가능한지 확인하세요

$ chmod +x ~/.ensure_tmux_logging_on.sh

~/.bash_profile이제 비로그인 터미널( a , a 등 소스 )에서 호출될 파일에 이를 추가할 수 있는 몇 줄의 코드가 있습니다 ~/.bashrc. ~/.bash_profile내 예에서는 비로그인 화면에 대해 `~/.bash_profile로 호출했으므로 ~/.bashrc거기에 내 줄을 추가하겠습니다.

~/.ensure_tmux_logging_on.sh이 줄을 사용하면 새 터미널에 처음 들어갈 때 실행 됩니다 . 여러분의(또는 다른 파일) tmux아무 곳에나 다음 줄을 추가하세요 . ~/.bashrc저는 마지막에 넣었습니다.

if [ ! -z $TMUX ]; then
  $HOME/.ensure_tmux_logging_on.sh
fi

내 시스템 "RHEL 8"(RedHat 기반)에서 테스트되었습니다.

짧은 버전: 작동합니다. 다음 섹션을 건너뛰어도 되지만, 아래 5개 항목을 확인해 보시는 것을 추천드립니다.

다음은 알아야 할 몇 가지 중요한 사항입니다.

1)이제 OP의 명령을 실행하십시오.

$ tmux new -s mysession1

그 결과 로그 파일이 생성되고,

~/mytmuxsessions/mysession1-1-1.log

마찬가지로 $ tmux new -s mysession2로그 파일이 생성됩니다.~/mytmuxsessions/mysession2-1-1.log

2)이러한 세션에서 새로 생성된 창/창은 터미널 프롬프트에서 명령을 사용하여 이름으로 생성한 경우에도 숫자로 표시됩니다.

삼)세션 이름을 제공하지 않으면(터미널 프롬프트에서 새 창을 시작하고 (   -s   ) SESSION_NAME` 옵션을 사용해야만 제공 가능) 할당된 세션 번호만 얻을 수 있습니다.

4)OP에 대해 설정할 때 새 세션의 로그는 이전에 생성된 세션과 동일한 이름을 갖습니다. 즉, 두 번째 사용 시 tmux new -s mysession1이전 로그 파일을 덮어쓰게 됩니다. 예가 없으면 명확하지 않으므로 여기에 하나가 있습니다.

$ ls -lAh ~/mytmuxsessions # to see that mysession1-1-1.log is already there
-rw-r--r--. 1 bbd025 bbd025 405 Mar   1  10:22 mysession1-1-1.log
-rw-r--r--. 1 bbd025 bbd025 824 Feb   28 17:40 mysession2-1-1.log
$ tmux new -s mysession1 # I'll enter a new tmux session after this command
(tmux)$ # Some stuff.
(tmux)$ echo "Putting text, I/O, etc. in the logfile"
(tmux)$ alias ls='ls --color=auto'
(tmux)$ type ls
ls is aliased to 'ls --color=auto'
(tmux)$ tmux kill-session -t mysession1
$ ls -lAh ~/mytmuxsessions
-rw-r--r--. 1 bbd025 bbd025 1.6K Mar   2  13:02 mysession1-1-1.log
-rw-r--r--. 1 bbd025 bbd025 824  Feb   28 11:40 mysession2-1-1.log

size바이트로 mytmuxsession1-1-1.log생성된 첫 번째 로그 파일은 더 이상 존재하지 않습니다. 대신 이제 size 로 생성 했습니다 .Mar 1 10:22405mytmuxsession1-1-1.logMar 2 13:021.6K

이 재정의를 피하려면 BSD 명령 형식에 특정 유형의 날짜 문자열을 포함하십시오 date. 예를 들어 tmux-logging을 variables.sh다음과 같이 변경하십시오.

filename_suffix="#{session_name}-#{window_index}-#{pane_index}\
-%Y%m%dT%H%M%S%z.log"

이는 재정의와 동일하지 않습니다.기간tmux아까 얘기했던 그 모임.

5)이것이 실제로 필요한지 확실하지 않지만 내 항목 ~/.bashrc(또는 ~/.bash_profile다른 항목)에 다음을 추가했습니다. 더 많은 설명/옵션이 포함된 예제 버전도 있습니다.

## Function to be run every time one exits a bash terminal
finish()
{
  if [ ! -z $TMUX  ]; then
    $HOME/.tmux/plugins/tmux-logging/scripts/toggle_logging.sh
  fi
}

trap finish EXIT

짧은

테스트하기 전에 터미널을 종료하고 다시 시작하거나 실행해야 합니다 source ~/.bashrc(또는 편집한 유사한 파일을 가져와야 합니다). 저는 두 번째 방법을 선호하는데, 확실하지 않은 경우 등 ~/.bash_profile~/bashrc재부팅하는 것이 좋습니다.

편집하다이 답변보다 과잉처럼 느껴지는 더 긴 예가 있습니다. 꼭 보고 싶으시다면 스크린샷을 찍어서 첨부해두었습니다. 현재 페이지(p1, p2 및 p3)는 이제 다음을 가리킵니다.www.google.com.p1,p2, 그리고p3.

긴 예제를 보여주는 대신 일련의 명령만 보여 드리겠습니다. 실제 로그의 경우 tmux새 세션, 창 또는 창에 들어간 후 몇 가지 명령을 실행하고 몇 가지 설명을 작성했습니다. 마지막으로 생성된 파일을 보여드리겠습니다.

내 시스템에 대해 더 자세히 설명해야 합니다. PuTTY를 통해 RHEL8 시스템에 대한 SSH 연결을 설정하여 기본 터미널을 제공했습니다. 거기서부터 나는 달려간다

$ tmux new -s mysession1

(이렇게 하면 세션: mysession1; 창: 1; 및 창: 이 열립니다 1. 로그 파일도 시작됩니다 mysession1-1-1.log.)

주석을 달고 [Prefix]+ 를 누른 후의 터미널 모습은 다음과 같습니다 [w].tmux

┌──────────────────────────────────────────────────────────────────────────────┐
│(0)  - mysession1: 1 windows (attached)                                       │
│(1)  └─> 1 bash* (1 panes) "bbd025@MACHINE: /home/bbd025"                     ┆
│┌ 1 (sort: index)────────────────────────────────────────────────────────────┐┆
││ bbd025@MACHINE:~                                                           ││
││ $ # I'm in tmux, and it looks like it's logging!                           ││
││ bbd025@MACHINE:~                                                           ││
││ $ # I'll press [Prefix]+[w] to see session info & then [ENTER] to get back ││
││ bbd025@MACHINE:~                                                           ││
││                                 ┌───┐                                      ││
││                                 │ 1 │                                      ││
││                                 └───┘                                      ││
│└────────────────────────────────────────────────────────────────────────────┘│
│[mysession1:bash*                  "bbd025@MACHINE: /home/bbd" HH:MM dd-mmm-yy│
└──────────────────────────────────────────────────────────────────────────────┘

[Prefix]+ w위에 보이는 것을 불러보세요. 세션으로 돌아가려면 해당 세션이 강조 표시되어 있는지 확인하고(이 세션은 유일한 세션이므로 아무것도 수행할 필요가 없습니다q) 를 누릅니다 ENTER.

세션을 분리하고 시작하겠습니다 mysession2. 죄송합니다. 명령줄을 엉망으로 만들었지만 로그 파일의 크기가 정확하길 원합니다.

$ tmux detach-client -s mysession1

이제 우리는 non-tmux 쉘로 돌아왔습니다. 다른 코드 블록을 보여주더라도 동일한 터미널 위치에 있으면서 터미널에 있는 코드를 대체합니다.

$ tmux new -s mysession2

tmux나타나는 터미널에는 로그 파일이 있습니다.mysession2-1-1.log

이때 [Prefix]+를 사용하면 w팝업창이 뜹니다.

(0)  - mysession1: 1 windows
(1)  └─> 1: bash* (1 panes) "bbd025@MACHINE: /home/bbd025"
(2)  - mysession2: 1 windows (attached)
(3)  └─> 1: bash* (1 panes) "bbd025@MACHINE: /home/bbd025"
$ tmux detach-client -s mysession2

kill 을 할 수 있는 비tmux 쉘로 돌아가자 mysession2.

$ tmux kill-session -t mysession2

다른 창을 열고 mysession1두 번째 창 내에서 별도의 창을 열어서 로그가 어떻게 끝나는지 살펴보겠습니다. tmux가 아닌 터미널에서 시작하십시오.

tmux attach -t mysession1

원래 창에 입력한 모든 내용이 표시됩니다 tmux new -s mysession1.

$ tmux new-window -n second_window

tmux bash새로운 빈 터미널이 나타납니다. 로그 파일이 있을 것입니다 mysession1-2-1.log.

$ tmux ls
mysession1: 2 windows (Created Mon Feb  28 12:02:06 2022) [80x29] (attached)
$ # I press [Prefix]+[n] to get to the next `tmux` window, i.e. the one with
$ #+ logfile, `mysession1-1-1.log`
$ tmux split-window -v # This is the same as [Prefix]+[%]

이제 두 개의 터미널이 대시선으로 구분되어 있습니다. 하나는 다른 하나 위에 있습니다. 하단 터미널에 로그 파일이 있습니다mysession1.1.2

$ tmux display-panes
$ # You'll have seen numbers on each pane. The bottom one should have
$ #+ shown '2'. If you want to make sure you are typing in pane 2, do
$ tmux select-pane -t 2
$ # You could also have done [Prefix]+[q]+[2]

창 2에서는 이름이 없는 새 창을 엽니다.

$ tmux new -w

이제 로그 파일이 있는 tmux 터미널에 있습니다 0-1-1.

이제 그 후에 tmux kill-server로그 파일을 최종적으로 확인해 보겠습니다.

# In T0
$ ls -Ss1pq --block-size=1
total 28672
12288 mysession1-1-1.log
 4096 0-1-1.log
 4096 mysession1-1-2.log
 4096 mysession2-1-1.log
 4096 mysession1-2-1.log
$ ls -lAh
total 28K
-rw-r--r--. 1 bbd025 bbd025 1.3K Mar  8 12:03 0-1-1.log
-rw-r--r--. 1 bbd025 bbd025 8.5K Mar  8 11:49 mysession1-1-1.log
-rw-r--r--. 1 bbd025 bbd025  767 Mar  8 11:49 mysession1-1-2.log
-rw-r--r--. 1 bbd025 bbd025  648 Mar  8 11:49 mysession1-2-1.log
-rw-r--r--. 1 bbd025 bbd025  725 Mar  7 17:41 mysession2-1-1.log

노트:

[1] 새로운 filename_suffix변수는 업데이트 후에도 유지되지 않을 수 있습니다 tmux. 변경 사항을 기억하고 액세스할 수 있도록 (OP의 경우) 다음을 내 항목에 추가합니다.~/.bash_profile

export MY_TMUX_FNAME_SUFFIX_LINE='filename_suffix="#{session_name}-#{window_index}-#{pane_index}.log"'

내 경우에는 다음을 추가하겠습니다. 작업을 더 쉽게 하기 위해 줄당 80자 규칙을 건너뛰었습니다.

export MY_TMUX_FNAME_SUFFIX_LINE='filename_suffix="bbd025-%s-#{session_name}-#{window_index}-#{pane_index}-%Y%m%dT%H%M%S%z.log"'

이제 기본적으로 환경 변수가 표시됩니다.

echo $MY_TMUX_FNAME_SUFFIX_LINE

향후 업데이트 후에 다시 확인하여 tmux로그 파일 이름에 대한 개인 설정을 유지하는 방법을 알 수 있습니다.

관련 정보