레이블이 Ubuntu인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Ubuntu인 게시물을 표시합니다. 모든 게시물 표시

install yarn in ubuntu

# ubuntu(Ubuntu 22.04.2 LTS) 에서 yarn 실행을 하면 다음과 같은 에러가 발생한다.
00h00m00s 0/0: : ERROR: There are no scenarios; must have at least one.

# yarn 명령어의 위치를 보면 기본 명령어 위치에 있다.
which yarn
/usr/bin/yarn

# ubuntu 의 기본적으로 설치된 yarn 으로 scenario testing 툴이다.

# cmdtest 패키지를 삭제해야 한다.
sudo apt remove --autoremove cmdtest

# 참고로 다음과 같이 별도로 autoremove 로 사용하지 않는 패키지들을 삭제해도 된다.
sudo apt remove cmdtest
sudo apt autoremove

# 이제 npm 을 먼저 설치
# 참고로 apt install yarn 로 설치하면 다시 scenario testing 툴이 설치되지 주의
sudo apt install npm

# npm 으로 yarn 설치
sudo npm install -g yarn

# yarn 확인
which yarn
/usr/local/bin/yarn

# yarn 버전 확인
yarn --version
1.22.1

#####

# yarn install 연결 에러 발생함
info There appears to be trouble with your network connection. Retrying..

# 혹시 프록시 설정문제인지 해서 지워봤지만 안됨
yarn config set proxy ''
yarn config set https-proxy ''

# verbose 로 보면 private registry를 사용하고 있었다.
yarn install --verbose
verbose 0.113484 Performing "GET" request to "https://npm.ysoftman.in/axios"

# registry 확인 
yarn config get registry

# registry 설정 지우면 된다.
yarn config set registry ''

github action ubuntu sh syntax error

# github action 중 다음 스크립트를 실행하는데
- name: build script
  run: |
    echo "execute script..."
    sh ysoftman.sh lemon

# ysoftman.sh 내용
if [[ ${1} == "lemon" ]]; then
    echo "ok"
else
    echo "no"
fi

