tmux 대 화면


262

GNU Screen을 다시 사용 하려고하지만 사람들이 때때로 tmux 를 더 나은 대안으로 언급하고 있다고 들었습니다 . 다른 창에서의 활동 모니터링 등과 같이 화면이 제공 하는 모든 기능에 대한 대안을 실제로 제공합니까 ? 각각의 장단점은 무엇입니까?



2
화면 screen -S automate_me -X stuff 'command'$(echo -ne '\015')에서 tmux 를 통해 할 수없는 명령을 첨부 된 세션으로 보낼 수 있습니다. virtualbox ISO / 이미지를 테스트하고 일부 명령을 원격으로 빠르게 수행해야하는 경우 매우 유용합니다. 예를 들어 Vim 명령에 Virtualbox 화면에서 스크립트를 빠르게 디버깅 할 수 있습니다. 이전 버전의 tmux에서 화면이 더 많은 텍스트를 빠르게 처리하는 반면 tmux는 충돌하는 것으로 나타났습니다. 또한 화면에는 UTF-8 등을 처리하기 위해 구성이 필요하지 않습니다. tmux는 수행합니다.
dezza

제대로 tmux처리 합니까 history?
beroe

답변:


170

내가 선호하는 (주) 이유의 일부 tmux이상 screen:

  • 상태 표시 줄은 사용하기가 훨씬 쉽습니다. 현재 창, 활동이있는 창 등에 대해 다른 텍스트 / 스타일을 쉽게 설정할 수 있으며 지정된 간격 (기본값 15 초)으로 실행할 수있는 쉘 명령을 포함하여 상태 표시 줄의 왼쪽과 오른쪽에 항목을 넣을 수 있습니다.
  • 내부 tmux에서 실행할 수있는 거의 모든 명령 은로 쉘에서 실행할 수 있습니다 tmux command [args]. 이를 통해 스크립트 작성이 매우 쉬워지고 복잡한 명령을 쉽게 수행 할 수 있습니다.
  • 훨씬 정확한 자동 창 이름 변경. 동안은 screen명령의 첫 단어를 기반으로 제목을 설정하고, 쉘 창에서도 그렇게 쉘 구성이 필요합니다, tmux프로세스가 실제로 각 창에서 실행중인 추적하고 그에 따라 제목을 업데이트합니다. 이런 식으로 모든 쉘 및 제로 구성으로 동적 이름을 바꿀 수 있습니다. 예를 들어 : Z Shell을 실행하고 있다고 가정합니다. 창의 이름은 "zsh"입니다. 이제 구성 파일을 편집하고 싶다고 가정 해 봅시다 sudo emacs /etc/somefile. sudo가 암호를 요구하는 동안 창의 이름은 "sudo"가되지만 일단 입력하고 sudo시작 emacs하면 제목이 "emacs"가됩니다. 모두 끝나면 끝낼 때emacs제목이 "zsh"로 다시 변경됩니다. 이것은 창을 추적하는 데 매우 유용하며 때로는 다른 창에서 프로세스를 오래 실행하여 입력을 요구하는 경우와 같이 특정 상황에서 특히 유용 할 수 있습니다 dialog. 창 이름이 "dialog"로 바뀌면 해당 창으로 전환하여 무언가를해야한다는 것을 알게 될 것입니다.
  • 더 나은 세션 처리 (IMHO). tmux자체 세션으로 더 많은 것을 할 수 있습니다 . 쉽게 전환하고 이름을 바꿀 수 있으며 세션간에 창을 이동하고 공유 할 수 있습니다. 또한 각 모델마다 세션을 제어하고 클라이언트가 연결하는 서버가있는 다른 모델이 있습니다. 이것의 단점은 서버가 충돌하면 모든 것을 잃는다는 것입니다. 그래도 서버 충돌이 없었습니다.
  • tmux더 적극적으로 개발 된 것 같습니다. 업데이트가 자주 있으며이 FAQ에 따라 버그 보고서 또는 기능 요청을 제출 하고 며칠 내에 답변을받을 수 있습니다.

