Jekyll Usages

jekyll 기본 사용

  • 지킬 사이트의 테마 이용
  • 전역 설정
  • 글쓰기
  • 사이트 변환

New site

new 명령을 jekyll의 gem-based themes 를 사용하게 구성해 준다.
혹은 빈 폴더에서 새롭게 구성할 수 있다.

jekyll new

jekyll new로 생성되는 사이트는 gem-based theme를 사용한 jekyll project bootstrapped 로 생성된다.

jekyll new SITE_NAME 으로 생성

1
$ jekyll new myblog

아래 같은 템플릿 파일로 구성되다.

1
2
3
4
5
6
7
Gemfile
Gemfile.lock
_config.yml
_posts/
_site/
about.md
index.md

중요한 구성 파일은,

파일 설명
_config.yml 설정 파일
_drafts 발행하지 않은 준비중인 포스트.
_includes 재사용 가능한 조각 파일로, _post, _layouts에서 사용
_layouts 포스팅 글의 배치를 할 수 있다.

빈 사이트 만들기

1
$ jekyll new myblog --blank

디렉토리 구조만 생성된다.

1
2
3
4
_draft/
_layout/
_posts/
index.html

_config.yml

1
2
3
4
markdown: kramdown
highlighter: pygments
permalink: pretty
relative_permalinks: false

Jekyll 실행 환경을 지정할 수 있다. 예를 들어 디버깅, 개발, 운영 환경으로 구분한다면 코드에 다음 같이 넣을 수 있다:

1
2
3
{% if jekyll.environment == "production" %}
{% include disqus_comments.html %}
{% endif %}

jekyll을 실행시 JEKYLL_ENV에 값을 지정해 줄 수 있다. 기본 값은 development 이다.

1
2
$ JEKYLL_ENV=production bundle exec jekyll build
$ JEKYLL_ENV=production jekyll build

지킬의 포스트 등에서 사용하는 변수는 https://jekyllrb.com/docs/variables/ 에서 확인할 수 있다.

github 지원 config items

아래는 GitHub에서 기본으로 제공하는 설정으로 사용자가 원하는 대로 변경이 가능한 설정.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
github: [metadata]
kramdown:
input: GFM
hard_wrap: false
gems:
- jekyll-coffeescript
- jekyll-paginate

