이름             메인 페이지                 대상           설명          

Byobu

서버 접속하여 개발시

Screen과 같이 하나의 Terminal에서 여러개의 session 연결과 다양한 layout 지원

 

 
오늘 소개할 tool은 byobu라는 virtual console solution으로 여러 개의 terminal을 하나로 모아주는 역할을 한다. 보통 screen을 써보신 분들은 이해하기 쉬울텐데, screen의 대한으로는 tmux 와 byobu가 있을 같다.
개발된 순서는 screen >  tmux > byobu이렇게 되는데, screen의 단점을 tmux가 수정하였는데,  (https://www.wikivs.com/wiki/Screen_vs_tmux) byobu는 wrapper로 내부 로직으로 tmux나 screen모두를 지원하게 된다. 그러므로 실제 내부적으로는 screen 혹은 tmux를 사용하고 있는 인데, tmux가 최근에 byobu의 default engine으로 설정되어 있다.
From http://kmandla.wordpress.com/2010/01/03/byobu-a-shortcut-to-a-prettier-screen/

설치위치: https://launchpad.net/byobu 
Byobu는 default로 function key를 단축키로 mapping하여 지원하는데, 즉 F1~F12까지 ctrl, shift 조합으로 기능들을 사용할 있게 해놓았다. 그러나 이 key들은 위의 MC나 VIM등 여러 shortcut과 충돌이 나게 되어, screen이 default로 지원하는 Ctrl-a, ~ 로 시작하는 key로 변경하는게 여러모로 좋다. Ctrl-a key역시 emacs의 단축키와 충돌이 나는데, 이 경우 default key leader값을 Ctrl-` 등으로 변경하여 사용하면 된다.
 
Byobu는 Screen이나 Tmux의 wrapper지만, 여러 가지 편의 기능을 추가적으로 지원한다. Status bar와 menu를 통한 configuration등이 여기에 속하고 또한 wrapper로 key mapping이 자유로우니, Byobu를 사용할 것을 추천한다.
 
Program Basic Option
C-a @: byobu configuration

    1. 여기서 기본적으로 function key로 mapping이 되어 있는데, Ctrl+a(screen) key로 바꾸면 된다.
    2. Status bar의 UI 변경이 가능하다.

C-a ESC: scroll mode로 이전 history scroll가능(내부shell이 변경된 경우에는 마우스 스크롤로는 안됨)
C-a C: terminal buffer clear
C-a C-b: terminal에 break 보내기
C-a C-z: 현재 byobu를 bg로 보낸다. 그냥 C-z는 byobu안에서 현재 job를 bg로 보낸다.
C-a ?: 현재 key binding help를 보여준다.
 
Program Start options
byobu -r: 이전에 detach된 session list up해주고, pid를 보여주어 attach하도록 해준다
byobu -x:위의 명령으로 attach가 안될경우, 즉 정상적으로 detach가 되지 않은 process에 붙여준다.  
 
 
Program Running Options
시작 종료
C-a c: 새 만들기
C-a A: 창 이름 변경
C-a d: 현재 창 detach, 나중에 새로 시작 가능. Attach는 start할 지정
C-a <Escape>: 지금까지 출력된 msg로 cursor 이동가능
exit:  terminal 창에서 exit 명령으로 처리
C-a \: 현재 열린 모든 창과 shell을 닫는다.
 
이동
C-a C-a: 사용순으로 이전 창으로 이동
C-a p: 번호순으로 이전 창으로 이동
C-a p: 번호순으로 다음 창으로 이동
C-a <0-9>: 창 바로 가기 0~9번까지
C-a ": 창 list 보기
 
화면 분할
C-a S: 수평분할
C-a |: 수직분할
C-a tab: 분할된 다음 창으로 이동
C-a c: 분할된 창에서 신규 shell 시작
C-a n: 분할된 창에서 기존 shell로 이동
C-a X: 분할된 제거하기
C-a F: 분할된 크기 조절하기
 
 

그럼 한번 사용해 보자
마지막으로 가상 teminal을 사용해서 좋은 점을 나열해본다.
장점:

    1. 여러개의 terminal을 하나의 창으로 볼수가 있다.
    2. terminal을 가로/세로 등으로 하나의 화면에서 분활하여 보기가 가능하다.
    3. terminal을 종료한 나중에 connection을 연결하면 사용이 가능하다.(사실, 내부적으로 teminal은 계속 running 상태이므로 resource의 낭비가 있을수 있으니 막무가내 사용은 않좋다.)
    4. terminal에 명령을 내리고 퇴근해도 해당 process는 계속 작업을 한다.(nohup 명령을 써서 "nohup make -j4" 와 같이 주어도 비슷한 효과를 낼수 있으나, terminal에 찍힌 log가 아닌 text base의 log를 봐야 하며, 무엇보다도 multiple 명령(repo sync; cd; make)을 줄때 제대로 동작이 안된다. 

그럼 단점으로는 배워야 한다는 점이다.
 
p.s : 2013/12/27
byobu의 단축키를 Ctrl+a나 Ctrl+' 를 사용했었다. 그러나 계속 사용 하다보니 문제(다른 key와 겹침 및 key-push가 불편)가 있어 google 신에게 물어보니, 이미 미국형님들이 이러한 고민을 해왔던 것으로 보인다. 그러나 이번에 일본 오다쿠 형님이 알려주신 ctrl-l로 mapping을 해본다.
나머지는 Screen chapter에서 보자.