최고의 교사-심승현 선생님편

리눅스 명령어 모음

2009.09.09 13:55

영구만세 조회 수:8484

리눅스 명령어 모음 리눅스 명령어 모음.hwp

- 6~7년 전 어디선가 내려받은 것 같은데, 출처가 생각나지 않습니다. 혹 원작자가 있으시면 너그러이 이해하시고 댓글로 달아주시면 원작자 표시 및 원작으로 링크를 걸어드리겠습니다.^^

 

1. arch
arch 는 시스템의 CPU 정보를 출력한다. 예를 들어 펜티엄머신에서 arch를 입력하면 i586 이라고 출력되고 펜티엄2 머신에서 입력하면 i686 이라고 출력된다.

 

2. cat
파일을 붙이거나 표준 출력으로 보낸다. 파일을 명시하지 않으면 입력은 표준 입력(보통 키보드)에서 받는다. 표준 출력은 일반적으로 모니터로 지정되는데 셸의 리다이렉션 기능을 이용해서 다양하게 활용할 수 있다. 형식 cat [filename] [rafale@kulsnet rafale]$ cat command.txt

 

3. chmod, chgrp, chown
파일의 접근 권한을 변경한다. 리눅스에서는 파일에 대한 속성이 소유자(user)와 그가 속한 그룹(group), 그 외의 사람들(others)에 대해서 정해진다. command.txt 파일에 대한 속성은 다음과 같다. -rw-r--r-- 1 rafale kuls98 146 Nov 19 18:20 command.txt 앞에서부터 파일의 소유자(user), 그룹(group), 그 밖의 사람들(others)을 나타낸다. rw- 이라는 것은 읽기(read), 쓰기(write)가 가능하고, 마지막에 - 는 실행가능성을 의미한다. command.txt 파일은 텍스트이므로 실행은 안 된다. 실행파일이었다면 rwx 로 나타날 것이다. 그 다음은 그룹에 대한 설명이다. r-- 임으로 읽기만 가능하다. 마지막은 그 외 모든 사람(others)을 뜻하고, r-- 임으로 역시 읽기만 가능하다. chmod 를 이용해서 이런 권한을 바꿔줄 수 있다.
형식 chomd -옵션 대상파일 옵션을 줄 때는 두 가지 방법이 있다. 숫자로 주는 방법과 직접 인수를 써주는 방법이 있다. 먼저 숫자로 줄 때를 보자. 이때는

[rafale@kuls rafale]$ chmod 755 command.txt 이렇게 준다. 숫자들을 보자. 읽기는 4로, 쓰기는 2로, 실행은 1로 표시한다. 그러니 755는 (4+2+1) (4+1) (4+1)을 의미한다. 4와 2, 1의 조합으로 나타내는 숫자들은 서로 중복되지 않으므로 고유한 의미를 가진다. 두 번째 방법으로 직접 인수를 서주는 방법이다. 예를 들면

[rafale@kuls rafale]$ chmod u+rwx,g-rwx,o+rwx command.txt 이렇게 주면 된다. u 는 User, g 는 Group, o 는 Others를 뜻한다. 각 인수들은 쉼표 ',' 로 구분하며 변경하고싶지 않은 것은 안 써주어도 무방하다. '+' 표시는 권한의 추가를 의미하며, '-' 표시는 권한의 제거를 의미한다. 위의 예는 유저는 rwx, 그룹은 ---, others 는 rwx의 권한을 주는 경우이다. 보통의 경우에 쓰이는 permision 은 755 이다. 유저 이외에는 읽기와 실행만 가능하게 하는 것이다. 홈페이지가 있는 경우에는 홈페이지 디렉토리에 others 에게 반드시 5(4+1, read & write) 이상의 권한을 주어야 한다. 그렇지 않고 4(read) 만 주면 디렉토리를 열지 못한다. chgrp 와 chown 은 그룹과 소유자를 바꿔주는 명령어이다. chgrp 는 단지 그룹만을 바꾸지만 chown 은 소유자와 그룹 모두를 바꿀 수 있다. 이 명령어는 루트만이 실행할 수 있다. 다음예는 Guns'N Roses 의 November Rain 뮤직비디오를 pink 에게 허가해 주려는 과정이다.

