본문 바로가기
my_data/_tip

리눅스의 명령어

by boolean 2014. 4. 21.
728x90

리눅스에서는 몇가지 중요한 명령어들을 사용하는 것이 기본이라 할 수 있습니다. 초보자에게는 좀 낯설고 처음에는 사용하기가 불편하게 느껴지겠지만 , 일단 익혀두고 반복하여 몇번 사용해보면 때로는 윈도우 상에서 프로그램을 실행하는 것보다 훨씬 편리하다는 것을 느낄 수 있습니다. 여기서는 중요한 몇가지의 명령어를 간추려서 알아보겠습니다.


1.파일관리

1. cd

- 디렉토리를 변경할 때, 디렉토리를 따로 입력하지 않으면 login한 디렉토리($HOME 또는 '~'로 표시됨)로 이동합니다.

cd . 은 현재 디렉토리이며, cd .. 은 상위 디렉토리입니다.

예) 최상위 디렉토리 / 에서 상위디렉토리 root/ 으로 이동할 때 :

cd /root ( /를 생략해도 무방 )

현 디렉토리root/에서 상위디렉토리에 있는 bin/이라는 디렉토리로 바꿀 때- cd ../bin, 또는 ..없이 그냥 cd /bin으로 해도 무방합니다.




2. ls

- DOS의 dir과 비슷한 명령어인데, 디렉토리명 등을 출력시키며 옵션에 따라 다양한 정보와 함께 출력된다.

옵션

-a: 디렉토리 내의 모든 파일 출력

-i : 파일의 inode와 함께 출력한다.

-l : 파일 허용 여부, 소유자, 그룹, 크기, 날짜 등을 출력한다.

-m: 파일을 쉼표로 구분하여 가로로 출력한다.

-r : 정렬 옵션이 선택되었을 때, 그 역순으로 출력한다.

-s : KB 단위의 파일 크기를 출력한다.

-t : 최근에 만들어진 파일 순서대로 출력한다.

-x : 파일 순서를 세로로 출력한다.

-F : 파일의 형태와 함께 출력한다.
출력되는 파일의 형태는 '*', '@', '|', '=' 등이며, 이것은 각각 실행 파일, 심볼릭 링크, FIFO 소켓을 나타낸다.

-R : 서브 디렉토리의 내용을 포함하여 출력한다.

-S : 파일 크기가 큰 순서로 출력한다.

-U : 정렬하여 출력한다.

-1 : 라인당 한 파일씩 출력한다.

--help : 도움말을 화면상에 나타낸다.

--version : 'ls'의 파일 버전과 함께 출력한다.

예) /home/babo
디렉토리 내용을 최근에 만들어진 파일 순서대로 출력- ls -t /home/babo 

3. cp

- 파일을 다른 파일 이름으로 또는 다른 디렉토리로 복사하는 명령어로 도스의 copy와 같은 명령어.

옵션

-a : 가능한 한 원래 파일의 구조, 속성을 그대로 복사한다.

-b : 덮어쓰거나 지울 때 백업 파일을 만든다.

-d : 심볼릭 링크 파일 그대로 복사한다.
(디폴트는 연결된 원래 파일을 복사함).

-f : 같은 파일명을 갖는 파일이 있을 경우, 지운 후 복사한다.

-i : 같은 파일명을 갖는 파일이 있을 경우, 사용자 확인후 복사한다.

-l : 하드 링크를 만든다.

-p : 원시 파일의 소유자, 그룹, 허용 여부, 시간 등을 그대로 복사한다.

-r : 서브 디렉토리를 포함한 모든 파일 복사한다.

-s : 심볼릭 링크를 만든다.

-u : 복사할 파일이 구 버전일 경우만 복사한다.

-v : 복사하기 전에 각각의 파일명을 출력한다.

-x : 파일 시스템이 같을 경우만 복사한다.

-P : 원시 파일이 존재하는 디렉토리까지 포함하여 복사한다.

-R : 디렉토리를 포함하여 복사한다.

-S : 환경 변수 SIMPLE_BACKUP_SUFFIX에 의해 지정된 백업 꼬리말로 백업 파일 생성한다.

예)
/root 디렉토리에서 trial이라는 파일을 /maria라는 디렉토리로 복사하려고 할 때는 #cp trial maria를, maria에 복사되었는지 확인해 보려면, # cd maria # ls를 쳐보면 나온다. 




4. mv

(move) - 파일을 다른 파일 또는 디렉토리로 옮길 때 사용. 이 명령은 복사와 같으나 원본이 지워진다.
파일의 이름을 바꿀 때도 사용할 수 있다.

옵션

-b : 지워지기 전에 백업본을 만든다.

-f : 옮겨질 디렉토리에 존재하는 파일이 있으면 덮어쓴다.

-i : 옮겨질 디렉토리에 존재하는 파일이 있으면 확인한다.

-u : 옮겨질 디렉토리에 구 버전의 파일이 있을 경우만 옮긴다.

-v : 옮기기 전에 파일명을 출력한다.

예)
파일을 /maria라는 디렉토리에 옮길려면 

 

5. rm

