[Linux] screen 사용법

예전에 screen + vim 조합으로 열심히 써서 손에 익었던 것도 잠시.. 몇 년이 지나고 나니 어느새 다 잊어버렸다.
screen 을 이용하면 vim 에서 창을 나누지 않고 여러 화면을 전환하면서 쓸 수도 있고, 새로운 파일 들을 열어서 볼 때도 매우 편리하다.  또한, 원격지에서 접속 후 일을 하다가 중간에 작업은 진행시켜 둔 채로 접속을 끊고, 다른 곳에서 접속하여 하던 작업을 이어서 할 수 있다는 장점(이게 난 가장 좋다!)도 있다.
사용법을 찾아보니 이 곳이 정리가 너무 잘되어 있다.

내가 자주 사용하거나 유용한 몇 가지만 요약하여 정리하면 다음과 같다.

1. screen 생성시

 

$ screen -S <세션명>

또는 그냥

 

$ screen

2. 어떤 screen 이 있는지 보고 싶을 때

 

$ screen -list

3. 이전에 생성한 screen으로 돌아가고 싶을 때

 

$ screen -r [세션명]

4. 작업 중 새로운 screen 생성

 

Ctrl + a, c

5. 현재 screen 의 Title 명 변경

 

Ctrl + a, A

6. 작업 중 다른 screen으로 옮기고 싶을 때
6.1. 바로 이전에 사용하던 screen

 

Ctrl + a, a

6.2. screen 번호와 Title 보고 이동(5 항목과 함께 이용하면 편리하다)

 

Ctrl + a, ” (화살표 키 이동 후 엔터)

6.3. 번호 창으로 이동

 

Ctrl + a, [0-9]

6.4. 다음 screen

 

Ctrl + a, n

6.5. 이전 screen

 

Ctrl + a, p

7. screen 을 잠깐 사용 중인 상태로 떼어놓고(detach) 싶을 때

 

Ctrl + a, d

 

8. screen 사용 시 마우스로 화면 스크롤이 안되고, command history가 스크롤 될 때 ~/.screenrc 에 다음 내용을 적는다.

termcapinfo xterm* ti@:te@

corkscrew 를 이용해서 git proxy 이용하기

1. corkscrew 를 다운로드 및 설치(우분투는 그냥 apt-get install corkscrew)
1.1. http://www.agroman.net/corkscrew/ 에서 구할 수 있다. wget을 이용하여 다운로드.

1.2. 설치

# configure; make; make install

1.3. /usr/local/bin/corkscrew 가 설치되었음을 확인.

2. git proxy를 위한 스크립트 작성
2.1. /usr/local/bin/gitproxy.sh 작성

#!/bin/bash
/usr/local/bin/corkscrew <Proxy IP> <Port> $*

2.2. ~/.bashrc 에 다음 추가

$ export GIT_PROXY_COMMAND=/usr/local/bin/gitproxy.sh

참고 : http://cafe.naver.com/embeddedcrazyboys.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=4981

우분투 설치 CD를 USB로 부팅

http://unetbootin.sourceforge.net/ 에서 unetbootin 을 다운받는다.
우분투 설치 ISO 파일을 http://www.ubuntu.com/getubuntu/download 에서 다운로드받는다.
미러를 통해 다운로드받는 것이 빠르다.
USB를 꽂고, unetbootin 을 실행시킨 후 Disk image의 ISO 에 다운로드 받은 ISO를 선택한 후 OK를 누른다.

1~4까지 진행된 후 뽑아서 쓰면 된다.
윈도우즈가 깨진 노트북에서 외장하드로 파일 복사(데이터 백업)가 필요해서 사용했다.

[Linux] 디렉토리 안의 모든 파일들을 일일이 링크 걸기 위한 방법

디렉토리 안의 모든 파일들을 일일이 심볼릭 링크를 걸고 싶을 때 Perl을 이용해서 하는 방법이다.(절대 경로를 준다면 cp -sR 옵션으로 줄 수도 있지만..)

다음을 link.pl 등의 이름으로 저장한다.

use File::Find;
$src = shift; # first arg is source
$dst = shift; # second arg is dest
                find(sub {
                                                (my $rel_name = $File::Find::name)
                                                =~ s!.*/\./!!s;
                                                my $src_name = “$src/$rel_name”;
                                                my $dst_name = “$dst/$rel_name”;
                                                if (-d) {
                                                print “mkdir $dst_name\n”;
                                                mkdir $dst_name, 0777
                                                or warn “mkdir $dst_name: $!”;
                                                } else {
                                                print “ln -s $src_name $dst_name\n”;
                                                symlink $src_name, $dst_name
                                                or warn “symlink $src_name $dst_name: $!”;
                                                }
                                                }, “$src/./”);

