태그 보관물: tmux

tmux

바둑판 식 배열 창 관리자와 함께 사용하면 터미널 멀티플렉서에 어떤 이점이 있습니까? 기능을 제공합니다. 두 가지를

터미널 멀티플렉서 (screen, tmux)와 키보드 방식의 타일링 윈도우 관리자 (ratpoison, dwm, xmonad)는 비슷한 기능을 제공합니다. 두 가지를 동시에 사용하면 어떤 이점이 있습니까? 발생할 수있는 문제는 어떻습니까?



답변

dwm과 tmux를 사용합니다. tmux 사용법을 배우기 전에 여러 가지에 대해 여러 터미널을 열고 다른 태그로 만들었습니다. 이제 하나의 tmux 세션 내에서 단일 태그로 모든 것을 실행할 수 있으며 X를 다시 시작해야 할 경우 상태를 잃지 않고 분리하고 다시 연결할 수 있습니다.


답변

터미널 멀티플렉서의 또 다른 이점은 멀티플렉서 세션이 계속 활성 상태이고 X (데스크탑 세션)가 충돌하거나 X에서 로그 아웃 한 경우에도 다시 연결할 수 있다는 것입니다.


답변

타일링 창 관리자와 터미널 멀티플렉서를 모두 사용하십시오.

그들의 기능과 장점을 결합하여 더 나은 시너지를 얻으십시오. i3 설정에서 정기적으로 여러 터미널 을 동시에 표시 하지만 모두 동일한 tmux 세션에 연결되어 있으므로 모든 터미널에서 모든 tmux 창을 표시 할 수 있습니다 .

실제로, i3터미널 멀티플렉서의 창 분할 / 이동 기능을 두 세계를 최대한 활용하도록 (imho) 대체 / 확장 하기위한 타일링 기능을 사용합니다 .

아래 스크립트는 터미널 시작시 세션 / 탐지 연결 및 정리를 관리하는 데 사용됩니다.

#!/bin/bash
# This script attaches the terminal to a common session, where all
# terminals can show any window of the main tmux session independently
# This script also cleans up "old" sessions
# Todo: Cosmetic fix-ups. Make less verbose.

DEBUG="y"
showRun(){ echo Will run: $@;test -z $DEBUG||read -n1 -p"Press ENTER";$@; }

SNAME=${1:-XyZ}

if ! tmux has -t $SNAME; then
    echo -n "Session $SNAME not found, creating it: "
    showRun exec tmux new-session -s $SNAME;
else
    echo -n "Session $SNAME found: "
    MySESSION=$(tmux ls | grep -E "^$SNAME:.*\(attached\)$")
    echo $MySESSION;
    if [ -z "$MySESSION" ] ; then
        echo "Session $SNAME unattached, seizing it:"
        showRun exec tmux attach -t $SNAME \; new-window
    else
        echo "Session $SNAME already attached, finding grouped Sessions:"
        REGEX="group ([^)]*)"
        [[ $MySESSION =~ $REGEX ]]
        GNAME=${BASH_REMATCH[1]}
        GSESSIONS=$(tmux ls | grep "group $GNAME)" | grep -v $SNAME:)
        echo "$GSESSIONS"
        if [ -z "$GSESSIONS" ]; then
            echo "No sessions in group with $SNAME found, creating new one:"
            showRun exec tmux new-session -t $SNAME \; new-window
        else
            FGSESSIONS=$(echo "$GSESSIONS" | grep -v attached )
            if [ -z "$FGSESSIONS" ]; then
                echo "No free sessions in group $GNAME found, creating new one:"
                showRun exec tmux new-session -t $SNAME \; new-window
            else
                echo -e "Free grouped Sessions:\n $FGSESSIONS";
                if echo "$FGSESSIONS" | tail -n +2 | grep . > /dev/null; then
                    echo "Several detached Sessions found, cleaning up:"
                    echo "$FGSESSIONS" | while read SID x ; do
                        if [ -z $KEEPSID ]; then
                            KEEPSID=${SID%:*};
                            echo "Keeping session $KEEPSID for takeover after cleanup"
                        else
                            echo "Cleaning up old detached session $SID"
                            tmux kill-session -t ${SID%:}
                        fi;
                    done
                    KEEPSID=$(tmux ls|grep "group $GNAME)" | grep -v attached);
                    KEEPSID=${KEEPSID%: *}
                    echo "Attaching to session $KEEPSID:"
                    showRun exec tmux attach -t $KEEPSID \; new-window
                else
                    echo "Free session ( ${FGSESSIONS%: *} ) found, seizing it:"
                    showRun exec tmux attach -t ${FGSESSIONS%: *} \; new-window
                fi ;
            fi ;
        fi ;
    fi ;
fi

답변

아니요. 화면 내부의 화면 또는 tmux 내부의 tmux가 유용한 드문 경우에 두 프로그램 모두 중첩 된 인스턴스에 제어를 전달하는 간단한 수단을 제공합니다.

화면은 직렬 콘솔 기능을 제공하지만 필요할 때 전용 앱 (python과 함께 배포 된 miniterm.py)을 사용합니다. 그렇지 않으면 나는 할 수 있고 다른 것은 할 수없는 손해를 생각할 수 없지만, 하나는 다른 것보다 간단 할 수 있습니다.

나는 하나 또는 다른 것을 배우고, 당신이 선택한 것에 대해 호기심이 있거나 불만족한다면, 다른 것을 시도하십시오. 개인적으로 tmux를 선호합니다.


답변

이 시나리오에서 터미널 멀티플렉서의 또 다른 유용한 측면은 원격 서버에 연결 한 후입니다. 내가 찾은 일반적인 사용 사례는

  1. 로컬 PC에서 터미널 창을 엽니 다.
  2. 원격 서버로 ssh.
  3. tmux / screen은 이제 원격 서버에서 멀티플렉싱을 제공하여 원격 서버에서 새로운 터미널 / 쉘을 쉽게 열 수 있습니다. 로컬 PC에서 두 번째 터미널을 열고 두 번째 ssh와 다시 연결하는 것과 비교할 때, 이것은 한 단계 적습니다.

답변