(remove) - 파일을 지우는 명령으로 주의할 점은 유닉스하에서는 파일들이 지워지면 복구가 불가능하다는 것이다. rm 파일명으로 사용한다.

옵션

-f : 강제로 파일을 지울 수 있다.

-i : 지우기 전에 확인한다.

-r : 서브 디렉토리의 파일까지 지운다.

-v : 파일을 지우기 전에 지울 파일의 이름을 나타낸다.

-R : -r과 같다.

예)
command1.txt란 파일을 지우려면, rm command1.txt
확인해 보려면, ls를 쳐 보면 삭제 되었는지 알 수 있다. 




6. mkdir

- 디렉토리를 새로 만들 때 사용.
만약 love라는 디렉토리를 만들려면 mkdir love를 입력하면 된다.

옵션

-p : 지정된 모든 서브 디렉토리까지 함께 생성

-m : mode mode에 해당하는 사용 허가로 디렉토리를 생성한다.

예)
/rootd에서 love라는 디렉토리를 만들려면, mkdir love 




7. rmdir

- 디렉토리를 지울 때. rmdir 다음에 디렉토리 이름을 입력하면 디렉토리가 지워진다.
이 부분에서 가장 중요한 것은, 디렉토리 내부에 파일이 남아있으면 지워지지 않으므로 디렉토리를 지우기 전에 반드시 rm을 이용하여 내부 파일을 모두 지우는 것을 명심해야 한다.
rm -rf dir_name
옵션

-p : 지우고자 하는 디렉토리의 상위 디렉토리까지 포함하여 지운다.

예)
위에 만든 /love라는 디렉토리를 지우려면, rmdir love
지워졌는지 확인해 보려면 ls를 넣으면 알 수 있다. 

 

8. man ( manual )

- 주어진 명령이나 유틸리티의 매뉴얼을 출력한다.

옵션

-a : 모든 manual page를 출력

-d : 디버깅 정보 출력

-f : whatis와 같음

-h : 도움말 출력

-k : apropos와 같음

-t : groff(troff)를 사용하여 프린트를 위한 형식으로 출력

예)
ls 명령어의 도움말을 보고자 할 때- man ls 

 




9.more

- 주어진 파일의 내용을 한 화면씩 출력시킨다.

옵션

-h : 도움말(help)

- SPACE 또는 - z : 다음 페이지

-RETURN 또는 - 1 : 라인 스크롤

-d 또는 -^D : 반 페이지 스크롤

- q 또는 -Q : 종료 (quit)

- f : 다음 페이지 (forward)

- b 또는 - ^B : 이전 페이지 (back)

- /pattern : 검색

- = : 현재 라인 출력

- ! : 명령어 실행

- ^L : 화면 다시 출력

- f : 현재 파일명과 라인 출력

예)
root/command.txt 파일을 페이지 단위로 출력시키려면 more /root/command.txt 

 

10. less

- more와 비슷한 명령어로 한 페이지씩 문서를 보여준다. 문서의 앞으로도 이동이 가능하다.

옵션

- ? : less에서 사용할 수 있는 명령들에 대한 도움말을 제공한다.

- a : 마지막 라인이 화면에 출력되고 나면 검색을 시작한다.

- c : 필요할 때 전체 화면은 다시 갱신한다.

- C : -c 옵션과 같지만 화면 전체를 지우고 시작한다.

- e : 두번째로 파일의 끝에 도달하면 자동적으로 종료한다.

- E : 파일의 끝에 도달하기만 하면 자동적으로 종료한다.

- i : 대소문자를 구분하여 검색한다.

- n : 행 번호를 추가한다.

- q : 특정 에러가 발생하지 않으면 소리없이 동작한다.

- Q : 결코 아무 소리도 내지 않는다.

- s : 연속되는 공백 라인은 하나의 행으로 처리한다.

- x : 숫자: 수치를 지정해서 탭 간격을 조정한다. 기본값은 8 이다.

예)
man의 내용을 한 페이지 단위로 행번호를 추가하여 출력하려면, man less -n 

 




11. cat

- 파일의 모든 내용을 한번에 화면에 나타나게 한다.

예)
practice라는 파일의 모든 내용을 화면에 출력할 때- cat practice

 

12. pwd

- 현재의 디렉토리가 어디인지 알려준다. 

 

13. echo

- 주어진 인자를 단순히 화면에 나타나게 한다.

예)
"i love you"를 출력시키려면, echo i love you 


14. grep

주어진 패턴을 포함하는 파일의 라인을 출력시킨다.

옵션

-C : 일치하는 문장의 상하 두 라인까지 포함하여 출력한다.

-V : 버전과 함께 출력한다.

-b : Byte 오프셋과 함께 출력한다.

-c : 일치하는 라인의 갯수를 출력한다.

-h : 파일명은 출력하지 않는다.

-i : 대소문자 구분하지 않는다.

-l : 일치하는 내용을 가지는 파일명만 출력한다.

-n : 일치하는 내용을 가지는 라인 번호를 출력한다.

-s : 에러 메시지만을 출력한다.

-v : 일치하지 않는 내용을 출력한다.

-w : 한 단어로 일치해야 출력한다.