[rafale@kuls1 rafale]$ chown pink.kuls98 novemb .mpe <- 이렇게 하고 엔터를 치면 chown: novemb .mpe: 명령이 허용되지 않음 <- 이렇게 에러가 뜬다.

에러가 뜬다. 이것은 시스템의 보안성을 높이기 위한 것으로 UNIX 도 마찬가지이다.

 

4. cp
cp 명령어는 파일을 현재의 디렉토리나 다른 디렉토리로부터 불러 들여와 현재의 위치나 다른 디렉토리에 복사하게 해주는 명령어이다. 파일이 현재의 경로에 있다면 생략 가능하다. 다음의 예를 보자. kuls.hwp는 동아리 사람들의 연락처 파일이다.

형식 cp -옵션 원본파일 대상파일 [rafale@kulsnet rafale]$ cp kuls.hwp address.hwp ← address.hwp 파일이 생긴다. [rafale@kulsnet rafale]$ cp address.hwp /home/rafale/public_html/

옵션 -r 하위 디렉토리까지 복사 ex) cp -r public_html/ temp/ -i 대상파일 존재시 물어봄. 래드햇기반의 리눅스에서는 기본적으로 alias되어있다. -f 대상파일 존재시 덮어씀 ex) cp -f kuls.bak address.hwp

 

5. df
마운트 되어있는 파티션의 사용 가능한 디스크 량을 보여준다. 옵션 -h 사람이 읽기 편한 단위로 보여준다. ex) 1K 234M 2G -H 용량 계산시 1024 가 아닌 100으로 계산해서 보여준다.

 

6. dmesg
시스템의 부팅시 나오는 메시지를 부팅후 확인할 때 쓰는 명령어이다. 잘 모르는 말들이 대부분이긴 하지만 이 메시지들을 통해 시스템에 문제가 생길 경우, 문제를 해결할 수 있는 정보를 얻을 수 있다. 레드헷 기반의 리눅스 배포판에서는 /var/log/dmesg 파일로 부팅 시마다 저장된다.

 

7. ps
시스템에서 돌고있는 프로세스를 보여준다. 이 명령어에 대한 옵션은 상당히 많으며 가장 일반적으로 ps aux 같은 형식이 쓰인다. 이 형식은 다른 사용자의 프로세스와 터미널에 종속되지 않은 프로세스들을 보여준다. 콘솔에서 작업중 시스템이 죽게되면 다른 콘솔에서 ps 명령어를 통해 멈춘 프로세스를 확인한 후 kill 명령어를 이용해 프로세스를 죽일 수 있다. 자세한 옵션은 man ps를 통해 알아보기 바란다.

 

8. kill
프로세스를 강제 종료시키는 명령이다. 자신이 생성한 프로세스만 종료할 수 있으며, 루트는 모두 다 죽일 수 있다. ps 명령어로 프로세스의 ID(PID)를 확인한 후 kill -PID 하면 된다. 일반적인 사용법은 kill -Signal PID 이다. kill -PID 로는 죽지 않는 프로세스들이 많다. 이럴 때는 signal 에 9를 주면 된다. 시그널 9는 SIGKILL 로써 어떠한 프로세스라도 강제로 종료하게 된다. 비슷한 명령어로 killall 이 있다. 이것은 PID number 로 죽이는 것이 아니라, 인수 명으로 죽이게 된다. 한 예로 X-윈도우를 띄우다 X가 죽게 되어서 콘솔에서 프로세스를 죽일 때 kill 명령어로 X 에 관한 것을 모두 죽이려면 참 피곤하다. 이때 killall -9 X 하게되면 X 에 관한 프로세스들이 모두 죽게된다. 단, X 상태에서 자신을 죽이지는 못한다.

 

9. ln
파일의 링크를 만들거나 같은 파일이 다른 이름을 갖게 하고자 할 때 쓰인다.

형식 ln -옵션 원본대상 링크이름