그것들은 즉시 떠오르는 주요한 것입니다. 다른 작은 것들도 있으며, 나는 내가 잊어 버린 것 같습니다. tmux그래도 시도해 볼 가치가 있습니다 .


151
tmux 개발은 새로운 기능 이므로 더욱 활발합니다 . GNU Screen은 거의 25 세 이므로 대부분의 버그를 수정했습니다.
유료 괴상한

8
유료 머저리의 의견은 마지막 요점의 매우 중요한 자격입니다. 언급 한 두 번째 요점은 더 구체적이지 않으면 화면에 적용되는 것과 실제로 차이가 없습니다.
jw013


11
@apaidnerd이 매우 풍부 문의 : savannah.gnu.org/bugs/...
투입 Blažej 미칼

93

( 세션 의 모음 분리하고 나중에 다시 연결 할 수 있습니다. Windows가 하나 이상 포함 할 수 있습니다 창을 . 예를 들어 CONFIGS를 들어, 체크 아웃 여기여기에 .)

tmux

  • 찬성
    • IDE와 같은 다른 창에 키를 보낼 수 있습니다
    • 쉬운 키 바인딩-올바른 구성으로 Vim 또는 Screen에서 집처럼 느낄 수 있습니다
    • Vim-ish 및 Emacs-ish 바인딩 내장
    • 바둑판 식 창 관리자와 비슷한 훌륭한 레이아웃 관리
    • 유니 코드는 최신 터미널에서 작동하는 것 같습니다
    • 로 해결 된 일부 터미널 문제 TERM=tmux
  • 단점
    • 느린 - 확실하지 왜,하지만 키는 랙이 보인다 느림에 더 이상 문제
    • 멀티플렉싱은 전체 세션 너비와 높이를 가장 작은 연결된 터미널로 강제합니다.
    • Mac OS X에서 여러 번 충돌하여 전체 세션이 손실 됨
    • 업그레이드 후 Linux에서 실패했으며 이전 세션에 다시 연결할 수 없었습니다.
    • 명령 키 입력이 가끔씩 누락 됨- ^A ^[복사 모드를 몇 번 시도 함
    • 다른 하나 개의 창에서 창을 이동할 수 없습니다 로 고정 join-pane명령
    • 터미널 너비 변경 후 (윈도우 크기 조정) 줄 바꾸기 (또는 "리플 로우"또는 "리랩") 없음

GNU 화면

  • 찬성
    • 매우 안정적 (v1.0은 1987 년에)
    • 로 해결 된 일부 터미널 문제 TERM=screen
    • 내장 된 이맥스 바인딩
    • 수평 패널을 쉽게 이동 및 제어
    • 멀티플렉싱 할 때 연결된 터미널은 창 크기를 조정할 수 있습니다
  • 단점
    • 패치가없는 수직 분할 없음 (우분투 제외)
    • 분리 할 때 분할 창 분할이 손실됩니다
    • 유니 코드를 작동시키기 위해서는 약간의 수정과 결정이 필요합니다
    • 미친 상태 라인 구성

지연 키 입력은 Esc 키를 누를 때만됩니까? tmux에는 xterm 시퀀스 또는 고독한 Esc를 입력하는지 기다리는 대기 시간이 있으며 vim과 결합하면 꽤 게으른 것처럼 보일 수 있습니다. 탈출 시간을 50과 같은 낮은 값으로 설정하십시오.
Eevee

^A ^[때로는 작동하지 않는다고 말하는 것도 재미 있습니다 . 화면과 같은 문제가 있지만 tmux는 절대 아닙니다! 그리고와 함께 창을 이동할 수 있다고 생각합니다 join-pane.
Eevee

화면에 훨씬 더 많은 메모리가 사용되어 단점으로 포함될 수 있습니다.
paradroid

6
음, tmux함께 짜증 vim(광산 즉,) 어떤 경우에는, 해결책은 지금 어디 게시되지 작동하고, 내 문제를 해결하는 시간을 보내는 사람도 할 수 없었다. <C-Left><C-Right>에서 사용할 수없는 경우 성가신 일 입니다 vim.
yo '

3
No vertical splits without patch (except on Ubuntu)나는 그것이 사실이라고 생각하지 않습니다. 나는 몇 년 동안 스크린을 사용해 왔으며 데비안과 페도라에서 가로 또는 세로로 분할되는 문제는 없었습니다. Termux를 사용하는 Android에서도 매력처럼 작동합니다.
Forivin

11

화면 전문가 : Linux 및 Solaris에서 즉시 사용할 수 있습니다. 플랫폼 간을 전환해야 할 때는 정신적 맥락 전환을하지 않는 것이 좋습니다.

모든 플랫폼에서 tmux를 컴파일 할 수 있다고 확신하지만 때로는 화면을 사용하기에 충분한 액세스 권한이 있지만 실제 시스템 관리자는 절대적으로 필요하지 않은 소프트웨어를 추가하고 싶지는 않습니다.


10

나는 약 2 일 동안 tmux를 사용 해 왔기 때문에 성가신 사용 사례에 부딪쳐서 열정적이지 않았습니다. 한 프로그램에서 다른 프로그램으로 전환하는 데 어려움을 겪으면서 몇 가지 긍정적 인 특징에 부딪 쳤지 만 화면으로 돌아 가지 않을 것이라고 믿는 기능은 복사-붙여 넣기 모드의 유틸리티입니다. 화면에서 복사 모드로 들어가거나 버퍼에서 다시 스크롤 한 다음 다른 창으로 이동할 수 없습니다. tmux에서는 버퍼를 다른 위치로 다시 스크롤하여 복사 모드에서 동시에 여러 개의 창을 가질 수 있습니다. 또한 여러 개의 복사 버퍼가 있습니다. 그리고 fFtT 커서 움직임을 얻기 위해 소스를 패치 할 필요가 없습니다.


8

내가 화면에서 쉽게 얻을 수없는 tmux에서 얻는 것은 다음과 같습니다.

  1. 세로 분할 창 분할
  2. 우리는 원격 및 로컬 페어링에 사용하는 멀티플렉싱.


이전 게시물에서 언급했듯이 화면에는 세로 분할 창이 있습니다 (우분투가없는 패치가 필요합니다). 또한 멀티플렉싱은 잘 작동하며 수년간 있습니다.
EntangledLoops

수직 분할은 screen2014 년에 출시 된 4.2 이후 메인 라인 에 있습니다. 많은 배포판은 매우 오래된 버전, 특히 Apple을 제공합니다.
Neal Fultz

2
두 지점이 모두 맞지 않습니다.
Forivin

2
2018 년 답변이 정확하지 않음
Alec Istomin

5

직렬 포트에 연결하기 위해 하이퍼 터미널에 해당 하는 경우를 제외하고 모든 사용 사례에서 GNU Screentmux 로 교체했습니다 . 아론 Toponce 그의 기사에서 언급 한 바와 같이 "GNU 화면으로 직렬 널 모뎀에 연결"TMUX 자주 묻는 질문 상태 :

화면에는 직렬 및 텔넷 지원 기능이 내장되어 있습니다. 이것은 부풀어 서 tmux에 추가되지 않을 것입니다.

내 전형적인 TMUX의 사용 - 케이스와 함께 다중 창 및 멀티 윈도우 개발 세션을 만드는 것입니다 tmuxinator . tmux 를 배우고 싶다면 Brian P. Hogan의 저서 tmux : Productive Mouse-Free Development를 얻는 것이 좋습니다 .


당신은 cu 다른 시스템을 호출 알고 있습니까? 화면 보다 단순한 직렬 tty 이지만 가볍고 유용합니다!
F. Hauri

2

저는 오랫동안 Screen을 많이 사용했지만 2002 년에 다시 수정 한 버전을 사용합니다. 주로 "다음 / 이전"탐색 순서를 새 순서와 일치 시키려고했기 때문에 창은 i3 또는 Ion 과 같은 타일링 창 관리자와 유사하게 작성되었습니다 . 표준 화면 동작은 '다음'과 '이전'이 창 번호로 이동하는 것이므로 일반적으로 '새'창 (사용 가능한 가장 작은 수를 잡음)은 '다음'창 이외의 위치에 있습니다. 숫자를 기억하지 마십시오. 내가 선호하는 동작은 2010 년에 새 창 명령에 대한 플래그2012 년에 renumber-windows 옵션으로 Tmux에서 구현되었습니다.. 설명서 추가 등을 포함하여 가능한 한 허용하려고하는 내 화면 패치는 2002 년 7 월 화면 목록에 대한 토론을 생성하지 않았습니다 ( "screen@informatik.uni-erlangen.de"는 보관소 찾기). 사실 1 년 후 다시 보냈 는데도 인정되지 않았습니다.

2002 년 이후로 나는 패치를 몇 번 "재기 반화하여"새로운 버전의 Screen에 적용했다. 그러나 4.3 버전 (2015)에 도달했을 때 나는 문서 사용이 화면의 사용 중 하나를 깨뜨린 즉, 'stuff'가 이제 환경 변수를 보간 하는 문서화되지 않은 변경을 발견했습니다 . 나는 그 기능이 필요하지 않았고 '물건'에 대한 논쟁을 쉽게 피할 수있는 방법을 알 수 없었기 때문에 (달러 기호가 포함 된 텍스트를 보낼 수 있도록) 2004 년부터 4.0 버전을 계속 사용했습니다.

현재 Emacs 영역의 내용을 특정 창 번호로 보내는 Emacs 기능에서 Screen의 'stuff'(Tmux의 'send-keys')를 사용합니다. 그렇게하면 스크립트 언어로 코드를 작성할 때 인터프리터를 열고 인터프리터 창에 특수 번호를 부여 한 다음이 Emacs 바인딩을 사용하여 편집기 창에서 인터프리터 창으로 직접 코드 줄을 보낼 수 있습니다. 해 키지 만 표준 키 입력을 사용하여 화면 창에서 인터프리터와 상호 작용할 수 있기 때문에 순수한 Emacs 솔루션 보다 낫습니다 . GUI IDE와 비슷하지만 마우스를 사용하거나 깜박이는 커서를 쳐다볼 필요는 없습니다.

패치에서 구현 한 또 다른 기능은 창을 "표시"하고 표시된 창을 현재 창 다음에 "다음"으로 위치를 바꾸는 기능입니다. 나에게 이것은 번호를 다시 매기는 것보다 훨씬 더 자연스럽게 창을 재정렬하는 방법입니다. 복사 / 붙여 넣기 패러다임 또는 "끌어다 놓기"와 같습니다. ( 최근에 i3 에서도이 작업을 수행하는 방법을 알아 냈습니다 .)

Tmux에서 동일한 작업을 수행 할 수 있어야합니다. 예를 들어 2015 년과 같이 창을 "표시"하는 기능이 있습니다. 또는 상태 기반 쉘 스크립트로보다 기본적인 솔루션을 해결할 수 있습니다. "표시된 창"방법을 시도하기 위해 짧은 스크립트와 키 바인딩을 구현했으며 몇 번 작동했지만 Tmux가 "[lost server]"와 충돌했습니다. 그런 다음 복잡한 작업을 수행하지 않아도 Tmux가 충돌하는 것을 발견했습니다. 분명히 그것은 일부 사용자 충돌되었습니다 위한 최소한 몇 년 . 때때로 서버가 충돌하고 때로는 CPU의 100 %를 사용하기 시작하고 응답하지 않게됩니다. Screen이 이들 중 하나를 수행하는 것을 본 적이 없습니다.

이론적으로 Tmux는 여러 가지면에서 Screen보다 우수합니다. 스크립트 기능이 훨씬 뛰어나므로 현재 세션의 창 목록을 명령 줄에서 쿼리하는 것과 같은 작업을 수행 할 수 있습니다. 스크린에서는 불가능합니다. 예를 들어 2015 년 화면 에는 "제목별로 창 정렬"명령이 추가되었습니다 . 이러한 특수 명령이 언제 유용한 지 잘 모르겠지만, 이것과보다 실용적인 변형 (예 : CPU 사용에 따른 정렬 창)은 Tmux의 쉘 스크립트에서 비교적 쉽게 수행 할 수 있습니다. 나에게는 적어도 C 코드를 수정하지 않고 Screen에서 창의적인 작업을 수행하는 것이 어려워 보일 것입니다.

다른 포스터에서 언급했듯이 Tmux에는 단일 서버 모델이 있는데 특히 서버가 충돌하는 경우 주요 단점으로 간주됩니다. 각 "세션"에 대해 별도의 소켓을 지정하여이 문제를 해결할 수 있습니다. 여전히 Screen의 세션 당 서버 기본값을 선호합니다.

2002 년에 스크린 코드 작업은 교육적이고 즐거웠습니다. 이상하게도, 모든 추가 기능에 대해 Tmux는 Screen (30k 대 40k)보다 약 25 % 적은 코드 라인을 가지고 있습니다. Tmux는 많은 트리 및 목록 데이터 구조를 사용한다는 것을 알았습니다. 화면이 배열을 선호하는 것 같습니다.

알다시피, Unix 터미널 인터페이스는 매우 안정적이므로 기본 운영 체제의 변경 사항에 적응하기 위해 Screen 또는 Tmux 코드가 거의 필요하지 않습니다. 이러한 프로그램에는 실제로 웹 브라우저 나 웹 서버 또는 셸과 같은 보안 업데이트가 없습니다. 2004 년에 마지막으로 업데이트 된 사용자 정의 버전의 Screen을 실행하는 데 아무런 문제가 없었습니다 ( Systemd가 소켓을 삭제하지 못하도록 일부 구성 파일을 추가해야하는 경우 제외); 이러한 파일은 일반적으로 배포 패키지의 일부입니다). 아마도 충돌을 시작하기 전에 Tmux 버전을 실행하여 Tmux에서 발생한 문제를 해결할 수 있습니다. 물론 충분한 사용자가이 작업을하면 신규 사용자에게는 좋지 않을 것입니다. 왜냐하면이 프로그램의 최신 공식 버전에서 버그를 찾는 전문가는 더 적기 때문입니다. 그러나 불안정한 제품 (최신 Tmux) 또는 내가 원하는 특정 기능이없는 제품 (표준 화면)으로 전환하는 것은 동기 부여가 어렵습니다.

이것이 OP의 질문에 대한 쉬운 대답을 제공하지는 않지만 내 관점이 유용하기를 바랍니다.


2

tmux의 관리자 중 하나 인 Thomas Adam은 tmux 코드 만 다루지 만 프로젝트 의 관리자로 도 등재 되었습니다 screen. 이것은 화면에서 tmux의 거대한 프로입니다.


1

화면의 가용성은 장점이지만 창 시스템은 만큼 다루기가 쉽지 않습니다 . 나는 현재 대부분의 시간 동안 사용 하고 결과적으로 Screen 창 대신 많은 터미널 탭이 있다고 말해야합니다 .

@Jed Schneider : Ctrl+ A|수직 막대 분할을 얻을 수 있습니다 (수직 막대).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.