-x : 전체 라인이 일치해야 출력한다.

예)
rm이라는이름이 들어간 파일을 ls중에서 찾을 때 - ls | grep rm 


15. find

-원하는 파일을 디렉토리를 탐색하면서 지정된 조건에 만족하는 파일을 찾는다. 이름이나, 크기, 날짜, 사용자등의 조건을 지정하여 찾을 수 있다.

-name : 찾고자 하는 파일의 이름을 정하면 된다.

-perm : 파일의 권한 (permission)이 일치하는 것을 찾는다.

-user : 사용자의 ID에 따라서 검색한다.

-atime : 최근 며칠내에 접속한 파일을 검색한다

-newer : 최근에 갱신된 모든 파일을 검색한다.

예)
maria라는 이름을 가진 파일을 찾으려면, find -name maria 
 

16. ls

-lR-현재 디렉토리와 서브 디렉토리의 이름 및 포함되어 있는 파일을 출력시킨다. 




17. mount

- cdrom이나 floppy disk를 사용하게 만들어 준다.

floppy mount : -t msdos /dev/fd0 /mnt/floppy 



cdrom mount : mount -t iso9660 /dev/cdrom /mnt/cdrom 

 

18. umount (언마운트; unmount)

- 디렉토리와 연결되었던 시디롬이나 플로피 디스크를 분리시켜 주는것을 말한다. 플로피나 시디롬을 다 쓰고 나면 항상 언마운트를 시켜주어야 한다. 

 





19. Mtools

- Mtools는 리눅 스에서 DOS로 통하는 유틸리티의 모음이다.
모든 명령어들은 앞에 m자를 붙인뒤 DOS의 명령어와 같이쓰면 된다.
예를 들면 mattrib, mcd, mcopy, mdel, mdir, mformat, mlabel, mmd, mrd, mren, mtype, mread, mwrite 등이 있으며, 디렉토리를 나타낼 때에는 ''가 아닌 리눅스의 명령어인; '/'로 지정해 주어야 한다.


20. mcd

- 도스 시스템으로 현재 사용하고 디렉토리를 이동한다.

mcd dos 디렉토리

 


21. mcopy

- 도스 파일 시스템으로 가거나 도스상의 파일을 복사한다.

옵션

- n : 파일을 덮어 쓸 경우에도 경고하지 않는다.
- v : 안내문을 자세하게 보여준다.
- m : 파일 갱신 시간을 보존한다.

22. 리디렉션 ( redirection )

- 리디렉션이란 어떤 명령을 실행한 후에 생기는 내용물을 사용자가 원하는 곳으로 출력하기 위해 만들어졌는데 표준 입력, 표준 출력, 에러 출력 등의 방향을을 다른 곳으로 바꾸는 것이다.
리디렉션의 기호는 ">"이다. 보통, ">" 을 이용하여 명령의 결과를 파일로 리디렉트시켰을 때 그 파일이 존재해 있었다면 그것을 덮어 쓴다. ">>"를 쓰면 파일을 덧붙여 쓰게 된다.

예)
만약 원하는 내용을 life.txt란 파일로 보내려면, 파일 생성 명령어인 cat을 친 다음, 다음 행에서 부터는 내용을 life.txt라는 곳으로 보내라는 리디렉션 기호 '>'를 친다.
그 다음에 원하는 내용을 쳐 넣으면 된다. 그리고 엔터키를 친 다음,Ctrl+Z>를 친다.
입력한 내용을 확인해 보려면, $ cat life.txt를 친 다음, 엔터키를 치면 볼 수 있다. 




23. 파이프라인

- 파이프라는 것은 여러 명령을 함께 사용할 때, 한 명령의 결과가 다른 명령으로 전송되는 통로이다. 명령어를 하나 하나씩 일일이 치지 않고도 한꺼번에 여러가지를 실행할 수 있어 편리하다.

예)
ls화면을 한 페이지씩 출력하려면 ls | more , 중단 하려면 q를 치면 된다. 

 

1.Process 관리

다음은 사용하고 있는 시스템 정보에 관련된 명령어에 대하여 살펴보도록 하겠습니다.

1. ps ( process )

- 현재 진행중인 프로세스에 대한 정보를 출력한다. 



2. pstree ( process tree)

- ps 에 의해서 출력되는 프로세스 정보를 트리 형태로 나타낸다. 



3. top

- cpu와 메모리를 사용하는 작업들에 대한 시스템 정보를 출력한다.
원래 화면으로 되돌아 가려면 q를 입력한다. 

 




4. arch (architecture)

- 현재 사용하고 있는 cpu의 모델을 출력(i686- 인텔 펜티엄) 




5. cal (calendar)

- 현재의 달을 출력해 주는데, cal과 함께 원하는 월과 연도를 숫자를 입력하면 원하는 달 의 달력을 볼수 있다.
-j를 입력하면 율리우스달력을 볼 수 있다. 

 

6. clock

- CMOS 설정 시간을 출력하거나 변경할 수 있다. 




7. date

- 현재의 시간과 날짜를 출력한다. 




8. df (disk free)


- 하드의 전체 용량 및 남은 용량 볼 때 사용한다.