링크에는 하드링크와 심볼릭 링크가 있다. 하드링크는 같은 내용, 같은 크기의 파일이 생기는 것이고, 심볼릭 링크는 작은 크기의 링크파일이 생긴다. 하드링크를 통해 링크를 만드는 것이 cp 명령어를 통해 만든 것과 차이가 없어 보이지만 링크이므로 하나의 내용이 변경되면 다른 파일의 내용도 다라서 바뀌게 된다. 또 여러개의 링크를 만들었을 경우에는 모두 다 지워줘야만 파일을 완전히 삭제 할 수 있다. 심볼릭 링크는 대상의 위치만을 가지기 때문에 그 자체에는 내용이 없다. 그러므로 대상 파일을 삭제하게 되면 심볼릭 링크들은 아무 의미가 없게 된다. 어느것이 좋고 나쁘고는 없다. 하드링크는 디스크의 사용량을 증가시키는 단점이 있고, 심볼릭 링크는 대상의 삭제시 엑세스가 불가능하다는 단점이 있다. 심볼릭 링크를 할 때는 옵션에 -s를 주면 되고 하드링크는 아무 옵션을 주지 않으면 된다. 가장 흔하게 쓰이는 예로 CD-ROM의 마운트 포인트를 링크 하는 것이다. ln -s /mnt/cdrom /cdrom 이렇게 하면 CD-ROM을 엑세스 할 때 cd /mnt/cdrom 할 필요 없이 cd /cdrom 하면 된다. 또 많은 그림파일을 Backgrounds 디렉토리에 복사 할 필요 없이 링크를 만들어주면 된다.

 

10. ls
ls 는 디렉토리의 내용을 보여주는 명령어이다. 화면에 나타나는 정보들 중에 '@'는 심볼릭 링크를 표시한다. ls 에 주는 옵션으로는 -a 숨긴 파일도 표시해준다. '.'으로 시작되는 파일은 숨긴 파일이다. ex) .bashrc -h human 사람이 읽기 편한 단위로 크기 표시 ex) 1K, 234M, 2G -l 긴 형식으로 자세하게 정보를 표시해 준다. -R 하위 디렉토리의 내용가지 모두 보여준다.

일반적으로 ls 와 ls -l, ls -al 의 형식이 많이 쓰인다. 더 자세한 옵션은 man ls 로 알아보길 바란다. 알짜 배포판에서는 l 은 'ls -l'로, ll 은 'ls -al'로 alias 되어있다.

 

11. mkdir, rmdir
mkdir 은 디렉토리를 만들 때 쓰이는 명령어이다. 명령어 뒤에 원하는 디렉토리 이름을 써주면 된다. 여러 개의 디렉토리를 동시에 만들 수도 있다. 예를 들면 'mkdir A B C D' 해주면 A B C D 네게의 디렉토리가 동시에 생긴다. 옵션은 man 페이지를 통해 알아 보라. rmdir 은 디렉토리를 삭제하는 명령어이다. 단 비어있지않는 디렉토리는 지울 수 없다. 비어있지않는 디렉토리를 지우기 위해선 'rm -rf 디렉토리명' 하면 된다. rm 명령어는 뒤에 다룬다.

 

12. mv
mv 명령어는 파일을 이동한다. 복사 명령어인 cp 와 비슷하나 cp 와는 다르게 원본파일을 남기지 않는다. 도스에서는 rename 이라는 명령어를 이용하여 파일이름을 바꾸지만 리눅스는 mv 명령어를 이용하여 파일이름을 변경한다.

형식 mv -옵션 원본파일 대상파일 [rafale@kulsnet rafale]$ mv kuls.hwp KULS.hwp ← kuls.hwp 파일은 없어지고 KULS.hwp파일이 생긴다.

옵션 -i 대상파일 존재시 물어봄. 래드햇기반의 리눅스에서는 기본적으로 alias되어있다. -f 대상파일 존재시 덮어씀 ex) mv -f KULS.hwp address.hwp

 

13. rm
파일이나 디렉토리를 지울 때 쓰는 명령이다. 형식 rm -옵션 파일이나 디렉토리명

