1. 참고링크 [Bottom] [Top]
KLDP.org - http://kldp.org
Korean Manpage Project - http://man.kldp.org/
2. 시스템 관련 팁 [Bottom] [Top]
2.1. 표준시로 시스템 맞추기 [Bottom] [Top]
컴퓨터의 시간을 설정할 때 일반적으로 시계를 보고 임의적으로 설정한다. 그러나 서버의 경우 정확한 시간 설정이 필요하게 된다.
이럴때 다음의 명령으로 인터넷을 통하여 설정가능하다.
# rdate -p -s time.kriss.re.kr
위에서 time.kriss.re.kr 이라는 주소는 한국의 표준시 서버로서 정확한 시간을 알려준다.
시스템의 시간을 설정하는 명령으로 root 에서 실행해야 되며 자주 사용하기 어렵다면 cron 을 통하여 매일 또는 매주, 매월에 한번씩 설정하도록 하거나 아니면 /etc/rc.d/rc.local 파일에 rdate 명령을 넣어 두면 부팅시에 정확한 시간을 설정할 수 있다.
2.2. FTP 접속만 가능하도록 로그인 제한하기 [Bottom] [Top]
FTP 서버를 운영하면서 사용자의 telnet 이나 ssh 접속을 제한하면서 FTP 접속만 허용하고 싶을 때 /sbin/nologin 을 이용한다. 일반적으로 사용하는 로그인 쉘인 /bin/bash 를 /sbin/nologin 으로 변경하면 된다. 따라서 다음과 같이 /etc/passwd 파일의 로그인 쉘을 변경한다.
viper:x:500:100::/home/viper:/sbin/nologin
참고> /sbin/nologin 을 사용하기 위해서는 /etc/shells 파일에 추가해 주어야 한다.
3. 파일 관련 팁 [Bottom] [Top]
3.1. awk 와 sed 사용하기 [Bottom] [Top]
awk 와 sed 는 UNIX/LINUX 에서 사용할 수 있는 강력한 명령중 하나로 일종의 프로그래밍 언어라고 할 수 있다.
awk 와 sed 는 파일이나 콘솔 등으로 부터 입력되는 데이타의 패턴을 검색하고 조작할 수 있다. 즉, 일정한 형식으로 나열된 데이타를 조작하기에 좋은 명령어로 간단한 데이타 조작이나 파일처리가 가능하다.
awk 와 sed 를 이용하여 처리할 수 있는 작업은 다음의 예 이외에도 여러가지가 있다.
- 프로그램의 입력 파일이 특정한 형식에 맞게 이루어져 있는지 검사.
- 출력화일을 처리하여 리포트 ( 결과 ) 를 출력.
- 다른 프로그램의 입력 형식에 맞게 변환하는 작업에 이용.
참고> awk 와 sed 를 제대로 사용할려면 정규 표현식 ( Regular Expressions ) 을 공부해야 합니다.
3.1.1. 참고링크 [Bottom] [Top]
DocbookSgml/Sed-TRANS - Sed 메뉴얼
3.1.2. 유용한 팁 [Bottom] [Top]
data.txt 파일에서 각 라인의 첫 단어만 출력한다.
$ awk '{ print $1 }' data.txtdata.txt 파일에서 Hello 단어가 있는 라인만 출력한다.
$ awk '/Hello/ {print}' data.txtdata.txt 파일에서 빈 라인을 삭제한다.
$ sed -e '/^$/d' data.txt
data.txt 파일에서 Hello 를 Welcome 단어로 바꾼다.
$ sed -e 's/Hello/Welcome/g' data.txt
3.2. diff, patch 를 사용하여 패치파일 만들기 [Bottom] [Top]
diff 과 patch 를 잘 사용하면 손쉽게 패치파일을 만들수 있다. 특히 원본 파일과 수정 파일을 보관하고 관리하기 쉽다.
- 패치파일 만들기
$ diff -u [원본파일] [수정된파일] > [패치파일]
- 패치 적용하기
$ patch [원본파일] [패치파일]
3.3. 입출력 전환하기 [Bottom] [Top]
Linux 에서 Redirection ( 입출력 전환 ) 은 손쉬운 입력과 결과물을 편리하게 얻을 수 있기 때문에 많이 사용하고 있다. 그리고 사용법 또한 여러가지로 아래와 같이 정리해 보았다.
사용법
설 명
cmd > file
표준 출력을 파일로 전환한다.
cmd >> file
표준 출력을 파일에 추가하며 전환한다.
cmd < file
표준 입력을 파일로 전환한다.
cmd >& file
표준 출력과 표준 에러를 파일로 전환한다.
cmd >>& file
표준 출력과 표준 에러를 파일에 추가하며 전환한다.
cmd >! file
파일의 존재 유무와 상관 없이 표준 출력을 전환한다.
cmd >&! file
파일의 존재 유무와 상관 없이 표준 출력과 에러 출력을 전환한다.
cmd >>! file
파일의 존재 유무와 상관 없이 표준 출력을 파일에 추가하며 전환한다.
cmd >>&! file
파일의 존재 유무와 상관 없이 표준 출력과 에러 출력을 파일에 추가하며 전환한다.
cmd1 | cmd2
cmd1 의 출력을 cmd2 의 입력으로 전환한다.
cmd1 |& cmd2
cmd1 의 출력과 에러를 cmd2 의 입력으로 전환한다.
3.4. man page 를 텍스트 파일로 만들기 [Bottom] [Top]
Linux 에서 사용하는 프로그램의 대부분은 친절하게도 man page 라는 도움말을 갖고 있다. 그리고 man page 를 프린터로 출력하거나 파일로 만들어야 할 경우가 있지만 특수문자 등으로 인해 제대로 볼 수가 없게 된다. 이런 경우 다음과 같은 명령어로 손쉽게 파일을 만들 수 있다.
$ man ls | col -b > ls.txt
또한 텍스트 파일뿐만 아니라 다음과 같은 명령어로 html 형태로 만들 수도 있다.
$ groff -t -e -mandoc -Thtml ls.1 | col -bx > ls.html
3.5. man page 검색하기 [Bottom] [Top]
man page 에서 수많은 명령어와 내용을 검색하는 방법이다.
- 제목 검색 (설명 검색 포함)
man -k [Keyword]
- 제목에 Keyword 가 포함된 man page 의 제목과 간단한 설명 목록을 출력한다.
- 단어 검색
man -K [Keyword]
- Keyword 가 포함된 man page 를 검색하여 보여줄지 여부를 묻는다.
키조작 - Y:보기, N 또는 <CR>:넘기기, Q:종료
3.6. grep 비교와 옵션 [Bottom] [Top]
파일에서 특정 단어나 패턴을 검색할 때 grep 명령어를 사용한다. 하지만 grep 명령어는 다음과 같이 검색 형태에 따라 여러가지 명령어 구분하여 사용할 수 있으며 실행속도 또한 각각 다르다.
실행속도 : fgrep > grep > egrep
명령어
설 명
정규표현식
fgrep
단순 패턴을 검색한다.
X
grep
정규 표현식 패턴을 검색한다.
O
egrep
다중 패턴을 검색한다.
O
3.6.1. grep 명령어의 옵션 [Bottom] [Top]
옵션
설 명
-n
일치하는 행 번호를 출력한다.
-c
일치하는 행의 개수를 출력한다.
-v
일치하지 않는 행을 출력한다.
-i
대소문자를 구분하지 않고 검색한다.
-r
하위 디렉토리도 검색한다.
3.6.2. 유용한 팁 [Bottom] [Top]
- 검색된 패턴을 다른 색상으로 표시하기 ( --color 옵션 )
$ grep --color Hello *.txt
- alias 로 재정의하기
alias grep='grep --color'
3.7. 줄바꿈 문자 변환하기 [Bottom] [Top]
텍스트 파일의 줄바꿈 문자를 변환하는 방법은 여러가지가 있다. vim 을 이용하거나, 여러가지 명령어를 사용해서 변환할 수 있지만 간단히 명령어 하나로 변환할 수 있다.
- DOS 형식을 UNIX 형식으로 변환하기
$ dos2unix data.txt
- UNIX 형식을 DOS 형식으로 변환하기
$ unix2dos data.txt
3.8. pushd 응용하기 [Bottom] [Top]
pushd [+n|-n]
- +n : 왼쪽으로 n 번 회전한다.
- -n : 오른쪽으로 (n+1) 번 회전한다.
3.9. 링크된 파일 종류 알아보기 [Bottom] [Top]
심볼링크된 원본파일의 종류를 알아본다.
file -L symlink
3.10. echo 활용하기 [Bottom] [Top]
echo -n -e [string]
- -n : 문자열을 출력 후 줄바꿈하지 않는다.
- -e : ESCAPE 문자를 사용하도록 한다.
3.11. 파일에 저장된 메일 읽기 [Bottom] [Top]
파일에 저장된 메일을 읽는다. 예를들어 mbox 에 저장된 메일을 읽을려면 다음과 같다.
$ mail -f mbox
3.12. 파일 그룹 변경하기 [Bottom] [Top]
파일의 소유자와 그룹을 변경한다. (그룹 생략 가능)
chown [-R] owner[.group] File
- -R : 하위 디렉토리를 순환 처리한다.
4. 네트워크 관련 팁 [Bottom] [Top]
4.1. 원격 로그인 시 공지사항 보이기 [Bottom] [Top]
원격 로그인 시 공지사항과 같은 메세지를 출력하고 싶을 때 /etc/motd 파일을 이용하자.
/etc/motd 파일은 "message of the day" 의 줄임말로, 로그인하는 사용자에게 표시되는 메시지를 저장한다.
4.2. 삼바 서버 접속하기 [Bottom] [Top]
리눅스에 삼바 서버를 설치하고 윈도우에서 접근하는 것이 일반적이지만 간혹 리눅스에서 삼바서버에 접속해야 하는 일이 생긴다.
이럴때 smbclinet를 이용하여 다음과 같은 순서로 접속한다.
- 해당 컴퓨터의 공유 디렉토리 확인
$ smbclient -L <host> -U <사용자ID> Password: <Password 입력>
<host> : 해당 컴퓨터의 이름 또는 IP
<사용자ID> : 사용자ID - 필요없으면 생략가능
- 삼바 서버 접속
$ smbclient \\\\<host>\\<공유 디렉토리> -U <사용자ID> Password: <Password 입력> Domain=[작업 그룹] OS=[운영체제] Server=[삼바서버명] smb: \> <--- smbclient 프롬프트
참고> smbclient 사용법은 ftp 사용법과 비슷하며 도움말이 필요하면 프롬프트에서 help 라고 입력하면 된다.
4.3. KLDP 사이트 미러링하기 [Bottom] [Top]
우리나라에서 오픈소스와 관련된 문서를 찾는다면 아마 대부분은 먼저 KLDP 를 찾게 된다. 하지만 빠르게 볼 수 있도록 자신의 컴퓨터 내에 KLDP 의 모든 문서를 미러링하고 싶다면 다음과 같이 실행한다.
# rsync -a kldp.org::ftp/ /usr/local/doc/KLDP
여기서 /usr/local/doc/KLDP 는 미러링한 데이터가 위치할 디렉토리를 지정한 예로 미러링하기 전에 미리 디렉토리를 만들어 두어야 한다. 그리고 정기적으로 미러링하고 싶다면 crontab 에 등록한다.
참고> 용량이 100M 단위가 넘기 때문에 시간이 좀 걸린다.
4.4. 파일전송 오류 확인하기 [Bottom] [Top]
네트워크나 다른 저장 장치로 파일을 전송할 때 간혹 오류가 발생할 수 있다. 특히 백업 파일을 전송할 때 파일오류가 발생한 것도 모르고 원본 파일을 지운다면 문제가 된다. 이러한 파일 오류를 확인하는 방법은 다음과 같은 과정을 통하여 알아 볼 수 있다.
- 원본파일의 체크섬(Checksum) 파일 만들기
# md5sum 원본파일명 > 체크섬파일명
- 복사본파일의 체크섬 확인하기
# md5sum -c 체크섬파일명
위의 md5sum 는 UNIX/LINUX 에서 파일의 오류나 변조 여부를 확인하기 위한 명령어로 요즘은 주로 CD 이미지 파일(*.iso) 이나 오픈소스를 안전하게 배포하기 방법으로 사용되고 있다.
참고> 윈도우즈용 md5sum 도 있으며 사용방법은 동일하다. 하지만 표준 윈도우즈 명령어가 아니기 때문에 다운받아 명령창에서 실행해야 한다.
다운로드 - Uploads:Downloads/md5sum.exe
4.5. IP 정보 계산기 [Bottom] [Top]
Subnet IDs, Broadcast Addresses 그리고 주어진 Subnet Mask 로 host IDs 를 결정해야 할 때 ipcalc 를 이용하면 손쉽게 계산할 수 있다.
# ipcalc -b 192.168.0.1/27 BROADCAST=192.168.0.31
# ipcalc -n 192.168.0.1/255.255.128.0 NETWORK=192.168.0.0
# ipcalc -h 211.32.119.135 HOSTNAME=kr.yahoo.com
자세한 사용법은 도움말 ( 'ipcalc --help' ) 을 참고한다.
5. 콘솔 관련 팁 [Bottom] [Top]
5.1. Telnet 에서 글자가 깨져 나올때 복구 방법 [Bottom] [Top]
간혹 Telnet 이나 Hanterm 에서 실수로 바이너리 파일을 cat 으로 출력하면 글자들이 모두 깨져나오게 된다. 한글뿐만 아니라 영문까지 모두 깨져 나오는데 이것은 바이너리 문자 중 특정 문자가 터미널의 문자셋을 그래픽문자셋으로 바꿔서 일어나게 되는 문제다. 처음 이런 일을 격게되면 대부분은 다시 로그인하게 되는데 그러면 하던 일을 중단해야 하므로 너무 불편하다. 하지만 리눅스에서는 이런 문제를 간단히 해결할 수 있도록 다음과 명령어를 제공하고 있다.
$ reset
이 명령어는 터미널을 초기화 하는 명령어로 글자가 깨지는 문제를 아주 간단히 해결해 준다.
5.2. ^H 로 표시되는 키의 재설정하기 [Bottom] [Top]
Console 이나 Telnet 으로 접속했을 때 <BackSpace> 키를 누르면 글자가 지워지지 않고 ^H 으로 입력되는 경우가 많고 너무 불편하다. 그러나 다음과 같은 명령어로 간단히 해결할 수 있다.
$ stty erase ^H
아주 간단하며 매번 접속할 때마다 실행해야 하므로 Bash 쉘을 사용한다면 .bash_profile 파일의 마지막 부분에 넣어 주면 된다.
참고> Login 을 하기 전에는 재설정이 되지 않으므로 ID 나 Password 를 입력할 때 주의해야 한다.
5.3. 터미널의 언어 설정 바꾸기 [Bottom] [Top]
터미널의 언어 설정에 따라 글자가 깨지는 경우가 종종 발생한다. 예를 들어, 영문 터미널 모드에서 한글 Man Page 가 깨지는 경우가 많은데 이럴때는 오히려 영문으로 보는게 더 나을 수도 있다. 이 때 LANG 환경 변수를 변경하므로 간단히 해결할 수 있다.
한글로 설치된 경우 LANG=ko_KR.eucKR 으로 설정되어 있다. 이것을 다음과 같은 명령어로 간단히 변경한다.
$ export LANG=en_US.UTF-8