옵션

-h(human) 사람이 쉽게 알 수 있는 형태인 바이트 단위로 출력한다. 




9. du (disk usage)

-각각의 디렉토리와 파일들이 차지하고 있는 디스크 용량을 출력한다.

예) temp2 디렉토리가 차지하는 용량을 보려고 할 때, du temp2 




10. free (free memory)

- 현재 사용중인 시스템의 메모리 상태를 출력한다.

옵션

-m(Megabyte) 메모리의 양을 메가 바이트 단위로 출력한다.
-k (Kilobyte) 메모리의 양을 킬로 바이트 단위로 출력한다. 




11. hostname

- 자신의 컴퓨터에 부여되어 있는 이름을 출력한다. 

 

12. lsdev (list devices)

- 현재 시스템에 연결되어 있는 하드웨어에 관한 입출력 정보와 IRQ 값 등을 출력한다. 

 




13. quota

- 각각의 사용자들이 사용할 수 있는 디스크의 용량을 나타낸다. 




14. rdev (root device)

- 내부에 ramsize, swapdev, vidmode, rootflag의 프로그램으로 구성되어 있다. 




15. uname (unix name)

- 사용중인 운영체제에 대한 정보를 출력한다.

옵션

- a(all) 현재 사용중인 운영체제와 커널의 컴파일 정보 등을 출력한다. 




16. su

- 현 상태에서 다른 사용자로 다시 login한다. 만약 사용자 id를 입력하지 않으면, root로 login 된다. 

 

17. shutdown

- 시스템을 종료할 때일반적으로 사용되는 명령어이다.

옵션

- t n 옵션 t 뒤에 n 초만큼 후에 경고 메시지 후에 kill 신호를 보낸다.

- h (halt) 완전히 닫는다.

- r (reboot) 종료후 재부팅을 한다.

- f (fast) 빠른 리부팅을 한다 .(파일 시스템 검사 생략 )

- c (cancel) 예약 되어 있는 종료 취소

- k (kidding) 모든 것이 정상이지만, 종료 시간이 되면모든 프로그램이 멈춘다.


18. reboot

- 재 부팅 시키는 것을 말한다.

옵션

- q 현재의 실행프로그램을 종료하지 않고 부팅만 다시 시킨다.


19. kill

- 프로세스 종료하기. 현재 실행중인 프로세스를 강제로 종료시키는데 사용

kill signal ID PID
kill -l

옵션

-2 : 실행 중인 프로세스에게 인터럽트 키 신호를 보냄

-9 : 가장 확실하게 실행 중인 프로세스를 종료시킴


20. tty

- 현재 사용하고 있는 단말기 장치의 경로명과 파일명을 보여줌 



21. whereis

- 실제 프로그램이 어떤 디렉토리에 존재하는지 관련된 모든 경로명을 보여줌

예) whereis vi 




22. fsck (file system check)

- 파일 시스템의 상태가 올바른지 검사하고, 잘못된 것이 있으면 바로 잡는다.

옵션

- a : 검사도중 발견된 에러를 자동적으로복구한다.

- r : 검사도중 에러가 발견되면 복구 여부를 물어본다.(사실 사용되지 않는다.)

- s : 순차적인 방법으로 검색한다.

- V : 검색중 각종 정보를 자세 하게 보여준다.

- N : 실제로 검사 작업을 하지는 않도록한다. 



 

사용자 관리

1. chgrp

- 파일의 그룹 소유권을 바꾼다.

옵션

-c : 실제로 소유자가 바뀐 파일에 대해서 자세하게 설명

-f : 소유권을 바꿀 수 없어도 에러 메시지를 나타내지 않는다.

-v : 소유권의 이전에 대해서 자세히 기술한다.

-R : 디렉토리와 그 내용 파일들의 소유권을 재귀적으로 모두 바꾼다.

* 파일의 소유자나 슈퍼 유저만이 파일의 그룹 소유권을 바꿀 권한이 있는데,
chgrp + 옵션 바꾸고자 하는 그룹의 이름+ 디렉토리+ 파일 이름

예) /root그룹에 있는 ak이라는 파일을 white라는 그룹으로 소유권을 이전하려면,
chgrp white /root/ak 



 


2. chmod

- 파일의 모드를 바꿀 때 사용하는데 파일의 모드는 권한(permission)을 제어한다.

옵션

-c : 실제로 파일의 권한이 바뀐 파일만 자세히 기술한다.

-f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.

-v : 변경된 권한에 대해서 자세히 기술한다.

-R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.

* r(read 읽기), w(write 쓰기), x(execute 실행)의 3가지 권한이 있는데, 각 단위당 2진법으로 표현된다. 따라서 읽기, 쓰기, 실행 등의 모든 권한을 주려면, 4+2+1, 따라서 합계 7이된다.
만약 모든 그룹의 권한을 다 허용해 줄 경우, 777이 된다.