옵션 -f Force 삭제시 삭제여부를 묻지 않는다 -r 디렉토리를 지울 때 하위구조까지 모두 삭제한다 -i 삭제시 확인 메시지를 띄운다. 래드햇 기반의 배포판에서는 -i 가 기본적으로 alias되어있다. 리눅스에서는 삭제된 파일의 복구가 불가능하다. 윈도우는 휴지통에서 삭제되었다하더라도 유틸리티등을 통해서 복구가 가능하지만 리눅스나 유닉스에서는 불가능하다고 보면 된다.

 

14. su
SuperUser 의 약자로 루트를 의미한다. 이 명령어는 다른 사용자 계정으로 쉘을 사용할 수 있게 해준다. 예를 들어

[rafale@kuls rafale]$ su - pink Password: ******** ← 실제로는 '****' 에 아무 것도 나타나지 않는다 [pink@kuls pink]$ su 뒤에 아무인수도 주지 않을 경우엔 superuser, 즉 루트로 로그인하게 해 준다. 텔넷으로 컴퓨터에 접속시 루트로는 접속이 안 된다. 그러므로 일반사용자로 로그인해서 su 를 이용해서 루트로 바꿔주어야 한다.

15. cal
유용한 명령어로 달력을 보여준다. 달력보러가기 귀찮을 때 사용하면 아주 좋다. 그냥 입력하면 된다. 우리나라달력은 보통 월요일부터 표시하므로 -m 옵션을 주면 편할 것이다. -m 월요일을 첫날로 한다. -j 줄리안식으로 표시해준다. 1월 1일로부터의 날수를 표시 -y 이번년도의 달력을 표시

 

16. 시스템 종료
시스템을 종료하는 명령어로는 halt 와 reboot 가 있다. 리눅스나 유닉스, NT같은 다중사용자 운영체제는 파일의 변경사항을 그때 그때 기록하지않고 메모리에 가지고 있다 필요할때 기록함으로써 시스템의 효율을 높인다. 그런데 이렇게 저장되지않는 데이터가 메모리에 떠있는상태에서 컴퓨터를 끄게되면 시스템에 심각한 문제를 주게된다. 물론 컴퓨터가 다시 켜질 때 에러를 정정해주지만 이 역시 100% 믿을 수는 없다. 그러니 안전하게 종료명령어로 끄는 습관을 들이자. 방법은 아주 간단하다.

[rafale@kuls rafale]$ halt ← [rafale@kuls rafale]$ reboot ← [rafale@kuls rafale]$ shutdown now ← 곧장 시스템 종료 [rafale@kuls rafale]$ shutdown -h ← [rafale@kuls rafale]$ shutdown -r ← [rafale@kuls rafale]$ shutdown ←

이렇게 하면 된다. halt 명령어는 루트만이 행할수 있는데, 루트가 아닐경우에는 패스워드를 물어본다. 이때 루트패스워드를 입력하면 컴퓨터가 종료될 준비를 한다.

 

17. clear
디스플레이를 클리어한다. MS-DOS 의 cls 와 같은 기능으로 보면 된다.

 

18. du
Disk Usage 로 디스크의 사용량을 보여준다. 명령어를 입력한 위치로부터 하위 구조들의 사용량을 보여준다.

옵션 -a all 모든파일에 대해서 정보를 출력한다 -l 하드링크된 파일의 크기도 여러번 계산한다 -h human-readable 사람이 읽기편하게 출력 -s summarize 합계정보만 출력한다. 일반적으로 파일이 많기 때문에 -s 옵션을 주는 것이 읽기에 편하다 -x 다른 파일시스템은 건너뛴다 -S 서브디렉토리의 크기는 포함하지 않는다

 

19. finger
사용자의 정보를 출력한다. finger rafale 하면 rafale의 정보를 보여준다. finger @kuls1.korea.ac.kr 하면 kuls1 에 로그인 해있는 사용자들을 보여준다.

 

20. man
처음부터 언급한 man 이라는 것은 manual 의 약자이다. 각종 명령어들의 도움말을 보는 명령어정도로 이해하면 쉬울 듯 싶다. 맨페이지 말고도 info 나 HOW-TO 문서들도 많이 있다.

 

