터미널 멀티플렉서(screen, tmux)와 키보드 기반 타일링 창 관리자(ratpoison, dwm, xmonad)는 모두 비슷한 기능을 제공합니다. 둘 다 사용하면 어떤 이점이 있나요? 발생할 수 있는 문제에 대해 어떻게 해야 합니까?
답변1
터미널 멀티플렉서의 또 다른 이점은 멀티플렉서 세션이 유효하게 유지되며 X(데스크톱 세션)가 충돌하거나 X에서 로그아웃하더라도 다시 연결할 수 있다는 것입니다.
답변2
나는 dwm과 tmux를 사용합니다. tmux 사용법을 배우기 전에는 다양한 작업을 위해 여러 터미널을 열고 이를 다른 탭에 배치했습니다. 이제 단일 탭에서 tmux 세션 내의 모든 것을 실행할 수 있으며, X를 다시 시작해야 하는 경우 상태 손실 없이 분리했다가 다시 연결하면 됩니다.
답변3
타일링 창 관리자와 터미널 멀티플렉서를 모두 사용하십시오.
더 나은 시너지 효과를 얻기 위해 양 당사자의 역량과 장점을 결합하십시오. 내 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
답변4
습관. 화면 내의 화면이나 tmux 내의 tmux가 유용한 드문 경우에는 두 프로그램 모두 제어를 중첩된 인스턴스에 전달하는 쉬운 방법을 제공합니다.
Screen은 직렬 콘솔 기능을 제공하지만 필요할 때만 전용 애플리케이션(Python과 함께 배포되는 miniterm.py)을 사용합니다. 그렇지 않으면 한 사람은 할 수 있고 다른 사람은 할 수 없는 일을 즉시 생각할 수 없지만 한 사람이 다른 사람보다 더 간단할 수도 있습니다.
저는 그중 하나를 배우고, 선택한 내용이 궁금하거나 마음에 들지 않으면 다른 것을 시도해 보세요. 개인적으로 저는 tmux를 선호합니다.