예)
우선 권한을 보기위해, ls -al을 쳐보면 wow 라는 파일이 rw-r--r--로 되어있다는 것을 알 수 있다.
여기서, 첫 번째 3자리는 소유자, 두 번째 3자리는 그룹, 마지막 3자리는 타인에게 허용할 것인지 여부를 보여주는 것이다.
여기서의 소유자는 읽고 쓰기가, 그룹과 타인은 읽기만 허용이 되어있다.
모두가 사용할 수 있게 하려면 777이 된다.

chmod 777 wow 



현재의 권한 



변환 




3. chown

- 파일의 소유권을 다른 사람에게 변경할 때 사용한다.

옵션

-c : 실제로 파일의 소유권이 바뀐 파일만 자세히 기술한다.

-f : 파일의 소유권이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.

-v : 변경된 소유권에 대해서 자세히 기술한다.

-R : 디렉토리와 파일들의 소유권을 재귀적으로 모두 바꾼다.

파일의 소유권을 다른 사람에게로 바꾸는 것은 슈퍼 유저만이 할 수 있다.

예)
root/에 있는 wow라는 파일을 test라는 그룹으로 소유권을 바꿀 때
chown test /root/wow
ll을 쳐서 소유권이 바뀌었는지 확인해 보면 된다.






5. 시스템의 사용자 정보에 대한 명령어

* finger


- 시스템을 사용하고 있는 사용자들의 이름과 주소등 신상 명세를 출력한다.
변경할 때는 chfn(change finger name)을 사용하면 된다.




* id (identification)

- 사용자의 개인 id 와 그룹의 id 번호를 출력한다.




* logname

- 로그인해 있는 사용자의 이름을 출력한다.




* uptime

- 현재의 시간과 로그인 시간의 총합, 평균적인 시스템 사용 현황을 출력한다.




* w (who is logged on and what they are doing)

- 로그인 되어있는 사람과 현재 실행중인 작업의 종류를 출력한다.




* who

- 시스템을 사용하고 있는 사용자들의 이름과 터미널 번호, 로그인 시간 출력한다.




* whoami

- 가상 콘솔 기능을 사용하거나 여러명의 사용자로 동시에 로그인해 있을 때, 현재 시스템을 사용하고 있는 자신이 누구인가를 출력한다.




* adduser

- 사용자를 추가하기 위한 명령어인데 명령어 뒤에 원하는 사용자 명을 써 넣는다.



Network

NCI에 IP주소를 설정하는 작업은 보통 X윈도우에서 합니다. 하지만 X윈도우를 사용하지 않는 경우에 네트워크을 설정하려면 명령어로 실행시키는 방법이 있습니다. 그렇게 하려면 X윈도우 상에서 설정했던 네트워크 상태가 저장되어 있는 곳으로 가서 편집하면 됩니다. 리눅스 설치 후 네트워크에 문제가 생기는 경우가 있는데 이는 대부분 네트워크 인터페이스 즉 랜카드의 문제로 인한 경우가 많습니다.

우선 자신의 랜카드가 리눅스에서 지원하는지 확인해야 합니다. 리눅스에서는 /proc 이라는 디렉토리의 내용을 확인해야 합니다. 이 디렉토리는 커널이 사용하는 디렉토리로 시스템 정보, 하드웨어에 대한 정보, 프로세서의 정보가 저장되어 있습니다. PCI를 갖고 있으면 다음과 같은 명령으로 그 내용을 확인하시면 됩니다.

#cat /proc/pci [Enter]
...
Bus 0, device 13, function 0:
Ethernet controller : Hewlet Packard J2585A (rev 0).
Medium devsel. Fast back-to-back capable. IRQ 11.
I/0 at 0xfd00.
Non-prefetchable 32 bit memory at 0xfffdc000.
...

만약 PCI랜카드를 사용하고 있는데도 Ethernet controller:이 나오지 않는다면 랜카드에 문제가 있는 경우입니다. 랜카드의 이름 즉 위에서는 Hewlett Packard J2585A가 없는 경우에는 커널에서 랜카드를 지원하지 않으므로 커널을 업그레이드 하거나 랜카드를 다른 것으로 바꾸어 주면 됩니다.

[1] ping

Ping은 현재 사용하고 있는 시스템이 네트워크로 연결된 원격지 호스트를 인식하고 있는지를 테스트하여 네트워크로 연결되어 있는지의 여부와 접근할 원격지 호스트가 정상적으로 작동되고 있는지 알아봅니다. 따라서 ping의 중요한 기능은 상대편 네트웍을 테스트 할 수 있다는 것입니다.
현재 보낸 패킷과 받은 패킷사이의 통계치를 보여주면 제대로 실행 된것입니다.

[2]ifconfig

Interface 란 NIC(Network Interface Card)를 세팅하는 것입니다.여기서는 ifconfig유틸러티를 사용하여 어떻게 IP address, netmask, gateway등을 설치하는지를 알보도록 하겠습니다.
우선 한텀에서 다음처럼 입력을 합니다.

ifconfig [interface]
ifconfig interface [atype] options | address...

옵션

up : interface를 활성화 시킵니다

down: interface를 비활성화 시킵니다.

address : [aaa.bbb.ccc.ddd]의 모양을 가집니다.

[3]PPP연결하기