21. write
로그인해있는 사용자들에게 간단한 메세지를 보내거나 이야기 할 때 사용한다.

write user [ttyname] tty name 은 터미널이나 콘솔의 번호를 넣으면 된다. 넣치않으면 적당히 알아서 들어간다. X 환경에서는 보통 터미널을 여러개 열고 작업을 하므로 ps 명령어를 통해 상대방의 터미널이나 콘솔의 번호를 확인하고 적당히 메세지를 보내본다. 예를들면,

[rafale@kuls1 rafale]$ write pink pts/3 ← 시스템에서 4번째 열린 터미널에서 작업

메시지를 끝낼때는 Ctrl + C를 눌러서 EOF 를 보내게 되면 끝난다. 작업중 상대방의 메세지로 화면이 지저분 해질 때는 Ctrl + L 을하게되면 화면에서 메세지가 사라진다. 상대방의 메세지를 거부하고 싶을때는

[rafale@kuls rafale]$ mesg n 하면된다. 다시 메세지를 받고 싶을때는 mesg y를 치면 된다. mesg 를 치면

[rafale@kuls rafale]$ mesg is n 이렇게 현재 상태가 나타난다.

 

22. file
파일의 종류를 알려준다. 윈도우에서처럼 아이콘이 뜨는것이 아니기 때문에 무슨 파일인지 알기 힘든 경우가 많다. 또 패키지 파일이 이름이 변경 되었거나 하는경우에도 무슨 파일인지 알기 힘들다. 이럴 경우에 file 명령어를 쓰면 파일의 종류와 페키지 파일의 경우에는 버전까지도 알려준다. 자세한 옵션은 맨페이지를 활욜하길 바란다.

[rafale@kuls rafale]$ file novemb .mpe novemb .mpe: MPEG system stream data [rafale@kuls rafale]$ file cookie.txt cookie.txt: ASCII text

 

<파일 퍼미션>


리눅스같은 유닉스계열 운영체제는 여러사람이 같이 쓰는 멀티유저운영체제이므로 보안상의 이유로 다른 사람이 자기 자신의 파일을 읽거나 파일에 다른 내용을 기록하는 것을 막을 수 있습니다. 이런 걸 파일 퍼미션(File Permission) 이라고 하는데 퍼미션을 변경 하기 위한 명령어가 chmod입니다. 이장에선 파일퍼미션에 대해 간략히 알아보고 chmod도 어떻게 퍼미션을 변경시키는지 알아보겠습니다.


1. 퍼미션 설명
일단 현재 디렉토리에서 "ls -l"해보시죠. 나타난 결과에서 제일 왼쪽을 보시면 다음과 같은 것을 보실 수 있을 겁니다.

1 2 3 4
-/---/---/---

1이 -로 되어 있으면 일반 파일이고 d면 디렉토리 l이면 심볼릭링크를 의미합니다. 하드링크는 어떻게 되냐구요? 하드링크는 일반파일로 처리됩니다. 즉 -로 표시됩 니다.
한번 실행시켜보지요. test1이 원본 test2는 심볼릭링크 test3는 하드링크파일입 니다.

[kang@kuie /tmp]$ ls -l
total 0
-rw-------   1 root     root            0 May  1 19:16 acout.a07952
-rw-------   1 root     root            0 May  1 19:17 acout.a07999
-rw-------   1 root     root            0 May  1 19:18 acout.a08393
-rw-------   1 root     root            0 May  1 19:18 acout.a08616
-rw-rw-r--   2 kang     kang            0 May  4 00:25 test1
lrwxrwxrwx   1 kang     kang            5 May  4 00:26 test2 -> test1
-rw-rw-r--   2 kang     kang            0 May  4 00:25 test3
[kang@kuie /tmp]$