lsi: false
safe: true
source: [your repo's top level directory]
incremental: false
highlighter: rouge
gist:
noscript: false
  • lsi : 관련 포스트글에 대한 인덱스를 생성.
  • safe : 사용자 플러그인을 비활성화 하고, 심볼릭 링크(symbolic links)를 무시.
  • source : Jekyll이 읽을 파일의 위치를 변경.
  • incremental : 수정 변경한 포스트만 다시 빌드하는 옵션.
  • highlighter : rough highlighter 지정
  • gist : GitHub gist 사용 설정.

post

포스트는 _posts 폴더에 저장한다. yyyy-mm-dd-파일명.markup( md 또는 markdown 또는 textile) 형식으로 포스트 파일명을 만들어야 한다.

파일 내용은 다음 같이 구성된다.

Front matter
BODY

Front matter 는 다음 같이 구성되고, Front Matter, **머리말**를 참조한다.

YAML 머리말 블록을 가진 모든 파일을 특별한 파일로 인식하여 처리하고, 머리말은 반드시 올바른 YAML 형식으로 작성되어야 하며, 대시문자 3개(—)로 감싸서 파일의 맨 첫 부분과 끝 부분에 위치한다.

BODY 내용은 마크다운, 기타 문법 형식으로 작성하면 된다.

[]다른 포맷 지원](http://jekyllrb-ko.github.io/docs/plugins/#converters-1)

Front Matter 머릿말

세 개의 대쉬 라인(—) 사이에 메타 정보를 넣는다.

1
2
3
4
5
6
---
layout: post
title: "Welcome to Jekyll!"
date: 2017-05-03 18:53:47 +0900
categories: jekyll update
---
  • 빈 메타 정보는 빈 두개의 — 로 둔다.

Front matter 에 사용할 수 있는 내장된 변수는 다음 같다:

변수 설명
layout 사용할 레이아웃 파일을 지정한다. 레이아웃 파일명에서 확장자를 제외한 나머지 부분만 입력한다. 레이아웃 파일은 반드시 _layouts 디렉토리에 존재해야 한다.
permalink 생성된 블로그 포스트 URL 을 사이트 전역 스타일 (디폴트 설정: /year/month/day/title.html)이 아닌 다른 스타일로 만드려면, 이 변수를 사용하여 최종 URL 을 설정하면 된다.
published 사이트가 생성되었을 때 특정 포스트가 나타나지 않게 하려면 false 로 설정하라.
category,categories 포스트를 특정 폴더에 넣지 않고, 포스트가 속해야 하는 카테고리를 하나 또는 그 이상 지정할 수 있다. 사이트가 생성될 때, 포스트는 그냥 평범하게 이 카테고리들에 속한 것처럼 동작한다. 두 개 이상의 카테고리들을 지정할 때에는 YAML 리스트 또는 쉼표로 구분된 문자열을 사용한다.
tags 카테고리와 유사하게, 하나 이상의 태그를 포스트에 추가할 수 있다. 또 카테고리와 동일하게, YAML 리스트 또는 쉼표로 구분된 문자열로 지정할 수도 있다.

외부 자원

이미지, 다운로드 파일 등을 사용할 때는 루트 디렉토리의 images, assets, downloads 라는 디렉토리를 만들고 그곳에 둔다. 그리고 해당 자원의 참조를 / 경로를 기준으로 삼으면 된다.

1
![친절한 스크린샷](/screenshot.jpg)

site.url 변수

1
![친절한 스크린샷]({{ site.url }}/assets/screenshot.jpg)
1
 PDF  직접 [다운로드]({{ site.url }}/assets/mydoc.pdf)할  있습니다.

Build

실제 웹 사이트에는 html 파일로 제공되야 한다. 그러기 위해서 serve 혹은 build 명령으로 마크다운 파일을 변환해야 한다.

jekyll serve 명령은 지킬 사이트 디렉터리 안으로 접근하여 실행해야 한다.

serve 명령으로 빌드한 html과 파일은 _site 폴더에 생성된다.



### Theme

Jekyll은 기본 테마로 Minima라 불리는 gem-based theme를 사용한다. 이 테마를 구성하는 파일은 jekyll new 명령으로 위치에 다음 같이 구성된다.

Minima 테마는 assets, _layouts, _includes, and _sass 디렉토리를 실제 Minima theme gem 디렉토리에 위치하고 있고 아래 같은 구성으로 사이트가 생성된다.

1
2
3
4
5
6
7
├── Gemfile
├── Gemfile.lock
├── _config.yml
├── _posts
│ └── 2016-12-04-welcome-to-jekyll.markdown
├── about.md
└── index.md

다른 Theme gem을 사용하려면 bundle update를 실행하거나 bundle update <THEME> 로 사용할 를 지정한다.

jekyll은 사이트 접근시 처음에 컨텐츠를 아래 폴더 안에서 찾는다.

  • /assets
  • /_layouts
  • /_includes
  • /_sass

예를 들어 post 레이아웃을 사용하고 있다면 _layouts 폴더에 _layouts/page.html 테마 파일을 생성해 변경할 수 있다. 처음부터 생성하는 것 보다 기본 테마 파일을 이용하는 것이 빠르다.


#### 기본테마 Manima

Minima 테마의 기본 폴더는 bundle show minima 명령으로 확인이 가능하다. 기본테마 디렉토리는 아래 같이 구성되어 있다. 테마 정의에 필요한 _includes/, _layouts/, _sass/, assets/ 폴더이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
├── _includes
├── disqus_comments.html
├── footer.html
├── google-analytics.html
├── head.html
├── header.html
├── icon-github.html
├── icon-github.svg
├── icon-twitter.html
└── icon-twitter.svg
├── _layouts
├── default.html
├── home.html
├── page.html
└── post.html
├── _sass
├── minima
├── _base.scss
├── _layout.scss
└── _syntax-highlighting.scss
└── minima.scss
└── assets
└── main.scss

기본 테마 재정의 하기

Jekyll theme는 기본 layouts, includes, stylesheets를 지정하는데, 이것을 사이트 콘텐트에 맞게 재정의할 수 있다.

Minima 테마의 기본 폴더는 bundle show minima 명령으로 확인이 가능하다. 그리고 아래 같이 찾아서 열어 볼 수 있다. 먼저 macOS 는

1
open $(bundle show minima)

Windows 에서는

1
explorer /usr/local/lib/ruby/gems/2.3.0/gems/minima-2.1.0

기본 테마 디렉토리 구조를 복사해 와서 작업하겠다.

1
2
$ cd `bundle show minima`
~minima-2.1.1$ cp -r _includes _layouts _sass assets ~/mysite/

각각의 테마 요소를 알아보자.

Layout

컨텐츠의 구성은 _layouts 폴더에 넣는다. 이렇게 구성해 보자

1
2
3
default.html|
├<-- post.html
├<-- page.html


### sass

_sass 디렉토리에 .sass 파일을 두면 sass 컴파일러가 컴파일 한다.

fonts

외부 폰트, ttf, otf 등의 폰트를 _assets/fonts 같은 폴더에 다운로드하고 css로 불러와 사용한다.

그리고 _sass/main.scss 등의 css 파일에 다음 같이 폰트를 선언한다.

1
2
3
4
5
6
7
8
9
@font-face {
font-family: "NotoSansCJKkr-Regular";
src: url("../_assets/fonts/NotoSansCJKkr-Regular.otf") format("opentype");
}
@font-face {
font-family: "NotoSansCJKkr-Bold";
src: url("../_assets/fonts/NotoSansCJKkr-Bold.otf") format("opentype");
font-style: bold;
}

그리고 html 혹은 css 에서 font-family 이름을 사용하면 된다.

1
2
3
4
h1,
h2 {
font-family: "NotoSansCJKkr-Bold";
}


### Disqus

disqus.com 에서 새 사이트를 구성하고, Jekyll 을 선택하면 Universal code 를 얻을 수 있다.


#### Disqus Universal Code 설치
  1. comments 변수

comments 변수를 YAML Front Matter에 추가하기 위해, Jekyll의 manima 테마에서 _layouts/post.html 에 변수를 추가해 준다.

1
2
3
4
---
layout: default
comments: true
---
  1. Universal code
`{% if page.comments %}` 와 `{% endif %}` 태그 사이에 Universal Embeded Code를 추가해 준다. manima 테마의 \_includes/disqus_comments.html 파일에 구성되어 있다. 코드에서production을 developement로 바꿔서 테스트 해보자.

댓글 수 표시

태그 전에 아래 스크립트를 원하는 위치에 둔다.
1
2
3
4
5
{% if page.comments %}
<!-- Disqus comment count -->
<script id="dsq-count-scr" src="//{{ site.disqus.shortname }}.disqus.com/count.js" async></script>
{% endif %}

href 속성에 #disqus_thread 를 추가하기 위해서, _layouts/post.html 템플릿에 다음을 추가한다.

1
2
3
4
5
6
{% if page.author %}
<span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">{{ page.author }}</span></span>
{% endif %}
{% if page.comments %}
<a href="{{ site.url }}{{ page.url }}#disqus_thread">Comments</a>
{% endif %}

이제 제목 밑에 disqus 링크가 표시된다.

{:width=”400”}

조건에 page.conmments 를 참조하면 post 에 comments: true 가 정의되면 되고, layout 전체를 담당하려면 아래 같은 layout.comments 를 비교한다:

1
2
3
{% if layout.comments %}
<a href="{{ site.url }}{{ page.url }}#disqus_thread">Comments</a>
{% endif %}


### Google Analytics

jekyll new 로 새 사이트를 설치하면 __includes/google-analytics.html 이 포함되어 있다. Google Analytics에서 Tracking ID를 발급받아 사용하면 된다.


#### Tracking ID

Google account가 있으면 손쉽게 만들수 있다.여기 에서 로그인해서 Admin > Property > Tracking Info > Tracking Code 에서 찾을 수 있다.

Tracking ID{:width=”400”}


#### 설정

파일 __includes/google-analytics.html 안의 {{ site.google_analytics }}에 Tracking ID가 치환 되는데, 이것은 _config.yml 파일 google_analytics: 항목에 본인의 Tracking ID를 입력한다.

1
2
# Google services
google_analytics: UA—XXXXXXXX-X

#### default.html

이 파일을 _includes/head.html 파일에는 production 모드에서 analytics가 적용이 된다.

1
2
3
{% if jekyll.environment == 'production' and site.google_analytics %}
{% include google-analytics.html %}
{% endif %}

운영모드인 production 은 github 에 업로드시 자동으로 적용된다. 만약 다른 사이트에 업로드하려면 빌드를 한다.
$ JEKYLL_ENV=production bundle exec jekyll build

Pagenation

지킬에서 jekyll-paginate gem 을 추가하면 페이지 구분을 추가할 수 있다.

https://jekyllrb.com/docs/pagination/

Gemfile과 _config.yml

Gemfile에 추가.

1
2
3
group :jekyll_plugins do
gem "jekyll-feed", "~> 0.6"
gem "jekyll-paginate"

config.yml에서 활성화:

1
2
3
4
5
6
7
8
gems:
- jekyll-feed
- jekyll-paginate

#페이지 활성화
paginate: 6


Custom Domain

github page를 github.io 서브도메인 대신 본인의 도메인에 등록하려면 두 가지를 한다:

  • 깃헙 페이지의 설정에서 custom domain 을 추가한다.
  • DNS에 CNAME을 등록한다.

Custom domain 추가

github 에서 github page 저장소의 Settings 에서 Custom Domain에 사용할 도메인 이름을 저장한다.

CNAME 등록

DNS에 CNAME 을 github의 USER_NAME.github.io 에 연결해 준다.
제대로 등록됐는지 dig 명령으로 확인한다.

1
2
3
4
5
$ dig docs.example.com +nostats +nocomments +nocmd
;docs.example.com. IN A
docs.example.com. 3592 IN CNAME YOUR-USERNAME.github.io.
YOUR-USERNAME.github.io. 43192 IN CNAME < GITHUB-PAGES-SERVER >.
< GITHUB-PAGES-SERVER >. 22 IN A 199.27.XX.XXX

참조: https://help.github.com/articles/setting-up-a-custom-subdomain/

Tmux Start

2017-07-10: tmux-continum 추가
{:.right-history}

Tmux는 terminal multiplexer로 서버에 여러 프로그램을 세션에 저장하고, 다른 작업 혹은 연결을 끊었다 다시 접속해서 세션을 열어 작업을 이어갈 수 있다.

[그림. Tmux 실행 모습 (tmux.github.io)]

설치

여기서는 tmux 2.x 이상을 사용한다.

  • Ubuntu 14.04, Raspbian Jessie, Armbian 등에서 tmux가 1.8, 1.9 버전이 제공
  • Ubuntu 15, 16 Xenivior 버전은 Tmux 2.1
  • macOS는 brew 를 사용한다.

Tmux 2.3 설치

이전 Ubuntu 14.04, Raspbian 등에서 tmux가 1.8, 1.9 버전이 제공되는데 package manager 같은 기능을 사용할 수 없다. 소스로 빌드해서 사용할 수 있다.

Ubuntu 14.04 desktop, orangepi plus, raspberry pi jessie 초기 버전에서 빌드

소스 설치

혹시 모르니 기존 낮은 버전의 tmux를 삭제하고 시작해 보자.

1
$ sudo apt remove --purge tmux

소스를 https://github.com/tmux/tmux/releases/ 에서 최신 버전으로 다운로드 하고 빌드한다.

1
2
3
4
5
6
7
sudo apt update
sudo apt install -y libevent-dev libncurses-dev
wget https://github.com/tmux/tmux/releases/download/2.3/tmux-2.3.tar.gz
tar xvzf tmux-2.3.tar.gz
cd tmux-2.3/
./configure && make
sudo make install

deb 바이너리 설치

단, libtinfo5 6.x 설치시 의존성 라이브러리 문제로 패키지 삭제 문제 발생!!!

https://launchpad.net/ubuntu/yakkety/amd64/tmux/2.2-3 에 빌드되어 있는 바이너리를 Ubuntu 14.04 설치하기 위해서 다음 패키지 버전이 필요하다.

Depends on:

  • libc6 (>= 2.14)
  • libevent-2.0-5 (>= 2.0.10-stable)
  • libtinfo5 (>= 6)
  • libutempter0 (>= 1.1.5)

기본 설치후 업그레이드를 했다면 libc6 버전은 문제가 없는듯.

1
2
$ sudo apt-cache show libc6
$ sudo apt-cache show libtinfo5

Ubuntu14.04.4 LTS 버전의 libtinfo5는 5.9로 다음 같이 설치해 준다.

1
$ wget http://launchpadlibrarian.net/271601076/libtinfo5_6.0+20160625-1ubuntu1_amd64.deb

그리고 tmux 2.2 버전의 deb 를 다운로드한다.

1
$ wget http://launchpadlibrarian.net/263289132/tmux_2.2-3_amd64.deb

설치

1
2
$ sudo dpkb -i libtinfo5_6.0+20160625-1ubuntu1_amd64.deb
$ sudo dpkb -i tmux_2.2-3_amd64.deb

이제 tmux 명령으로 다중 터미널 명령을 사용할 수 있다.

macOS에서 tmux 설치

homebrew를 사용해서 tmux를 설치한다. 2017년 현재 2.4 버전이 설치된다.

1
$ brew install tmux

이제 tmux 명령으로 시작할 수 있다.

시작

tmux 를 시작하면 하나의 세션에 하나의 윈도우가 만들어 진다.

1
2
$ tmux                   # 세션을 시작하고 참가한다.
$ tmux new -s foo # 세션 foo를 시작하고 참가한다

세션에 참가하면 하나 혹은 그 이상의 윈도우에서 Pane을 배치해 사용할 수 있다.


[그림. Tmux window layout]

Control와 Meta key

Tmux 세션 참가후 Window에서는 Prefix key로 Session, Window, Pane 관련 명령을 키로 조합해 사용한다. 기본 Prefix key는 Control+b key고 옵션으로 사용하는 Meta key는 Alt 키 이다.

여기서 Prefix key는 C와 조합으로 표기하고, Meta key인 AltM으로 표기한다.

윈도우 명령 control, meta 키 조합과 병행해 윈도우에서 명령모드를 사용할 수 있다. 명령모드는 C-: 키로 시작하고, 명령모드에서 명령 자동 완성을 지원한다.


[그림. Window command mode]

Pane 다루기

윈도우는 수직/수평으로 구획을 나눌수 있다. C-“ 키로 현재 Pane 아래에 수평으로 새 Pane을 나눈다. 그리고 **C-%**키로 수직으로 새 Pane을 나눌 수 있다.


[그림. Tmux Window Pane]

  • C-q : pane 번호를 표시하고 번호를 눌러서 이동
  • C-o : pane을 순서대로 이동
  • C-방향키 : 해당 방향으로 이동
  • C-M-방향키 : 해당 방향으로 크기 조절
  • C-M-1~5 : 몇 가지 미리 설정된 레이아웃을 고를 수 있고, prefix space로 이 레이아웃을 순서대로 - 돌아가며 선택 가능
  • C-z : 특정화면만 확대하기 다시 예전 Panes상태로 돌아오기

Pane을 지우려면 터미널 exit 명령 혹은 C-x 키로 빠져 나올 수 있다.

Window 다루기

윈도우는 명령모드에서 new-window 혹은 C-c 키로 새 윈도우를 추가할 수 있다.


[그림. new Window ]

윈도우 사이의 이동은 윈도우 번호에 따라 단축키 C-0,1,2…9를 사용하거나 C-w로 윈도우 목록에서 선택해 이동할 수 있다.

  • C-n, C-p : 다음 윈도우, 이전 윈도우로 이동
  • C-l : 직전 사용하던 윈도우로 이동
  • C-w : 윈도우 리스트를 띄우고 선택
  • C-, : 윈도우 이름 바꾸기

세션 사용중에 세션을 빠져 나오려면 C-d 로 detach 하거나, 명령모드 C-:에서 detach 명령을 준다.

복사와 스크롤

Tmux 화면 버퍼는 한 화면분 밖에 안되서, 이전 화면 내용을 보려면 스크롤 기능을 켜야 한다. C+[ 키는 스크롤 키고, 우측상단에 페이지 표시가 나타난다. 키보드 방향키나 Page Up/Down키로 스크롤이 가능하다.

세션 연결

세션은 하나 혹은 그 이상 만들고 attach 명령으로 세션에 참가할 수 있다.

1
2
3
4
$ tmux new -s foo -d     # 세션 foo를 시작하고 빠져나온다.
$ tmux ls # 세션 목록을 출력한다.
0: 1 windows (created Fri May 12 10:26:00 2017) [80x24] (attached)
foo: 1 windows (created Fri May 12 10:34:18 2017) [80x24]

터미널에서 세션에 참가하려면 attach 명령과 대상 세션을 지정해 준다. 대상 세션은 tmux ls 명령에 표시되는 세션번호 혹은 세션이름을 지정한다.

1
2
3
$ tmux attach
$ tmux attach -t 0 # 세션 0번에 참여한다
$ tmux attach -t foo # 세션 foo에 참여한다.

세션을 완전히 종료 시키려면, tmux 세션에서 명령모드 C-: 에서 kill-session 명령을 실행한다.
혹은 다른 터미널에서 세션번호 혹은 세션 이름으로 종료한다.

1
$ tmux kill-session -t 3   # 세션번호 3을 종료한다.

설정파일 .tmux.conf

사용자 홈디렉토리에 .tmux.conf 파일에 tmux에 대한 설정을 명시할 수 있다.

Control + a 사용하기

Capslock키를 Control 키로 대체해 사용하면, Control+a 키 조합이 편하다. .tmux.conf 에 키 조합을 변경한다.

1
2
3
4
5
#Control+a에 'prefix' 연결
set -g prefix C-a
#send-prefix를 Control+a에 전달
bind C-a send-prefix
unbind C-b

위에서 prefix는 C-a 로 재배치된다.

Mouse On/Off

1
2
3
4
5
6
7
8
9
# Toggle mouse on with META m
bind m \
set-option -g mouse on \;\
display 'Mouse: ON'

# Toggle mouse off with META M
bind M \
set-option -g mouse off \;\
display 'Mouse: OFF'

Plugin manager

Tmux Pluin Manager 를 설치하고, tmux 기능을 확장할 수 있다.

tpm 설치

먼저 사용자 홈 디렉토리에 저장한다.

1
$ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

다음 설정을 tmux.conf 에 저장한다.

1
2
3
4
5
6
7
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'

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

plugin 관리

플러그인 설치를 위해서 C-I (대문자) 를 실행
플러그인 업그레이드를 위해서 C-U 를 실행

  • 플러그인 목록에서 플러그인을 선택하고 C-M-u (소문자)

Tmux-Resurrection

tmux-resurrect{:.keyword}는 tmux 세션을 백업/복구 할 수 있는 플러그인이다. tmux.conf에 다음을 추가

1
set -g @plugin 'tmux-plugins/tmux-resurrect'

플러그인 설치를 위해서 C-I 를 실행하면 설치를 시작한다.

Resurrection 플러그인으로 백업/복구하는 키는 다음 같이 지정되어 있다:

  • C-s : save
  • C-r : restore

Tmux-continuum

tmux-resurrect{:.keyword} 에서 저장한 환경을 자동으로 저장/복구할 수 있는 플러그인이다.

tmux-continuum{:.keyword} 의 주요 기능은:

  • tmux{:.keyword} 환경을 15분 마다 자동 저장
  • 컴퓨터/서버 시작시 tmux{:.keyword} 자동 시작
  • tmux{:.keyword} 시작시 자동 복구
  • tmux 1.9 이상, bash, tmux-resurrect plugin

설치

.tmux.conf 파일에 아래 플러그인을 추가:

1
2
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'

tmux 에서 플러그인 설치를 위해서 C-I (대문자) 를 실행

그리고 .tmux.conf 파일에 continuum-restore 을 on으로 해준다.

1
set -g @continuum-restore 'on'

tmux 세션을 모두 나와서 tmux 서버를 모두 kill-session 같은 명령으로 종료시킨후 tmux를 다시 시작하면 .tmux/resurrect 에 저장된 마지막 세션이 복구되는 것을 확인할 수 있다.

이제부터 15분 마다 자동 저장하고 서버를 재시작한 후에 tmux를 다시 시작하면 저장한 환경을 자동으로 복구해 준다.

tmux status 표시

tmux-continuum 의 상태를 tmux status line에 표시할 수 있다.

1
set -g status-right 'Continuum status: #{continuum_status}'

Linux에서 tmux 자동 시작

tmux-continuum 은 Linux systemd, macOS 에서 자동 시작을 지원한다.

Linux는 .tmux.conf 파일에 다음 부트 옵션을 추가한다.

1
set -g @continuum-boot 'on'

그리고 현재 실행중인 세션에 변경한 설정을 적용하려면

1
$ tmux source-file ~/.tmux.conf

macOS에서 tmux 자동 시작

.tmux.conf 파일에 다음 부트 옵션을 추가한다.

1
set -g @continuum-boot 'on'

그리고 현재 실행중인 세션에 변경한 설정을 적용한다.

1
$ tmux source-file ~/.tmux.conf

맥이 재시작 하면 자동으로 Terminal.app 이 실행된다. 터미널 크기는 다음 옵션으로 지정한다:

1
2
3
4
set -g @continuum-boot-options 'fullscreen' # terminal window will go fullscreen
set -g @continuum-boot-options 'iterm' # start iTerm instead of Terminal.app
set -g @continuum-boot-options 'iterm,fullscreen' # start iTerm in fullscreen

다중 tmux 서버는 지원하지 않는다.

tmux 로 서버를 하나 시작하고, tmux -S /tmp/foo 같이 다른 소켓을 사용했다고 자동 저장/복구가 별도로 진행되지 않는다. [^10]

여기까지 설정한 내용은 qkboo/tmux.conf gist 에서 확인 가능.


### 설정 저장

tmux 설정을 위힌 default 파일이 존재하지 않는다는 점이다. 그래서 tmux 기본 설정을 어딘가 추출해서 보관해두면 다시 돌아오는데 편리하다. 현재 tmux에 설정된 값은 다음 명령어로 추출할 수 있다.

1
$ tmux show -g | sed 's/^/set-option -g /' > ~/.tmux.current.conf

tmux.conf를 적용하는 명령은 source-file이다.

1
$ tmux source-file ~/.tmux.current.conf

Tmux 관련글

  1. Tmux 시작
  2. Tmux cheatsheet

참고

Odroid - Install Linux

2018-07-10: UART 정보 추가
2017-07-24: exFAT 추가
{:.right-history}

Odroid C2 - Install Armbian

{: width=”600”}

[그림. armv8 Odroid C2]
자세히 보기