리눅스에서 ppp 를 연결하려면 minicom이나 seyon에서 ppp를 구동합니다. ppp를 작동 시킨 다음 minicom이나 seyon을 서스펜드 합니다. 우선 가우나 세연을 설치하여 몇가지 설정을 해야 합니다. 종료시에는 ps명령어로 ppdd의 PID를 확인한 다음 다시 kill 명령으로 프로세스를 중단하면 됩니다. 아래의 명령어를 입력하면 설치할 수 있습니다.

[root@honey /root]#cd /mnt/cdrom/RedHat/RPMS
[root@honey /root]# rpm -Uvh gau* : 가우를 사용할때
[root@honey /root]# rpm -Uvh seyon : 세연을 사용시

이렇게 하여 설치가 끝났으면 control-panel을 이용하여 모뎀을 설정합니다.

[4]LAN 카드 설정하기

*리눅스에서 기본 정보 파일은 /etc/sysconfig 디렉토리에 있습니다. 다음의 과정을 하나하나 실행하면서 명령어를 이용하여 네트워크를 설정해 보도록 하겠습니다.

NETWORKING=yes
FORWARD_IPV4=no
HOSTNAME="honey.linux.co.kr"
DOMAINNAME=linux.co.kr
GATEWAY=210.127.236.254
GATEWAYDEV=eth0

NETWORKING부분에서는 네트워크를 활성화 할 것인지를 입력하는 부분으로 작동시키려면 YES를, 그렇지 않으면 NO 를 입력합니다. HOSTNAME 부분에는 호스트 이름을 Primary hostname + domain을 연결하여 따옴표로 묶어줍니다. DOMAINNAME에는 도메인 이름을 적고, GATEWAY부분에는 게이트 웨이의 IP주소를 써 넣으면 됩니다. GATEWAYDEV에는 게이트웨이로 나갈때 사용하는 네트워크 장치명을 적으면 됩니다.

*리눅스에서 네트워크 인터페이스 설정은 다음의 디렉토리 안에 있습니다.

cat/etc/sysconfig/network-***s/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO=none
BROADCAST=210.127.236.255
NETWORK= .0
NETMASK="255.255.255.0"
IPADDR="210.127.236.93"
USERCTL=no
ONBOOT =no

DEVICE란에는 장치를 적어주고,NETWORK에는 네트워크 주소를 적어주고, Broadcast에는 브로드캐스트 주소를 넣어주는데, 브로드케스트 주소는 255를 사용합니다. nullBOOT는 부팅도중 자동으로 네트워크 인터페이스가 작동할 것인지의 여부를 결정하는 것이고,BOOTPROTO는 네트워크 인터페이스가 작동할 때 IP주소를 받아오는 방식을 결정하는 것입니다.

*다음은 도메인 네임을 서버에 등록하는 절차입니다. DNS를 사용하려면 DNS의 서버 IP주소를 등록세켜 주어야 하는데, 3개까지 가능합니다. 다음은 일반적인 resolve.conf파일입니다.

search honey
nameserver 210.127.236.93

search는 검색할 도메인 주소를 입력하면 되는데 사용자가 속한 Domain의 ID를 써 넣으면 됩니다. nameserver는 제가 속해있는 도메인인 linix.co.kr를 관장하는 DNS서버의 IP주소를 적어 넣은 것입니다.

 

RPM으로 패키지 관리하기

레드헷 리눅스의 사용자가 크게 증가하게 된 한가지 이유는 아마도 RPM이 아닌가 싶습니다.

RPM(RedHat Package Manager)은 기존의 리눅스 배포판들보다 훨씬 편리해진 설치환경을 가지고 있었습니다. 기존의 리눅스 배포판들은 단순히 tar 포맷으로 묶여 있는 실행 파일을 복사하거나 소스 코드를 컴파일하는 방법을 사용해서 필요한 프로그램을 설치하거나 삭제하는 방법을 사용했습니다.

그래서 시스템에는 설치된 프로그램의 수가 많아지고, 특정한 버전의 라이브러리에 프로그램이 의존할 경우, 사용자 자신이 프로그램들을 유지하고 관리하는데 많은 문제가 있었습니다. 그리고 이미 설치되어 있던 프로그램이더라도 실수로 다시 설치하면 기존의 프로그램이 생성한 파일들이 모두 삭제되는 일이 발생할 수도 있었습니다.
또한 하나의 프로그램을 삭제하기 위해서는 그 프로그램에 관계된 프로그램과 관련 파일들을 사용자가 모두 알고 있어야만 완전히 삭제할 수 있다는 맹점을 가지고 있었습니다.

이처럼 설치하고자 하는 프로그램을 찾는 것부터 설치하는 것 까지 어려움 투성이었습니다. 하지만 레드햇리눅스에서는 RPM패키지와 X윈도의 제어판을 이용해 쉽게 프로그램을 설치할 수 있습니다. RPM은 레드햇 사에서 만든 패키지 관리 도구로 리눅스 시스템을 패키지 형식으로 관리할 수 있게 해주는 관리 도구입니다.