2,3,4는 뭘까요? 바로 퍼미션에 대한 내용입니다. 2는 파일 소유자에 대한 퍼미션, 3은 파일소유그룹에 대한 퍼미션, 4는 그 외 사람들에 대한 퍼미션입니다. 위에서 test1을 보시면 -rw-rw-r--게 되어 있죠? 해석하면 일반파일인데 파일소유자인 kang이 읽고 쓸 수 있고, 파일소유그룹인 kang도 읽고 쓸 수 있지만 다른 사람은 읽기만 할 수 있다는 것을 의미합니다. (위에서 kang, root라는 단어로 누가 그 파일을 소유하고 있는지 알아낼 수 있습 니다.)
r,w,x라는 기호에 대해 설명하면 r은 read, w는 write, x는 excution을 의미합니다. 만약 -rwxrwxr-x라고 써 있었다면 어떤 의미일까요? 아 설명하기 귀찮군요. 알아서 생각해요.

 

2. 퍼미션 변경하기
퍼미션 변경하는 방법에는 심볼릭모드로 변경하는 방법과 절대모드로 변경하는 방법이 있습니다. 변경할 때는 위에서 말한 chmod라는 명령을 사용합니다.

심볼릭모드
chmod <users> <operator> <permission> <filename>

users
u 파일소유자
g 파일소유그룹
o 그외 다른 사람들
a 모든 사람들

operator
+ 허용
- 제거
= 다음에 나오는 것만 허용하고 나머지는 제거

permission
r
w 위에서 설명했습니다.
x

위와 같은 형식으로 명령을 내립니다. 간단하게 한번 해보죠.

[kang@kuie /tmp]$ chmod o-r test1
[kang@kuie /tmp]$ ls -l
total 0
-rw-------   1 root     root            0 May  1 19:16 acout.a07952
-rw-------   1 root     root            0 May  1 19:17 acout.a07999
-rw-------   1 root     root            0 May  1 19:18 acout.a08393
-rw-------   1 root     root            0 May  1 19:18 acout.a08616
-rw-rw----   2 kang     kang            0 May  4 00:25 test1
lrwxrwxrwx   1 kang     kang            5 May  4 00:26 test2 -> test1
-rw-rw----   2 kang     kang            0 May  4 00:25 test3
[kang@kuie /tmp]$

test1에서 파일 소유자도 파일 소유 그룹도 아닌 다른 사람들이 읽을 수 있는 권한 을 제거하는 명령을 내렸습니다. 결과를 보면 test1의 퍼미션이 -rw-rw----로 바뀌었음을 알 수 있습니다. 하드링크된 test3는 같은 파일이니 역시 test1과 같군요. 그런데 test2는 다르군요. 처음과 같이 계속 lrwxrwxrwx를 유지하고 있네요. 심볼릭링크에 대한 퍼미션은 나타나는 기호와 상관없이 원본파일의 퍼미션을 따릅니다.

절대모드

파일소유자에 대한 허용값
400 읽기 허용
200 쓰기 허용
100 실행 허용

파일소유그룹에 대한 허용값
40 읽기 허용
20 쓰기 허용
10 실행 허용

그 외 다른 사람들에 대한 허용값
4
2 안써도 짐작하죠?
1

해당되는 숫자의 합으로 접근허용을 변경합니다. 역시 예를 한번 들어보죠.

[kang@kuie /tmp]$ chmod 755 test1
[kang@kuie /tmp]$ ls -l
total 0
-rw-------   1 root     root            0 May  1 19:16 acout.a07952
-rw-------   1 root     root            0 May  1 19:17 acout.a07999
-rw-------   1 root     root            0 May  1 19:18 acout.a08393
-rw-------   1 root     root            0 May  1 19:18 acout.a08616
-rwxr-xr-x   2 kang     kang            0 May  4 00:25 test1*
lrwxrwxrwx   1 kang     kang            5 May  4 00:26 test2 -> test1*
-rwxr-xr-x   2 kang     kang            0 May  4 00:25 test3*
[kang@kuie /tmp]$

755는 400+200+100+40+10+4+1을 의미합니다. 그럼 파일퍼미션이 어떻게 변경되었는지 짐작하겠지요?

두 모드의 차이점은 심볼릭모드는 원하는 부분만 추가 삭제가 가능하지만, 절대모드는 전체를 다 고려해서 바꾼다는 점이지요.

 


  • 참특수교육
  • 심돌이네
  • 특수교육 자료실
  • 우분투
  • 커뮤니티
  • 차름


XE Login