'리눅스'에 해당되는 글 1건

  1. 2014.05.16 자주쓰는 리눅스 command

입사할때만해도 한겨울이었는데, 어느새 시간이 훌쩍 지나가버려 날씨는 점점 여름을 향해 달려가네요. :) 

기술적 포스팅은 잠시 접어두고, 이번 포스팅은 시스템에 접속하여 작업할때 자주 쓰는
리눅스 command에 대해 몇가지를 살펴보도록 하겠습니다.

리눅스기반의 서버에서 작업을 해본 경험이 많지 않아서 처음 시스템내 작업할때 굉장히 긴장되었습니다. 

혹시라도 내가 날린 명령어 한 개가 시스템을 다 죽일 수 도 있을것같은 기분이 들었지요. 
물론, 지금은 아무렇지 않게 command를 날리며 이리 저리 작업을 합니다만,
삭제 명령어를 사용할때는 두번, 세번 확인하곤 합니다.


그럼 다음의 command를 같이 보실까요?


$rm OPTION ] [file(s)/Directory]

소위 한번씩 들어봤을법한 악마의 명령어 

$rm -rf /* 
모든 하위 디렉토리 및 파일을 다 삭제하고 자기 자신까지 지워버며 시스템을 통째로 날린다는 그 무시무시함!! (**부장님께서는 실제로 해 보셨다고 하네요. @_@;;; 

위의 명령어에서 사용된 옵션을 보면 :

-r : 디렉토리를 재귀적으로 삭제.
-f: 존재하지 않는 파일이 있어도 에러를 보여주지 않음.

다음은 자주 쓰이는 옵션입니다.

-d : 디렉토리의 링크를 제거. 관리자 권한 필요함.
-i : 파일을 삭제해도 좋은지 확인.
-v : 로그를 표시.

사용 예를 한번 볼까요?

 $ rm delete_me.txt  

 // 파일 1개 삭제 

 $ rm multiple_file_*

 // multiple_file_로 시작하는 모든 파일 제거

 $ rm -r directory

 // directory라는 디렉토리를 삭제

전 시스템까지는 아니지만 이 rm을 잘못 날려서 한참 작업한 파일을 날려먹었었던 적이 있었더랬죠...

그런데 말입니다, 리눅스에서 작업을 할 때 rm만 주의해야하는게 아니었습니다.


$cp [ OPTION ] [SOURCE] [DESTINATION]

몇일전에 작업을 하다가 백업을 하려고 

$cp * /백업파일이 들어있는 폴더이름/. 

이렇게 명령어를 쳤어야 하는데,

$cp /백업파일이 들어있는 폴더이름/* .

이렇게 쓰는 바람에 모든 파일이 고치기 전으로 돌아가 버리는 웃지 못할 일이 벌어졌습니다.
엔터를 쳐 버린 나의 손가락을 탓을 하며 다시 파일작성을....하아.....ㅠㅠ 

그래서 옵션이 중요한 것입니다!!!

-a : 가능한 한 원 파일의 구조와 속성을 그대로 복사. 
-b : 복사할 때 덮어쓰게 되는 파일은 백업을 만듦. 
-f : 복사 위치에 존재하는 파일을 제거하고 다시 복사. 
-i : 복사 시 같은 이름의 파일이 존재한다면 덮어쓸 것인가 확인. 
-I : 하드 링크를 만듦. 
-P : 원본 파일의 소유자, 그룹, 권한, 시간 기록을 그대로 복사. 
-R , -r : 파일과 하위 디렉토리에 포함된 파일 모두를 복사. 
-s : 디렉토리가 아닌 파일의 심볼릭 링크를 만듦.
-u : 파일의 정보를 갱신. 
-x : 다른 파일 시스템인 하위 디렉토리는 무시. 


사용예는 다음과 같습니다.

 $cp -i file1 /test/.

// test 폴더 아래 file1 파일을 복사
// 이때 대상 폴더에 같은 파일이름이 존재하면 덮어쓸 것인지 확인

 $cp /test/* .

// test 폴더 아래의 모든 파일을 현재 디렉토리에 복사 


위의 두 개의 command는 사용할 때 항상 신중하고 조심해서 사용하는 명령어라면,
다음의 명령어들은 시스템을 검사하거나 파일을 확인할 때 유용한 command입니다.


$cat [OPTION] [file(s)]

파일의 내용을 표준 출력으로 내보내어, 파일내용을 알아보거나, 여러 파일을 하나의 파일로 출력하여 연결해줌.

 $cat file

// file내용을 표준출력으로 보여준다.

 $cat file1 file2 > onefile

// file1과 file2를 onefile로 합한다.


$df [OPTION] [file]

디스크 용량 및 남아있는 공간크기 확인

-h : 용량을 사람이 보기 쉬운 단위로 표시해준다. (1m를 1,048,576단위로 계산, h는human의 약자 )
-k : 용량을 킬로바이트 단위로 표시한다.

 $df -h

 Filesystem      Size   Used  Avail Capacity  iused   ifree %iused  Mounted on

 /dev/disk0s2   112Gi   76Gi   36Gi    68% 19926383 9485985   68%   /

 devfs          197Ki  197Ki    0Bi   100%      680       0  100%   /dev

 map -hosts       0Bi    0Bi    0Bi   100%        0       0  100%   /net

 map auto_home    0Bi    0Bi    0Bi   100%        0       0  100%   /home

 /dev/disk1s2   137Mi  126Mi   10Mi    93%    32361    2627   92%    


$du [OPTION] [file]

디렉토리나 파일의 용량 확인

-a : 디렉토리 이외의 파일에 대해서도 표시한다.
-l : 링크를 포함해서 계산한다.
-c : 모든 용량을 합을 표시한다.
-k : 용량을 KB단위로 표시한다.
-m : 용량을 MB단위로 표시한다.
-s : 지정한 파일이나 디렉토리만의 합계를 표시한다.
-S : 서브디렉토리를 포함해서 집계한다. 

 $du -csh ./Downloads/

 2.9G ./Downloads/

 2.9G total


$ifconfig [interface]

네트워크 인터페이스 설정

옵션없이 간단하게 자신의 ip 확인 가능.


  eth0

Link encap:Ethernet  HWaddr e0:3f:49:a3:b8:4e
inet addr:XXX.XXX.XXX.XXX  Bcast:XXX.XXX.XXX.XXX  Mask:255.255.255.0
inet6 addr: fe80::e23f:49ff:fea3:b84e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:5156295 errors:0 dropped:7395 overruns:0 frame:0
TX packets:7262660 errors:0 dropped:0 overruns:0 carrier:0
 collisions:0 txqueuelen:1000 
 RX bytes:1944698944 (1.9 GB)  TX bytes:9913942713 (9.9 GB)


$grep [OPTION
PATTERN [FILE...]

파일 중에서 어떠한 패턴을 검색, 결과물을 화면에 출력.

-c : 찾고자 패턴의 갯수만 표시


$head [OPTION] [file]

파일의 처음 n개의 내용을 보고자할 때 사용.

$tail [OPTION] [file]

파일의 마지막 n개의 내용을 보고자할 때 사용.

$history

작업했던 command 내용 불러오기.


$ps [OPTION]

 프로세서들의 상태를 점검.

-a : 다른 사용자들의 프로세서도 보여준다.
-u :
 각 프로세서의 사용자 이름과 시작 시간을 보여준다. 
-x : 
로그인 상태에 있는 동안 아직 완료되지 않은 프로세서들을 보여준다

 USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

 root         1  0.0  0.0  37208  6552 ?        Ss   15:47   0:01 /sbin/init

 root         2  0.0  0.0      0     0 ?        S    15:47   0:00 [kthreadd]

 root         3  0.0  0.0      0     0 ?        S    15:47   0:00 [ksoftirqd/0]

 root         5  0.0  0.0      0     0 ?        S<   15:47   0:00 [kworker/0:0H]

 root         7  0.2  0.0      0     0 ?        R    15:47   0:18 [rcu_sched]

 root         8  0.2  0.0      0     0 ?        S    15:47   0:17 [rcuos/0]

 root         9  0.0  0.0      0     0 ?        S    15:47   0:04 [rcuos/1]

 root        10  0.0  0.0      0     0 ?        S    15:47   0:02 [rcuos/2]

 root        11  0.0  0.0      0     0 ?        S    15:47   0:01 [rcuos/3]

 root        12  0.0  0.0      0     0 ?        S    15:47   0:00 [rcu_bh]

 root        13  0.0  0.0      0     0 ?        S    15:47   0:00 [rcuob/0]

 root        14  0.0  0.0      0     0 ?        S    15:47   0:00 [rcuob/1]

 root        15  0.0  0.0      0     0 ?        S    15:47   0:00 [rcuob/2]

 root        16  0.0  0.0      0     0 ?        S    15:47   0:00 [rcuob/3]

 root        17  0.0  0.0      0     0 ?        S    15:47   0:00 [migration/0]

 root        18  0.0  0.0      0     0 ?        S    15:47   0:00 [watchdog/0]

 root        19  0.0  0.0      0     0 ?        S    15:47   0:00 [watchdog/1]

  ...



$man [command]

주어진 명령이나 자원들의 매뉴얼을 출력

man 페이지를 이용하면 다양한 옵션을 사용할 수 있어서 원하는 결과물을 얻기 쉽게 해주기도 하기도 합니다. 그러므로 man 페이지는 가까이 하는 것이 좋겠지요? ^.^


앗! 그러고 보니 가장 중요한 서버에 접속하는 방법을 빠뜨렸군요!!

$ssh [-l login_name] userID@hostName

OpenSSH/SSH 클라이언트 (remote login 프로그램)

시스템에 접속하려면 위의 명령어로 시스템 서버에 접속을 요청하면 Password를 입력하라는 화면이 출력되고, 
userId에 할당된 Password를 넣으면 시스템에 접속시켜줍니다.

장시간 동안 작업을 하지 않게 되면 broken pipe로 접속이 끊기게 되므로,
작업을 하지 않을 때면 적절히 종료시켜주는 것도 참 중요하겠지요.



그렇게 어렵지 않으면서, 정말 자주 쓰이는 command에 대해 간단히 적어봤는데요, 
저는 
내일도 위의 command들을 이용하여 시스템 작업을 할 것 입니다.

간단하지만 그 능력을 가늠하기 힘든 리눅스 command. 더욱 더 노련한 리눅스 유저를 목표로 하며, 오늘 포스팅은 마칩니다. 



Posted by jjangAh