RPM은 누구나 사용할 수 있는 개방된 패키징시스템으로 만들어져 있으며, 디스트리뷰션을 인스톨할 때는 물론, 소프트웨어를 인스톨할 때나 버전업, uninstall 할때에도 많은 도움이 됩니다.
RPM의 특징은 특정한 기능을 가진 일련의 파일과 프로그램들을 묶어 쉽게 설치할 수 있게 해 줍니다.

뿐만 아니라, RPM에서는 각 패키지가 어떤 이름의 파일을 어느 디렉토리에 인스톨하였는지, 그 패키지를 이용하기 위해서는 어떤 파일이 필요한지에 대한 정보를 관리하고 있습니다. 예를 들면 다른 패키지가 이용하는 라이브러리를 가진 패키지를 언인스톨할 수 없습니다.

1. RPM 파일명 분석하기

RPM 패키지 파일에는 파일이름이 '.src.rpm '으로 끝나는 소스패키지와 '.i386.rpm'이나 '.noarch.rpm' 등으로 끝나는 바이너리 패키지로 구별할 수 있습니다. 소스 패키지는 프로그램 소스파일 등이 포함된 패키지로, 바이너리 패키지를 작성하기 위해 사용합니다. 한편, 바이너리 패키지에는 컴파일, 링크 완료 실행파일이 포함되어 있어, 이것을 인스톨하면 일일이 소스파일을 컴파일하지 않고, 소프트웨어를 실행할 수 있습니다.

RPM 파일은 크게 4개의 부분으로 이루어져 있습니다. 먼저 (패키지이름), (패키지버전), (배포판에서 가지는 자체 버전), (설치될 시스템)이 RPM 앞에 붙여지게 되어 있습니다.
다음의 RPM파일명을 분석해 보도록 하겠습니다.

myth-1.2.3-4.i386.rpm

RPM 패키지 이름에서 - 는 각 필드를 구분하는 것입니다.
우선, 맨 앞부분의 myth 는 패키지의 명칭으로 가장 기본적인 것입니다.
패키지이름은 인스톨 후 조회나 언인스톨할 때 사용되는 이름입니다. 패키지 명칭에서 - 는 각 필드를 구분하려는 것으로, 이를 없애면 안됩니다.
두번째 1.2.3 은 패키지의 버전입니다. 이것은 프로그램 버전과 일치하는 것입니다.
세번째 의 4 는 패키지의 릴리즈 번호입니다.
즉 배포판에서 가지는 자체 버전으로, 이 패키지가 몇번째로 만들어진 것인지를 나타냅니다. 똑같은 프로그램으로 버전이 같다고 해도 이전에 만든 패키지를 다시 재 패키징을 하였다면, 뭔가 변화가 있고 릴리즈 번호를 올리게 됩니다.
네번째의 i386 은 어떤 시스템에서 쓰이는것인지를 나타내는 것입니다.
i386 이라면 당연히 PC 계열을 나타내는 것이고 sparc 이라면 스팍 리눅스용, alpha 라면 알파 리눅스용일것입니다. (현재 레드햇은 이 세개의 시스템용으로 나옵니다.) 이 네번째 필드가 src 라고 적힌것이 있는데 그것은 소스 RPM 입니다. 바이너리 패키지를 만들기 위해 필요한것입니다.
마지막의 rpm은 소위 말하는 확장자입니다. RPM 패키지라는것을 나타내 줍니다.
버전번호와 릴리즈번호가 독립되어 있으므로, 새로운 패키지가 나왔을 때도 소프트웨어 자체가 버전업된 것인지 아니면 패키지 구성만 변한 것인지 파일명으로 알 수 있습니다.
또 버전번호나 릴리즈번호에는 숫자 이외에 문자를 포함해도 됩니다.

2. RPM 명령으로 설치하기

1. 파일 설치하기
RPM 패키지의 설치와 제거는 아주 간단합니다. 보통 다음과 같은 식을 입력하면 설치가 됩니다.

rpm -i (rpm패키지파일이름)

위와 같은 방식을 응용하여, 설치되는 모습을 확인하고자 할 때는 다음과 같은 명령어를 이용하면 됩니다.

rpm -ivh (rpm패키지파일이름)

이와 같이 입력하면, 설치 되는 모습이 화면상에 # 마크로 표시 될것입니다.
하지만, RPM 으로 패키지를 설치할 때는 사실 위의 명령보다는 -Uvh 옵션을 사용하는 습관을 익히는것이 좋습니다.

rpm -Uvh (rpm패키지파일이름)

이 명령을 사용한다면, rpm은 이 패키지의 이전 버전이 설치 되었는지를 보고, 이미 설치가 되어 있다면 업그레이드를 할 것입니다.
그냥 -i 또는 -ivh로 설치한다면 이전 버전의 같은 패키지에 대한 정보는 사라지지 않을 것이고, 또한 이전의 설정파일도 백업되지 않습니다. 따라서, 되도록 rpm - Uvh를 사용할 것을 권장합니다.

2. 설치 위치 알아보기
설치를 한 후, 파일들이 어느 디렉토리에 있는지 알아야 한다거나, 혹은 자신의 컴퓨터에 현재 어떠한 프로그램이 설치되어 있는지 알고 싶다면 다음과 같은 명령을 사용하면 됩니다.