perl link.pl <SRC PATH> <DST PATH> 로 한다.
<DST PATH> 는 mkdir로 만들어 놓고 해야 한다.

Vimdiff 사용법

linux에서 (거의) 기본적으로 제공하는 vim 을 이용하면 diff 툴을 사용할 수 있다.
vimdiff 로 실행가능하고 vim 에서 -d 옵션을 사용해서 사용할 수도 있다.

간단한 사용법은 다음을 참고하자.
http://amjith.blogspot.com/2007/07/visual-diff-tools-in-linux.html

정리하면,
do – 다른 윈도우의 변경 사항을 현재 윈도우로 가져오기
dp – 현재 윈도우의 변경 사항을 다른 윈도우로 넣기
]c – 다음 변경 사항으로 이동
[c – 이전 변경 사항으로 이동
Ctrl W + Ctrl W – 다른 윈도우로 이동

다른 윈도우로 이동할 때는 Ctrl + W <방향키> 를 이용할 수도 있다.

Subversion-Installation

Subversion은 지금까지 정말 열심히 쓰고 있는 버전 관리 툴이다. 필요에 의해 쓰게 되었고, 필요에 의해 익히게 된 유용한 툴이다. Subversion없는 프로젝트, 코딩은 이제 생각할 수도 없다. 그 초기에 설치하면서 썼던 설치기..
——————————————————————————————————–
목차
    1 소개
    2 설치
        2.1 우분투 리눅스 설치
        2.2 네트워크 설정
        2.3 Subversion 설치
        2.4 서비스 설정
            2.4.1 xinetd 설치
        2.5 저장소(Repository) 설치
        2.6 Apache2와 연동
    3 사용

1 소개

이 글은 내가 우분투 Breezy 를 설치 후 Subversion 을 설치해서 사용하기까지의 삽질을 정리하기 위한 페이지이다. 개인적인 목적으로(KLDP 에는 미안하지만 😉 ) 정리한 글임을 일러둔다.

클라이언트는 Microsoft Windows 에서 TortoiseSVN 을 이용한다.

2 설치

2.1 우분투 리눅스 설치

    * 우분투 한국 사용자 모임 을 참조한다.
    * 처음 사용자 ID 는 svnadmin 으로 설치하였다.

2.2 네트워크 설정

    * 내부 네트워크에 192.168.0.166 으로 설정하였다.

2.3 Subversion 설치

    * 시냅틱 패키지 관리자에서 Subversion 관련 패키지(Subversion, Subversion-tools, Subversion-helper-scripts(설치안해도 무방할 것 같으나 일단 추가))를 설치한다.

2.4 서비스 설정

2.4.1 xinetd 설치

   1. 시냅틱 패키지 관리자에서 xinetd 패키지를 설치한다.
   2. /etc/xinetd.d/ 밑에 svn 파일을 만들어 내용을 채운다.
         1. sudo vi /etc/xinetd.d/svn

            # Default : On
            # Subversion server

            service svn
            {
                sockettype  = stream
                protocol    = tcp
                user        = svnadmin
                wait        = no
                disable     = no
                server      = /usr/bin/svnserve
                server_args = -i
                port        = 3690
            }

2.5 저장소(Repository) 설치

   1. /home/repository 디렉토리 만듦.
   2. cd /home/repository
   3. svnadmin create ProtoHan
   4. /home/repository/ProtoHan/conf/passwd 를 참고하여 ProtoHan 프로젝트를 진행할 사람들의 계정과 비밀번호를 /home/svnadmin/SvnPasswd/JDL-740aDev 로 만든다.
   5. /home/repository/ProtoHan/conf/svnserve.conf 을 편집한다.
         1. vi /home/repository/ProtoHan/conf/svnserve.conf

            [general]
            anon-access = none
            auth-access = write
            password-db = /home/svnadmin/SvnPasswd/JDL-740aDev

   6. Subversion 에서 추천하는 trunk/, branches/, tags/ 디렉토리를 만든다.
         1. svn mkdir svn://localhost/home/repository/ProtoHan/trunk
         2. 편집기로 Log 작성
         3. 리비전 증가
         4. svn mkdir svn://localhost/home/repository/ProtoHan/branches
         5. 편집기로 Log 작성
         6. 리비전 증가
         7. svn mkdir svn://localhost/home/repository/ProtoHan/tags
         8. 편집기로 Log 작성
         9. 리비전 증가

2.6 Apache2와 연동

   1. 시냅틱 패키지 관리자에서 Apache2 설치
   2. Apache2 를 통해 ProtoHan 에 접근할 계정 설정
         1. mkdir /home/svnadmin/ApachePasswd
         2. cd /home/svnadmin/ApachePasswd
         3. htpasswd -c JDL-740aDev <계정명>
         4. <Password> 입력
   3. /etc/apache2/mods-available/dav_svn.conf 편집
         1. sudo vi /etc/apache2/mods-available/dav_svn.conf

            <Location /ProtoHan>
              DAV svn
              SVNPath /home/repository/ProtoHan
              AuthType Basic
              AuthName “JDL-740a(ProtoHan) Repository”
              AuthUserFile /home/svnadmin/ApachePasswd/JDL-740aDev
              #<LimitExcept GET PROPFIND OPTIONS REPORT>
                Require valid-user
              #</LimitExcept>
            </Location>

   4. sudo /etc/init.d/apache2 restart

3 사용

   1. TortoiseSVN 다운로드(http://tortoisesvn.tigris.org/download.html) 후 설치
   2. Repository 는 svn://192.168.0.166/home/repository/ProtoHan/trunk 혹은 http://192.168.0.166/ProtoHan/trunk 로 접근한다.

How to use Mantis for UTF-8

mantis는 웹 인터페이스의 버그 트래킹 툴이다. 회사 다닐 때 회사에 적용해보고 싶어서 좀 써봤는데, 실패했다-_- 암튼.. 이 글은 Mantis를 UTF-8로 사용하기 위한 팁이다. 근데 좀 오래되었네….;;;;

——————————————————————————————————–
목차
    1 차례
    2 Mantis 한글 설정(UTF-8)
        2.1 설치 환경
        2.2 설정 순서
        2.3 그래도 안보인다면!

2 Mantis 한글 설정(UTF-8)

2.1 설치 환경

    * 우분투 5.10 Breezy 의 mantis 패키지(따라서 모든 경로는 우분투 기준!)

2.2 설정 순서

   1. mantis 의 설정 파일을 수정하기 위해 연다.

      sudo vi /etc/mantis/config.php

   2. $g_default_language 와 $g_fallback_language 를 ‘korean_utf8’ 로 수정한 후 저장한다.

              $g_default_language     = ‘korean_utf8’;
              $g_fallback_language    = ‘korean_utf8’;

   3. /usr/share/mantis/gui/config_defaults_inc.php 를 연다.

      sudo vi /usr/share/mantis/gui/config_defaults_inc.php

   4. $g_language_choices_arr 에 ‘korean’ 밑에 ‘korean_utf8’ 을 추가한다.

              …

              # list the choices that the users are allowed to choose
              $g_language_choices_arr = array(
                      ‘auto’,

                      …

                      ‘korean’,
                      ‘korean_utf8’,
                      ‘turkish’,
                      ‘ukrainian’

                      …
              );

              …

   5. $g_language_auto_map 에 “‘ko’ => ‘korean'” 를 “‘ko’ => ‘korean_utf8′” 로 수정한 후 저장한다.

              …

              $g_language_auto_map = array(
                      ‘en-us, en-gb, en-au, en’ => ‘english’,
                      ‘zh-cn, zh-sg, zh’ => ‘chinese_simplified’,
                      ‘zh-hk, zh-tw’ => ‘chinese_traditional’,
                      ‘cs’ => ‘czech’,
                      ‘da’ => ‘danish’,
                      ‘nl-be, nl’ => ‘dutch’,
                      ‘et’ => ‘estonian’,
                      ‘fi’ => ‘finnish’,
                      ‘fr-be, fr-ca, fr-ch, fr’ => ‘french’,
                      ‘de-de, de-at, de-ch, de’ => ‘german’,
                      ‘hu’ => ‘hungarian’,
                      ‘it-ch, it’ => ‘italian’,
                      ‘ja’ => ‘japanese_sjis’,
                      ‘ko’ => ‘korean_utf8’,
                      ‘lt’ => ‘lithuanian’,
                      ‘no’ => ‘norwegian’,
                      ‘pl’ => ‘polish’,
                      ‘pt-br’ => ‘portugese_brazil’,
                      ‘pt’ => ‘portugese_standard’,
                      ‘ro-mo, ro’ => ‘romanian’,
                      ‘ru-mo, ru’ => ‘russian’,
                      ‘sr’ => ‘serbian’,
                      ‘sk’ => ‘slovak’,
                      ‘sl’ => ‘slovene’,
                      ‘es-mx, es-co, es-ar, es-cl, es-pr, es’ => ‘spanish’,
                      ‘sv-fi, sv’ => ‘swedish’,
                      ‘tr’ => ‘turkish’
              );

              …

2.3 그래도 안보인다면!

    * /etc/php5/apache2/php.ini 파일을 열어 default_charset 가 지정되어 있는 부분을 주석처리한다. 😛