# 원하는 결과가 나오지 않아 action 로그를 보니 다음과 같이 syntax 에러가 찍혀 있었다.
ysoftman.sh: 1: [[: not found

# 원인은 ubutun 위에서 action 이 실행되고 있었고,
# ubuntun 에서 sh -> /bin/dash 로 /bin/bash 문법과 호환되지 않아서다.
# 해결을 위해 /bin/bash 로 실행~
/bin/bash ysoftman.sh lemon

ubuntu apt 로 golang 1.13 설치

# apt 패키지로 golang 을 설치하면 1.10 이 최신이라고 나온다.
sudo apt install golang

# Ubuntu 16.04 LTS, 18.04 LTS or 19.04 에서는
# 다음 사설 패키지 저장소를 추가하면 최신 버전인 v1.13 을 설치 할 수 있다.
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt install golang

# ubuntu golang 설치 참고
https://github.com/golang/go/wiki/Ubuntu

kibana urlencoding string field 이슈

# 다음과 같은 es 환경을 사용중이다.
nginx packetbeat -> es -> kibana

# nginx로 들어오는 요청을 카운트하는 visualize (그래프)를 생성할때
http.request.params

# 로 스트링 형태의 파라미터 필드값을 사용하는데,
# 여기에 한글과 같은 non-ascii 의 경우 URL encoding 된 상태다.
# 문제는 막대그래프로 보면 레이블이 %x 와 같이 URL 인코딩된 상태로 보인다는 것이다.
# 필드값을 커스터마이징 하려고
kibana -> index patterns -> 아무 string 필드 -> type format -> string

# 에서 transform 을 보면 아래 사진과 같이 URL 인코딩 요소는 없다.


# 이런 이슈를 제기한 사람이 있었지만 아쉽게도 kibana 에선 공식 지원이 없다고 한다
https://discuss.elastic.co/t/how-to-use-url-decode-on-json-input/106626

# kibana plugin 를 만들던가 아니면 kibana 소스를 수정(contribute?)해야 한다.


#####


# kibana 소스 수정해서 실행하기
# 참고
https://github.com/creationix/nvm
https://github.com/elastic/kibana/blob/master/CONTRIBUTING.md

# 우선 ~/.nvm 디렉토리 생성후 nvm 설치해야 한다.
mkdir ~/.nvm
export NVM_DIR=~/.nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

# kibana 를 내 github 으로 fork 한다.
# fork 된 kibana 소스 다운로드
git clone https://github.com/ysoftman/kibana.git kibana
cd kibana

# 커밋시 사용할 사용자 정보 설정
git config user.email "ysoftman@gmail.com"
git config user.name "ysoftman"

# kibana 원저장소 upstream 으로 설정
git remote add upstream "https://github.com/elastic/kibana"

# upstream 최신 내용 가져오기
git fetch upstream

# master 내용 urldecode-transform 로 반영해서 충돌있으면 수정
git merge upstream/master

# 8.11.4 버전의 노드 사용(kibana 버전에 따라 달라질 수 있다)
nvm install 8.11.4 && nvm use 8.11.4
# kibana 8 의 경우
nvm install 10.15.2 && nvm use 10.15.2
# 10.15.2 를 디폴트로 설정(매번 nvm use 를 하지 않으려면)
nvm alias default 10.15.2

# nvm 버전 확인
nvm list

# kbn(kibana) bootstrap(kibana 실행에 필요한 의존성 패키지들 설치)
# kibana 업데이트로 소스 변경이 발생할때마다 설치해줘야 한다.
yarn kbn bootstrap

# 만약 ubuntu 에서 다음 에러 발생한다면
ERROR: [Errno 2] No such file or directory: 'kbn'

# yarn 최신 버전 설치한다.
# 참고 https://yarnpkg.com/en/docs/install#debian-stable
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn

# es(elasticsearch) 스냅샷(nightly 버전 다운받아 실행 한다.)
yarn es snapshot

# es 스냅샷은 최신버전만 제공하기 때문에 kibana 가 최신 업데이트 되지 않으면
# 예전 버전의 스냅샷 찾기 때문에 다음 에러가 발생한다.
Error: Unable to download elasticsearch snapshot: Not Found

# 만약 오랜 버전의 es 를 사용하려면 .tar 파일을 다운받아 archive 로 실행한다.
# 이 방법은 es 와 kibana 호환을 위해서 되도록이면 snapshot 을 사용하자.
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.0-linux-x86_64.tar.gz
yarn es archive ./elasticsearch-7.3.0-linux-x86_64.tar.gz

# (es가 실행중이기 때문에 별도의 쉘에서) kibana 실행
yarn install && yarn start

# kibana 접속
# url path 는 매번 시작시 랜덤하게 정해진다.
http://localhost:5603/kur

# kibana 디폴트 로그인
id : elastic
pw : changeme

# kibana 빌드
yarn build

# urldecode-transform 브랜치에서 수정 작업하기
git checkout -t origin/urldecode-transform


#####

# string 필드의 transform -> URL decode 추가 커밋 참고
https://github.com/elastic/kibana/pull/25694/commits/9b715d68d862bd095263188c3314416441ff0ef0

# 이제 kibana 웹페이지를 refresh 한다.
# kibana -> index patterns -> 수정할 스트링 필드 -> type format -> string 에 다음 그림처럼 url decode 항목이 적용된다.


# mocha 로 수정부분만 테스트
yarn test:mocha "src/**/field_formats/types/__tests__/**/string.js"

# pr 하면 kibana jenkins 에서 jest 를 수행하기 때문에
# jest snap 수정후
src/legacy/ui/public/field_editor/components/field_format_editor/editors/string/__snapshots__/string.test.js.snap

# jest 테스트가 필요하다.
yarn test:jest

# 최초 upstream 푸시
git push -u upstream

# github PR 요청
# kibana 7.5 버전에 포함될 예정이다~ㅋ
https://github.com/elastic/kibana/pull/25694

# 수정 커밋이 있을 경우
# ysoftman/kibana 의 urldecode-transform 브랜치로 push 하면 된다.

# 참고로 수정내용 배포는 yarn 빌드를 해야 하지만 yarn 빌드에 문제가 있는 경우
# 간단하게(사실 번들링 소스는 포맷팅도 안되고 파일 사이즈가 크다)
# kibana release .tar.gz 소스를 다운받아 압축을 해제 후
# kibana.bundle.js 에서 위 수정사항을 추가한다.
# 그리고 다음처럼 압축한다.
tar czf kibana-5.4.1-linux-x86_64-modified.tar.gz

golang xxx.a not a package file 에러

윈도우에서 cmd <-> bash(ubuntu) 에서 같은 GOPATH 를 공유하는데
ubuntu 환경에서 go build 시 다음과 같은 에러가 발생할때가 있다.

home/ysoftman/workspace/gopath/pkg/linux_amd64/github.com/mattn/go-runewidth.a: not a package file

이 경우 해당 .a 파일을 삭제 후 패키지를 다시 받아본다.

rm home/ysoftman/workspace/gopath/pkg/linux_amd64/github.com/mattn/go-runewidth.a
go get "github.com/mattn/go-runewidth"

centos7 docker 이미지 locale 설정 오류

# centos7 기본 도커 이미지를 받아 실행한다.
# .bashrc 파일에 다음과 같이 언어 설정을 하고 접속을 하게 되면
export LANG=ko_KR.utf8
export LC_ALL=ko_KR.utf8

# 다음과 같이 locale 을 설정할 수 없다는 에러가 발생하는 경우가 있다.
bash: warning: setlocale: LC_ALL: cannot change locale (ko_KR.utf8): No such file or directory

# 사용 가능한 모든 지역 언어(locale -a)설정 리스트를 확인해보면
# 지원되는 언어 3개 밖에 없다.
locale -a
C
POSIX
en_US.utf8

# 언어 패키지가 설치 안된것 같아 다음과 같이 설치해보았지만 설치자체가 안된다.
sudo yum groupinstall korean-support

# 이와 같은 이슈를 고민하는 사람들이 있다.
https://serverfault.com/questions/616790/how-to-add-language-support-on-centos-7-on-docker

# 도커 centos7 최근 이미지에서 영어, c, posix 를 제외한 로케일을 일부러 삭제한것으로 보인다.
# 우선 glibc 패키지를 재설치하라고 했지만 해결되지 않는다.
sudo yum reinstall -y glibc-common glibc

# 해결 방법
# (centos8의 경우) glibc-locale-source 설치
sudo yum install glibc-locale-source

# 이렇게 하면 /usr/lib/locale/locale-archive (locale 이 참고하는 파일)에 추가된다고 한다.
# -f UTF-8 :charmap 지정, /usr/share/i18n/charmaps/UTF-8.gz 심벌, 인코딩 정보
# -i ko_KR : sourcefile 지정, /usr/share/i18n/locales/ko_KR 언어 정의
# ko_KR.utf : 아카이브에 추가할 이름
sudo localedef -f UTF-8 -i ko_KR ko_KR.utf8

# 추가로  UTC 로 설정(링크)되어 있는 링크를 한국시간으로 변경해보자.
https://yoonbh2714.blogspot.kr/2017/11/centos-localtime.html
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# 참고
# centos7 기본이라 패키지가 설치된게 거의 없다.
# dockerfile 로 다음 패키지들은 설치하도록 한다.
# yum 으로 패키지 설치후 locale 이 변경될 수 있어 localedef 는 뒤에 실행 하자.
RUN yum install -y sudo tar git rsync gcc gcc-c++ net-tools which iproute man-pages man setuptool ncurses-devel python-devel libevent-expat-devel bzip2-devel
RUN yum groupinstall -y 'development tools'
RUN localedef -f UTF-8 -i ko_KR ko_KR.utf8 && ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# 추가로 
# ubuntu 에서 타임존 설정
RUN apt-get update && \
apt-get install -y rsync apt-utils && \
rm -f /etc/localtime && \
ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

# alpine 에서 타임존 설정
RUN apk --no-cache add tzdata && \
cp /usr/share/zoneinfo/Asia/Seoul /etc/localtime && \
echo "Asia/Seoul" > /etc/timezone

Ubuntu unexpected operator 쉘스크립트 에러

# Ubuntu(우분투)에서 쉘 스크립트(.sh)를 실행할때 다음과 같은 오류 메시가가 발생한다.
[: Linux: unexpected operator

# 쉘 스크립트를 실행할때 sh 명령을 사용하는데 보통은 bash 로 링크걸려 있다.
# 그런데 우분투의 경우는 sh -> dash 로 링크가 걸려 있다.
# 다음 명령으로 sh 의 링크 상태를 확인해보자!
ls -ahl /bin/sh

# 해결방법1
# bash 로 쉘 스크립트 실행
bash ysoftman.sh

# 해결방법2
# sh -> bash 로 링크하여 sh 로 실행
sudo unlink /bin/sh
sudo ln -s /bin/bash /bin/sh
sh ysoftman.sh

# dash shell 참고
https://ko.wikipedia.org/wiki/%EC%95%94%ED%82%A4%EC%8A%A4%ED%8A%B8_%EC%85%B8

Ubuntu finalterm 저장소 업데이트 에러

우분투 소프트웨어 업데이트시 다음과 같은 에러로 업데이트 실패하는 경우가 발생한다.

W:Failed to fetch http://ppa.launchpad.net/finalterm/daily/ubuntu/dists/trusty/main/binary-amd64/Packages  404  Not Found
, W:Failed to fetch http://ppa.launchpad.net/finalterm/daily/ubuntu/dists/trusty/main/binary-i386/Packages  404  Not Found
, E:Some index files failed to download. They have been ignored, or old ones used instead.

FinalTerm 설치를 위해 추가했던 ppa 가 문제였다.
(FinalTerm 설치 방법 https://github.com/p-e-w/finalterm)

실제 sudo apt-get update 를 해보면 URL 을 찾을 수 없어 실패한다.


해결방법 1
소프트웨어 업데이트 -> 기타 소프트웨어 -> http://ppa.launchpad.net/finalterm/daily/ubuntu/dists/trusty/main 항목 제거

해결방법 2
sudo add-apt-repository --remove ppa:finalterm/daily


# 참고 - best linux terminal emulators
https://lintut.com/best-terminal-emulators-for-linux/

리눅스에 라인, 카톡 설치하기

라인, 카톡은 현재 크게 모바일, PC(Windows), Mac 을 공식 지원한다.
리눅스용은 공식 지원되지 않아 리눅스에서 사용하려면 wine 환경에서 윈도우용을 프로그램을 설치해야 한다.
우선 wine 이 설치되어 있어야 한다.
이전에 정리해둔 포스트 참고(http://ysoftman.blogspot.kr/2014/04/linux-wine.html)

추가로 winetricks로 gdiplus dll 설치
winetricks gdiplus
이제 라인, 카톡 각각 윈도우 프로그램을 다운받는다
라인 다운로드http://line.me/ko/download
카톡 다운로드http://www.kakao.com/talk/ko
다운 라인 LineInst.exe(카톡의 경우 KakaoTalk_Setup.exe) 파일 실행(마우스 우 클릭 후 팝업 메뉴에서 Wine Windows Program Loader 로 열기 실행)


한글 입력에 문제가 있는 경우 아래 그림과 같이 ibus 환경에서 단어 단위 입력을 체크하여 적용해야 한다.


확인 결과 카톡은 문제 없지만 라인에서 한글이 제대로 입력되지 않음.

Linux gtk-update-icon-cache 크래시 오류 해결

우분투(기타 다른 리눅스에서도 해당) 로그인 후 다음과 같은 에러가 발생하는 경우가 있다.

"프로그램 gtk-update-icon-cache-3.0 이(가) 예상치 않게 끝났습니다."

gtk-update-icon-cache 는 아이콘 테마를 캐싱하는 유틸리티 프로그램이다.
해결을 위해선 다음과 같이 강제로 아이콘 캐시 파일을 새로 생성하도록 한다.

sudo gtk-update-icon-cache -f /usr/share/icons/


Linux 우분투 오른쪽 Alt 로 한영 전환 문제 해결하기

우분투에서 한/영 전환을 위해서 보통 오른쪽 alt 키(Alt_R)를 사용한다.
하지만 Alt_R 키를 누르면 메뉴 선택과 한/영 전환이 동시에 실행된다.
그래서 타자를 빠르게 치는 도중 한영 변환을 위해 Alt_R 를 눌렀을 경우
메뉴의 단축키가 선택되어 실행되곤 한다.
이같은 경우 xmodmap 을 통하여 해결할 수 있다.

[참고]
한영 전환 프로그램은 IBus 사용 -> http://code.google.com/p/ibus
ibus 기본 설정에서 키보드 바로가기 -> 사용하거나 사용하지 않기(한글 사용/미사용) -> Alt_R 적용한 상태

# 현재 수정자(modifier)키 매핑 상태를 보기
# alt 키 매핑은 mod1 로 관리된다.
xmodmap 

# Alt_R 키를 mod1 에서 제거
xmodmap -e 'remove mod1 = Alt_R'

# 현재 Alt_R 키가 매핑된 키코드 확인
xmodmap -pk | grep Alt_R

# 키코드 108 에 한글 키를 매핑
xmodmap -e 'keycode 108 = Hangul'

# 로그인할때 자동 설정하기 위해서
vi ~/.Xmodmap
remove mod1 = Alt_R
keycode 108 = Hangul

##########################################

# Ubuntu 13 이후 버전에선 xmodmap 설정이 효과가 없고 ibus 설정 사용
# ibus 설정 실행
ibus-setup

# ibus-setup 실행 후 고급 -> 전역 입력기 설정 -> 모든 응용 프로그램에서 동일한 입력기 공유 체크
# ibus-setup 실행 후 일반-> 속성 패널 보이기 -> 표시하지 않기 선택

# Alt_R 키 기능 제거
sudo vi /usr//share/X11/xkb/symbols/altwin
//symbols[Group1] = [ Alt_R, Meta_R ] }; 주석처리하고 아래와 같이 변경
symbols[Group1] = [ Hangul ] };

# /var/lib/xkb/* 파일 삭제
sudo rm -fv /var/lib/xkb/*

# 시스템 재시작
sudo reboot

# Alt_R 키를 한영키로 사용하려면
# 텍스트 입력창의 "다음 소스로 전환" 키설정에 Alt_R(Hangul) 키로 설정하면 되지만
# 수정자 키와 조합만 설정되도록 막혀 있어 dconf-editor 로 강제 설정
# dconf-editor 설치
sudo apt-get install dconf-editor

# dconf 실행
dconf-editor

# org-> gnome -> desktop -> wm -> keybindings -> switch-input-source -> ['Hangul'] 로 설정


Linux 터미널 멀티플렉서 Tmux

Tmux (terminal multiplexer)는 하나의 터미널을 다수의 pane(영역)으로 구분하여 프로그램을 실행하고 각 프로그램 사이를 쉽게 이동할 수 있는 툴이다. 보통을 screen 툴을 사용하거나 gui 환경에선 터미널을 여러개의 탭으 생성하여 사용하는데, 한화면에서 여러개의 프로그램으로 돌리며 모니터링할 수 있는데는 tmux 가 좋다.
공식 홈페이지 http://tmux.sourceforge.net/

# Ubuntu 에서 설치
sudo apt-get install tmux

# CentOS 에서 설치
sudo yum install tmux

# MacOS 에서 설치
brew install tmux


#####


# tmux 명령어/단축키
tmux -V # 버전, 버전에 따라 명령이 조금 달라질 수 있다.
tmux # 실행(새로운 세션으로 터미널 열림)
tmux new-session # 실행(새로운 세션으로 터미널 열림)
tmux list-commands # tmux 명령어 보기
tmux ls # 열려 있는 세션 리스트
tmux kill-server # 모든 세션(tabs,pane)종료
tmux list-windows # tab(window) 리스트
tmux list-panes # pane 리스트
tmux a # 세션 붙이기(attach)
ctrl+b d # 세션 떼기(detach)

ctrl+b c # 새 window(tab) 생성
ctrl+b w # tab 리스트 보기 및 선택
ctrl+b n # 다음 tab 이동
ctrl+b p # 이전 tab 이동
ctrl+b f # tab 찾기
ctrl+b 번호  # tab 로 이동
ctrl+b , # 현재 tab 이름 변경
ctrl+b & 또는 exit # 현재 tab 종료

ctrl+b % # 수직으로 pane 나누기
ctrl+b " # 수평으로 pane 나누기
ctrl+b q 번호선택 # pane 번호 보기 및 번호로 pane 선택
ctrl+b 방향키 # pane 이동(ctrl+b 후 방향키로 계속 이동 가능)
ctrl+b spacebar # pane 레이아웃 변경
ctrl+b alt+방향키 # pane 크기 변경
ctrl+b x 또는 exit # 현재 pane 종료

ctrl+b m 현재 pane mark/unmark
ctrl+b { 현재 선택한 pane 과 위쪽 pane 위치 교환
ctrl+b } 현재 선택한 pane 과 아래쪽 pane 위치 교환


ctrl+b : # 명령 프롬프트 사용
ctrl+b t # 현재 시간 보기
ctrl+b ? # 설정된 단축키 보기

# copy & paste
# setw -g mode-keys vi 로 vi 단축키를 활성화 선행
ctrl+b [ # copy mode 시작
spacebar # 블럭지정 시작, 방향키로 복사할 블럭 지정
enter # 복사
ctrl+b ] # 붙이기

# find
ctrl+b [ # copy mode 시작
/ # 찾을 문자 입력, vi 찾기와 같음

# 수직분할 후 수평분할된 3개의 pane 을 가진 세션 시작
tmux new-session \; \
split-window -v \; \
split-window -h \;
attach


#####


# tmux 시작시 로딩되는 설정파일
# 명령 프롬프트로에서도 사용
vi ~/.tmux.conf
# -g global option
set -g display-panes-time 5000 # 5초 동안 pane 숫자 보이기

# 마우스 사용 활성화
# tmux 1.9 이전
#set -g mode-mouse on
#set -g mouse-resize-pane on
#set -g mouse-select-pane on
#set -g mouse-select-window on
# tmux 1.9 이후
set -g mouse on

# setw -> set window
setw -g mode-keys vi # vi 단축키 사용(디폴트는 emacs)

#setw synchronize-pane on # 모든 panes 에 동시 입력 활성화
#setw synchronize-pane off # 모든 panes 에 동시 입력 해제

# ctrl+b i panes 동시 입력 활성화 단축키
# ctrl+b I panes 동시 입력 비활성화 단축키
bind i setw synchronize-panes on
bind I setw synchronize-panes off

# 기본 prefix(ctrl+b) 대신 ctrl+a 사용하기
#set -g prefix C-a
#bind C-a send-prefix
#unbind C-b


# 여러개의 pane 생성하고(tiled 레이아웃 사용) 각 pane 에 명령 실행하기
# 현재 창을 계속 split-window 하면 공간이 없다는 에러 발생하기 때문에
# select-pane 으로 활성 창을 옮겨가며 분할해야 한다.
unbind S
bind S \
split-window -v\; \
split-window -v\; \
split-window -v\; \
split-window -v\; \
select-pane -t 00\; \
split-window -h\; \
split-window -h\; \
split-window -h\; \
select-pane -t 04\; \
split-window -h\; \
split-window -h\; \
split-window -h\; \
select-pane -t 08\; \
split-window -h\; \
select-layout tiled\;

# 위에 생성한 창(pane)들의 쉘 프롬프트가 늦게 뜨면 send-key 전달이 되지 않아
# 창들의 쉘 프롬프트가 완료된 후 접속하는것이 좋다.
unbind s
bind s \
select-pane -t 00\; send-keys 'echo ysoftman0' Enter \; \
select-pane -t 01\; send-keys 'echo ysoftman1' Enter \; \
select-pane -t 02\; send-keys 'echo ysoftman2' Enter \; \
select-pane -t 03\; send-keys 'echo ysoftman3' Enter \; \
select-pane -t 04\; send-keys 'echo ysoftman4' Enter \; \
select-pane -t 05\; send-keys 'echo ysoftman5' Enter \; \
select-pane -t 06\; send-keys 'echo ysoftman6' Enter \; \
select-pane -t 07\; send-keys 'echo ysoftman7' Enter \; \
select-pane -t 08\; send-keys 'echo ysoftman8' Enter \; \
select-pane -t 09\; send-keys 'echo ysoftman9' Enter \; \
select-pane -t 10\; send-keys 'echo ysoftman10' Enter \; \
select-pane -t 11\; send-keys 'echo ysoftman11' Enter \;

# 별도 설정 파일 읽기
# source-file ~/workspace/a/a.conf;
# 별도 설정 파일이 존재하면 읽기
if-shell "test -f ~/workspace/a/a.conf" "source ~/workspace/a/a.conf"

# tmux 다시 읽기
# display-message (alias: display) 상태바에 메시지 출력  -p 사용하면 stdout에 출력
bind r source-file ~/.tmux.conf \; display "ysoftman ~/.tmux.conf loaded"

# 현재 바인딩되 있는 모든 단축키 확인
tmux list-keys


#####


iterm2 에서 tmux의 내용을 마우스 드래그해서 copy and paste 가 안될때는
iterm2 -> preferences -> gerneral -> applications in terminal my access clipboard 활성화 (아래 그림 참고)



#####


# .bashrc, .zshrc 에 설정시
# TMUX 변수 값을 확인해 중복 실행을 막는다.
if [ -z "$TMUX" ]; then exec tmux; fi

Linux 우분투에서 archey 실행하기

# Arch Linux 에서 사용 하는 Archey 라는 명령을 실행하면 콘솔상에 아치 로고와 함께 시스템의 정보를 표시한다.
# 데비안이나 우부투에서는 Archey 를 사용하기
# scrot, lsb-release 설치
sudo apt-get install scrot lsb-release

# 데비안 archey 패키지 다운로드(wget 안되면 브라우저에서 다운로드)
wget https://github.com/downloads/djmelik/archey/archey-0.2.8.deb

# 데비안 archey 패키지 설치
sudo dpkg -i archey-0.2.8.deb

# archey 실행
archey

Linux exFAT 파일시스템 사용하기

# 참고 http://code.google.com/p/exfat/

# 우분투의 경우
# exFAT PPA(Personal Package Archive) 저장소 추가
sudo add-apt-repository ppa:relan/exfat

# apt-get 업데이트
sudo apt-get update

# exfat-utils fuse-exfat 설치
sudo apt-get install exfat-utils fuse-exfat



Ubuntu "sudo add-apt-repository command not found ubuntu" 해결 방법

# apt 저장소 위치를 추가하려고 할때(예 wine 저장소 추가시)
sudo add-apt-repository ppa:ubuntu-wine/ppa

# 다음과 같이 명령을 찾을 수 없다는 메시지가 나오는 경우
sudo add-apt-repository command not found ubuntu

# python-software-properties 를 설치
sudo apt-get install python-software-properties

# 또는 software-properties-common 설치
sudo apt-get install software-properties-common

Linux 일반유저에게 sudo 권한 부여하기

# root 계정에서 설정 파일 쓰기모드로 전환
chmod +w /etc/sudoers

# 설정 파일 수정
sudo vi /etc/sudoers

# 설정 파일을 다시 440(r--r-----) 모드로 전환
chmod 440 /etc/sudoers

# 또는
# visudo 를 실행하면 쓰기 모드 변환없이 /etc/sudoers 수정할 수 있다.
sudo visudo

# 참고로 ubuntu 에서 visudo 는 기본으로 nano 에디터를 사용하는데,
# 다음 명령으로 vim 으로 변경할 수 있다.
sudo update-alternatives --config editor
대체 항목 editor에 대해 (/usr/bin/editor 제공) 5개 선택이 있습니다.

  선택       경로              우선순 상태
------------------------------------------------------------
* 0            /bin/nano            40        자동 모드
  1            /bin/ed             -100       수동 모드
  2            /bin/nano            40        수동 모드
  3            /usr/bin/mcedit      25        수동 모드
  4            /usr/bin/vim.basic   30        수동 모드
  5            /usr/bin/vim.tiny    15        수동 모드

Press <enter> to keep the current choice[*], or type selection number: 4
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in manual mode

# ysoftman 유저에게 sudo 를 사용할수 있게 함
# NOPASSWD: 를 설정하면 sudo 수행시 암호를 물어보지 않는다.
ysoftman ALL=(ALL) NOPASSWD: ALL

# 이제 ysoftman 계정에서 sudo 실행을 할 수 있고, 암호도 물어보지 않는다.
# 추가로 sudo su - 로 root 계정으로 전환등 특정 명령을 막기
ysoftman ALL=NOPASSWD: ALL, !/bin/su, !/sbin/reboot, !/usr/bin/reboot, !/sbin/shutdown, !/sbin/halt, !/usr/bin/halt, !/sbin/poweroff, !/usr/bin/poweroff, !/sbin/init, !/usr/sbin/adduser, !/usr/sbin/useradd, !/usr/sbin/userdel, !/sbin/iptables, !/usr/bin/passwd