rpm -qa | more

'-q' 옵션은 그 파일에 대한 정보를 알아내기위한 옵션이고, 'a' 옵션은 모든 파일에 대해 적용하라는 의미입니다. 이 명령을 수행하면 자신의 컴퓨터에 설치되어 있는 모든 프로그램의 목록이 페이지 단위로 나열되어 나옵니다.

3. 간략한 정보 보기

하나의 패키지에 대한 간략한 정보를 알아보려면 다음과 같이 입력하면 됩니다. 이렇게 하면, 패키지에 대한 설명이 나타납니다.

rpm -qi (rpm패키지파일이름)


4. 파일 정보 보기

텍스트가 길게 표시되는데 파일명과 버전번호, 패키징한 사람, 프로그램에 대한 설명 등이 나옵니다. 이번에는 이 프로그램의 파일에 대한 상세한 정보를 알아보기 위해 다음과 같이 입력해 봅시다.

rpm -ql (rpm패키지파일이름)

그러면 이 패키지에 포함된 파일들이 어떠한 것이 있는지 내용을 자세하게 보여줄 것입니다.


5. 프로그램 제거하기

파일에 대한 권한과 어느 디렉토리에 있는지에 대한 정보가 포함됩니다. 마지막으로 설치한 프로그램을 제거해 보겠습니다.

rpm -e (rpm패키지 이름)

위와 같이 입력하면 쉽게 제거됩니다. 물론 프로그램을 제거할 때는 패키지의 의존성에 주의해서 신중히 생각한 후 행동에 옮겨야 할 것입니다.
위에서 사용된 명령어 외의 명령어를 설명하자면 다음과 같습니다.

rpm -qf (rpm파일이름) 특정한 파일이 포함되어 있는 패키지를 확인해 볼 때
rpm -V (rpm패키지 이름) 시스템에 설치된 패키지를 검증할 때
rpm -Va 시스템에 설치된 패키지들을 모두 검증할 때
(실수로 몇 가지 파일들을 지웠는데, 어느 것을 지웠는지 확신할 수 없다. 전체 시스템을 점검해 보고 어떠한 파일이 빠져 있는지 살필수가 있다.)
rpm -Vp (rpm패키지파일이름) 시스템에 설치할 때 사용한 RPM 파일을 이용해서 해당 패키지를 검증할 때

* * 위의 과정 외에 rpm 실행모드에 관한 명령어는 다음과 같습니다

rpm --help 도움말을 출력하고자 할 때
rpm--showrc 설정사항을 출력하고자 할 때
rpm--version 버전을 출력하고자 할 때

* * 그외 몇가지 부수적인 옵션이 있는데 여기서 설명하도록 하겠습니다.
이 부수적인 옵션들은 설치 또는 업그레이드 또는 제거 옵션뒤에 붙이게 됩니다.
(제거 옵션에서는 --nodeps , --no***s , --test 만을 사용합니다.)

예) rpm -e --nodeps (삭제할패키지이름)

--nodeps : 의존성을 무시하고 설치한다.
가장 많이 겪게 되는 문제로 RPM 에서는 어떠한 패키지가 깔려 있지 않으면, 그것에 영향을 받는 패키지는 설치하지 못하는 경우가 있다.
이 때 사용하는것이 --nodeps 이다.

--force : 강제로 설치 하는 것이다.
패키지 설치시 현재 패키지에 포함된 파일이 이미 다른 패키지에 의해 설치 되어 있을때, 이들이 충돌을 할 경우 에러가 발생한다. 하지만, 이 옵션으로 설치가 가능하다. 이 옵션은 이미 있는 파일은 덮어 쓰지 않는다. 이미 있는 파일마저 덮어 쓰려면 --replcaefiles를 사용하면 된다.

--oldpackage : 만약 업그레이 할 패키지가 이미 설치되어 있는 패키지보다 오래된 버전일 경우에는 업그레이드를 진행시킬 수 없다. 그래도 불가피하게 설치를 진행시켜야 할 경우, 이옵션을 이용하여 강제로 설치할 수 있다.

--percent : 패키지 파일을 설치하는것을 퍼센트로 표시해준다.

--replacepkgs : 이미 같은 패키지가 설치되 있더라도 다시 설치한다.

--replacefiles : 이미 설치된 다른 패키지의 파일을 덮어 쓰면서라도 설치한다.

--root : 디렉토리 와 디렉토리를 마치 / 처럼 생각하고 설치를 한다.
즉 "--root /tmp" 라고 한다면 /tmp 가 / 인 것으로 생각하고 그 이하로 설치하게 될것이다. 한가지 문제가 있다면 이 명령을 사용하면 RPM 정보를 기록하는 파일을 지정한 디렉토리 및 에서 찾게 된다.

--test : 패키지를 실제로 설치하지는 않고 충돌이나 의존성 문제가 있는지만을 검사한다.

--no***s : 스크립트를 실행하지 않는다.
(레드햇 패키지에는 4개의 스크립트가 들어간다. 설치 전후, 제거 전후 이렇게 4개이다.)

--excludedocs : 문서 파일은 설치 하지 않는다

댓글