VPN 이란?

[ virtual private network]
우리말로 '가상사설망'이라고 이야기합니다.

 

원래 보안을 목적으로 할 때 인터넷망은 따로 구축되어야 합니다. 외부 네트워크에서 들어올 수 있는 '해킹'등을 차단하기 위해서입니다. 이를 인트라넷이라고 하고, 회사의 지사나 사업상 파트너들처럼 외부에서 승인한 사용자들이 접근하여 사용할 수 있는 확장된 사설 인트라넷을 '엑스트라넷'이라고 합니다.  하지만 이렇게 따로 인터넷망을 구축할 경우 그 비용(서버 및 인건비 등)은 당연히 비싸지고, 필요에 따라 가변적으로 사용하기가 어렵다는 단점이 발생합니다.

 

 

 

가상사설망(VPN)은  공중망을 사설망처럼 이용해 회선비용을 절감하게 위해서 쓰는 기업통신 서비스! 엄밀히 말하면 공중망이 사설망이 될 수 있도록 만들어 주는 그 중간단계를 포함하는 말이라고 할 수 있습니다.

 

 

 

 

 

 

인터넷망을 전용선처럼 사용할 수 있으려면 특수한 통신체계와 암호화기법이 필요한 데 VPN에 이를 제공하며, 공공의 인터넷망이지만 마치의 전용 네트워크로 기업내부의 본사와 지사간 전용망을 설치한 것 같은 효과를 볼 수 있습니다.

기업의 통신망과 인터넷서비스 제공자와 연결만 하면 되기 때문에 개별적으로 고가의 장비 (일테면 서버 같은...)나 전용 소프트웨어를 구입하고 관리할 필요가 없어, 전용선에 구축하는 것에 비해 20~80% 이상의 비용 절감효과를 얻을 수 있다고 합니다.

 

 

 

 

 

 

그 외에 가상으로 마치 사설망인 것처럼 쓰지만, 실제로는 공공 네트워크이므로  사용자의 이동성이 보장된다는 점이 또 다른 장점입니다. VPN 서비스에서 가장 중요한 점은 데이터를 공중망을 통해 보내고 받는 과정에서의 암호화 및 보안기술이라고 할 수 있겠죠?

망에 접속하는 사용자 인증과정도 중요한테, 계정으로 신분 확인을 하는 사용자 인증, IP주소로 확인하는 클라이언트 인증, 서비스 포트로 인증 과정을 거치는 세션 인증 등의 방식이 있습니다. VPN서비스는 자체적으로 보안기술을 계속 개발하기 어려운 일반 기업이 보안문제를 해결하는 데도 도움을 줍니다.

* 마이크로소프트, 3Com 등 몇몇 회사들이 PPTP(point-to-point tunneling protocol)라는 표준 프로토콜을 제안하였으며, 마이크로소프트는 이 프로토콜을 윈도우NT 서버에 내장시켰습니다.

 

 

    

 

 

최근에는 안드로이드나 iOS 기반의 모바일 기기에서의 접속을 지원과 보안을 지원하는 모바일 VPN(mobile VPN)으로 그 영역이 확장되고 있습니다. 모바일 VPN(Mobile VPN)은 모바일 기기와 서버간의 암호화를 지원하고, 모바일에서 접속할 수 있는 사이트를 제한할 수 있습니다. 모바일 VPN은 개인이 공공의 와이파이에 연결했을 때 단말기 내부이 정보를 보호하기 위한 중간적인 보안시스템으로도 활용할 수 있습니다. 외부에서 와이파이를 연결할 때 마음이 불안하신 분들은 VPN계열의 어플을 깔아보시는 것도 좋으실 듯 합니다!^^

[출처] [IT 용어] VPN 이란?|작성자 꽃잔

출처 - http://mwultong.blogspot.com/2006/12/c-argc-argv-main-function-parameter.html

각 함수에는 인수(파라미터)를 지정할 수 있습니다. 프로그램 본체인 main() 함수에도 당연히 인수를 지정할 수 있습니다. 메인 함수의 인수는, 운영체제에서 그 프로그램을 실행할 때 지정해 준 "옵션"입니다.

예를 들어 도스창(명령 프롬프트;CMD.EXE)에서

dir /?

이렇게 하면 dir 명령에 대한 도움말이 출력됩니다. 이때 "/?" 라는 문자열이 옵션이 되는 것입니다.



main(int argc, char* argv[])
에서

argc 는, 프로그램을 실행할 때 지정해 준 "명령행 옵션"의 "개수"가 저장되는 곳입니다.

argv 는, 프로그램을 실행할 때 지정해 준 "명령행 옵션의 문자열들"이 실제로 저장되는 배열입니다.


다음 예제를 보면 쉽습니다.

int argc, char* argv[] 사용법 예제; main() Option Example


소스 파일명: 0.cpp

#include <stdio.h>
#include <stdlib.h>  // exit()

int main(int argc, char* argv[]) {


  // 옵션 지정하지 않았을 때 에러 출력하고 종료
  if (argc == 1) {
    fputs("에러! 옵션을 입력하지 않으셨군요...\n", stderr);
    exit(1);
  }


  // 옵션 개수 출력
  printf("%d 개의 옵션을 입력하셨군요\n\n", argc - 1);


  // 옵션 배열의 요소들을 하나씩 출력
  for (int i = 1; i < argc; i++)
    printf("argv[%d] = %s\n", i, argv[i]);

  return 0;
}




컴파일 및 실행 결과 화면:

D:\Z>cl /nologo 0.cpp
0.cpp

D:\Z>0.exe
에러! 옵션을 입력하지 않으셨군요...

D:\Z>0.exe 111 222
2 개의 옵션을 입력하셨군요

argv[1] = 111
argv[2] = 222

D:\Z>0.exe AAA BBB CCC
3 개의 옵션을 입력하셨군요

argv[1] = AAA
argv[2] = BBB
argv[3] = CCC

D:\Z>0.exe 자장면 탕수육 짬뽕 불도장 팔보채
5 개의 옵션을 입력하셨군요

argv[1] = 자장면
argv[2] = 탕수육
argv[3] = 짬뽕
argv[4] = 불도장
argv[5] = 팔보채

D:\Z>




옵션을 하나도 입력하지 않으면 argc 는 1이 됩니다. 즉 argc 는 항상 1 이상입니다. 0이 되지 않습니다.

위의 경우, argv[0]은 0.exe 가 됩니다. 즉 argv 의 첫번째 요소는 항상 "프로그램 자신의 파일명"입니다.

따라서 옵션의 정확한 개수를 구하려면 argc 에서 1을 마이너스해 주어야 합니다.

출처 - http://www.tipssoft.com/bulletin/board.php?bo_table=FAQ&wr_id=714
이 강좌에서는 C/C++ 에서 사용하는 연산자의 우선 순위와 결합 법칙에 대하여 알아보도록 하겠습니다.

 
 
1. 연산자 우선 순위
 
    "연산자 우선 순위(priority)"란 데이터에 일정한 연산을 수행하기 위해 사용한 연산자들의 처리 순서를
    말합니다. 우리가 흔히 수학에서 적용하는 "곱셈과 덧셈이 섞여있는 연산을 할때에는 곱셈 먼저 한다"
    라는 규칙처럼 프로그램에서 연산자에 대한 처리 순서를 정의해 놓은 규칙입니다.
 
    C/C++ 언어에서 제공하는 연산자들에 대한 연산자 우선순위는 3번 항목을 참고하시기 바랍니다.
 
 
2. 연산 방향
 
    연산자 우선순위가 다른 연산을 할때는 어떤것부터 연산을 할것인지가 명확하기 때문에 문제가
    발생하지 않습니다. 하지만, 곱셈과 나눗셈처럼 연산자 우선순위가 같은 경우, 어떤것을 먼저
    할것인지에 따라서 결과값이 달라질수도 있습니다.
 
    예를들어, C/C++ 언어에서는 정수형이라는 데이터형이 제공됩니다. 정수형 데이터를 다룰때에는
    연산에 대한 결과값이 정수값으로만 처리되기 때문에 아래와 같은 상황이 발생할수 있습니다. 
 
    int data = 2 * 3 / 4;
 
    위 수식에서는 곱셈과 나눗셈이 같이 사용되었기 때문에 연산자 우선순위가 동일합니다. 이 경우,
    곱셈을 먼저 처리한다면 결국 아래와 같은 수식이 되고 data 변수에는 1 이 저장됩니다.
 
    int data = ( 2 * 3 ) / 4;
                 = 6 / 4;
                 = 1;  // 정수형 연산을 하기 때문에 소숫점 이하는 버립니다.
 
    반대로 나눗셈을 먼저 처리한다면 결국 아래와 같은 수식이 되고 data 변수에는 0 이 저장됩니다.
 
    int data =  2 * ( 3 / 4 );
                 = 2 * 0;  // 3/4 는 0.75이고 정수형으로 처리되기 때문에 소숫점이하는 버려서 0 이 됩니다.
                 = 0; 
 
    따라서 연산자 우선순위가 같은 두 연산자를 처리할때에 왼쪽에서 오른쪽으로 처리하는지 또는
    오른쪽에서 왼쪽으로 처리하는지에 따라 결과가 달라지기 때문에 연산 방향이라는 규칙이 하나더
    제공되게 됩니다. 각 연산자 별로 연산자 우선순위가 동일한 연산자들에 대해서는 3번 항목에서
    볼수 있는것처럼 연산방향이 명시되어 있습니다.
 
 
3. 연산자 우선순위 표
 
    아래는 C/C++ 에서 사용하는 연산자 우선순위입니다. 이 연산자 우선순위 표를 다 암기하실 필요는
    없지만, 자주 사용하는 연산자들은 기억해 두시는게 좋습니다.
   

순위

종류

연산자

 연산 방향  

1

 괄호, 배열, 구조체  ( )  .  [ ]  ->  ::

좌→우

2

 단항 연산자  *(간접)  &(주소)  !  -  ++  --  +(부호)  -(부호)  sizeof  new  delete

우→좌

3

 구조체 결합연산자  .*  ->*

좌→우

4

 승제 연산자  *  /  %

좌→우

5

 가감 연산자  +  -

좌→우

6

 시프트(Shift) 연산자    <<  >>

좌→우

7

 비교 연산자  <  <=  >  >=

좌→우

8

 등가 연산자  ==  !=

좌→우

9

 비트 연산자 AND  &

좌→우

10

 비트 연산자 XOR  ^

좌→우

11

 비트 연산자 OR  |

좌→우

12

 논리 연산자 AND  &&

좌→우

13

 논리 연산자 OR  ||

좌→우

14

 조건 연산자  ?:

우→좌

15

 대입 연산자  =  *=  /=  +=  -=  %=  <<=  >>=  &=  ^=  |=

우→좌

16

 나열 연산자  ,

좌→우

 
 
4. 간단한 연산자 우선순위 예제
 
    3번 항목의 연산자 우선 순위 표를 참고하여 아래의 코드를 살펴보도록 하겠습니다.
    ( 해당 라인에서 연산자 우선순위가 가장 높은 연산식은 붉은색으로 표시했습니다. )
 
    int data = 5, result = 0;
 
    result = 3 + 10 * ( 2 + 3 ) / 5 % --data;
    //          3 + 10 * ( 2 + 3 ) / 5 % --data;
    //          3 + 10 *      5      / 5 % --data;
    //          3 + 10 *      5      / 5 %    4;
    //          3 +        50         / 5 %    4;
    //          3 +              10        %    4;
    //          3 +                   2;
    //          5 

   공용체 (union)
 

사실 공용체(union)는 그다지 많이 사용하는 기능은 아닙니다만, 그래도 C 언어에서 제공하는 것들 중 하나 이니 간단하게 나마 집고 넘어가도록 합시다. 공용체는 구조체와는 달리 메모리를 ‘공유’ 합니다. 이게 도대체 무슨 말인가 하면 아래 그림을 참조해주세요.


 

위 그림을 보아도 알 수 있듯이 공용체의 각 멤버들의 메모리 시작 주소는 모두 동일합니다. 따라서 우리는 위 그림의 union A 의 경우 j 의 값을 변경함으로 써 i 의 값을 변경할 수 있고 마찬가지로 i 의 값을 변경함으로써  j 의 값을 변경할 수 있게 됩니다. 과연 이 말이 진짜 인지 확인해 보도록 합시다.


/* 공용체 */

#include <stdio.h>
union A
{
    int i;
    char j;
};
int main()
{
    union A a;
    a.i = 0x12345678;

    printf("%x", a.j);

    return 0;
}


성공적으로 컴파일 했다면



 

 


 음. 과연 우리는 a 의 j 멤버 값을 전혀 설정해 주지 않았음에도 불구하고 i 에 0x12345678 을 대입하자 j 의 값이 78 로 잘 나왔습니다. 그런데 이상한 점이 듭니다. 왜 78 이 나왔을 까요? 0x12 가 나와야 되는 것 아닌가요? 분명히 i 와 j 에 동일한 주소값에 위치해 있고 i 가 0x12345678 로 메모리 상에 있다면 j 는 처음 두 개인 0x12 가 되어야 되는 것 아닌가요? 물론, 여러분의 생각은 옳습니다. 하지만 컴퓨터에서는 수를 이렇게 보관하지 않습니다. 적어도 여러분의 컴퓨터에서는요.

출처 http://itguru.tistory.com/71

 

 

touch

(1) 설명: 파일의 크기가 0인 빈 파일을 생성하는 명령어로 파일의 최종 접근시간을 바꿀 수 있는
          명령이다.
(2) 사용법
    touch [option] 파일명
(3) option
   -d : 접근 시간을 변경한다.
   -m : 수정 시간을 변경한다.
   -t 타임스탬프 : 현재 시간 대신 [[CC]YY]MMDDhhmm[.ss]형식으로 지정된 타임스탬프를 이용한다.
                 예를 들어, 2001년 1월 12일 오후6시45분은 200101121845로 나타낸다. 리눅스배포
                 판에 따라 타임스탬프형식이 MMDDhhmm[[CC]YY][.ss]로 다를수도 있으니 man 명령으
                 로 확인해야 한다.
(4) 사용예
   1) [posein@www posein]$ touch a.txt
       => 현재 디렉토리에 a.txt라는 파일이 존재하면 파일의 접근시간을 바꾸고 파일이 없을 경우
         에는 a.txt라는 파일의 크기가 0인 빈파일을 생성한다.
         생성파일이다.
   2) [root@int03 root]# touch -t 04011330 /etc/passwd
      [root@int03 root]# ls -l /etc/passwd
      -rw-r--r--    1 root     root         2655  4월  1 13:30 /etc/passwd
        => /etc/passwd 파일의 접근시간을 바꾼다.
(5) 쓰임 : 주로 설정파일을 만들어야 할때 사용되는데 없으면 안되고, 내용을 적을 것이 없는
          경우나 현재 디렉토리에 쓰기가 가능한지를 알아보기 위한 목적으로 쓰인다

'IT' 카테고리의 다른 글

[펌] Unix 명령어  (0) 2016.03.14

1. chmod : 파일, 디렉토리 권한 수정

옵션 설명
4 파일에 대한 읽기의 허가
2 파일에 대한 쓰기 허가
1 파일에 대한 실행하기 허가
0 파일의 읽기,쓰기,실행하기 금지
400 소유자에 의한 읽기 가능
200 소유자에 의한 쓰기 가능
100 소유자에 의한 수행 가능
700 소유자에 의한 읽기,쓰기 허가
그룹에 속한 사용자, 일반사용자는 모든 권한 금지
070 그룹에 의한 읽기,쓰기 가능
007 다른 그룹 또는 사용자에 의해 수행,읽기,쓰기 가능

w : 4, x : 2, r : 1
   - ex) 
        
chmod 755 a_file         
        ( 소유자에겐 7(rwx), 그룹과 나머지에겐 5(r-x) 권한부여 )
        chmod o+rw a_file         
        ( others에게 읽기, 쓰기 권한 부여 )
        chmod 700 *                
         ( 현재 위치의 모든 파일과 폴더 권한 수정 )
        chmod -R 755 www        
        ( www디렉토리 내의 모든 파일과 디렉토리의 권한 수정 )

2. chown : 파일 소유자, 소유그룹 수정
   - ex) 
        chown bible file1        
         ( file1 파일의 소유자를 bible로 수정 )
        chown bible:bible2 file2         
        ( file2 파일의 소유자를 bible로 그룹을 bible2로 수정 )
        chown -cR nobody:nobody dirl       
        ( dirl 폴더와 그안의 모든 파일,디렉토리의 소유자,소유그룹 변경 )
        chown -R bible:webhost uploads --from=nobody:nobody    
        ( uploads디렉토리 내의 파일중 소유자가 nobody이고 소유그룹이 nobody로 되어 있는 파일의
           소유자를 bible로 변경하고 소유그룹을 webhost로 변경 )

 

출처 - http://egloos.zum.com/slog2/v/3546476


입력명령

-       i : 커서 앞에 삽입

-       a : 커서 뒤에 삽입

-       I : 현재 줄 첫 칸에 삽입

-       A : 현재 줄 끝에 삽입

-       o : 현재 줄 다음에 삽입

-       O : 현재 줄 앞에 삽입

 

커서이동

-       k : , j : 아래, l : 오른쪽, h : 왼쪽

-       ^ 또는 0(숫자) : 줄의 시작으로 이동

-       $ : 줄의 마지막

-       + : 다음 줄의 처음, - : 이전 줄의 처음

 

화면이동

-       H : 키 화면 맨 위로, M : 중간으로, L : 아래로

-       w : 다음 단어 첫 문자, b : 이전 단어의 첫 문자, e : 다음 단어의 끝 글자

-       G 또는 :$ : 파일의 마지막 줄로 이동

-       :n 또는 nG : 줄 번호 n으로 이동

-       n+ : n줄만큼 앞으로 이동, n- : n줄만큼 뒤로

-       ( : 현재 문장의 처음으로, ) : 다음문장의 처음으로

-       { : 현재 문단의 처음으로, } : 다음문단의 처음으로

-       ^u : 반 화면 위로, ^d : 반 화면 아래로

-       ^b : 한 화면 위로, ^f : 한 화면 아래로

-       ^y : 한 줄만 위로, ^e : 한 줄만 아래로

-       ^l : 파일내용 다시 출력

 

내용삭제 및 취소 생략(x, dw, dd, D, u, U)

 

내용수정

-       r : 현재 커서위치의 한 문자 변경

-       R : 현재 커서부터 ESC 입력까지 변경

-       cw : 커서 위치부터 현재 단어의 끝까지 내용변경

-       cc : 커서가 위치한 줄의 내용 변경

-       s, ns : 현재 커서부터 내용변경(ex:5s)

-       C : 커서 위치에서 줄 끝까지 내용 변경

 

편집기능-복사, 잘라내기, 붙이기 생략(yy, dd, p, P)

 

검색

-       /문자열 : 현재위치부터 다음줄 쪽으로 문자열 탐색

-       ?문자열 : 현재위치부터 이전줄 쪽으로 문자열 탐색

-       n : 다음 문자열 탐색, N : 역방향으로 탐색

 

바꾸기 기능

-       :s/문자열1/문자열2/ : 커서가 위치한 줄에서만 문자열 1을 문자열 2로 바꿈

-       :<범위>s/문자열1/문자열2 : 범위 안에서 각 줄의 첫번째 문자열1->2로 바꿈

-       :<범위>s/문자열1/문자열2/g : 범위 안에서 모든 문자열1->2로 바꿈

-       :<범위>s/문자열1/문자열2/gc : 범위 안에서 모든 모든 문자열1->2로 치환할 때 묻고 바꿈

 

파일 읽어오기

-       :r 파일명 : 지정한 파일의 내용을 커서위치 뒤쪽에 삽입

-       :e 파일명 : 지정파일을 연다 (기존파일은 버퍼로 들어감)

-       :n : vi 시작 시 여러 파일을 열었을 경우 다음파일로 이동

 

쉘 명령 실행

-       :!명령어 : 해당 명령어를 쉘에서 실행함

-       :sh : vi를 잠시 빠져나가 쉘로 간다. 돌아올때는 exit(!bash 랑 같음)

 

기타

-       :f 파일명 : 파일이름을 지정한 이름으로 변경

-       :w %.old : 현재 파일을 .old 이름으로 저장해 둘 때

-       ^g : 기본적인 파일정보 출력(파일명, 현재 줄/전체 줄, 현재 칸, 전체 몇 %의 영역에 위치)

-       J : 현재 줄과 다음 줄 연결

-       . : 바로 이전에 수행한 명령 재 실행

-       ~ : 현재 커서 위치의 한 문자를 소문자 혹은 대문자로 전환(->, ->)

 

vi환경 설정(생략, 따로 정리)


 

 

쉘 명령어

 

Touch [옵션] 파일

-       지정한 파일이 존재하지 않으면 생성, 있으면 현재 혹은 지정시간으로 변경

   -a : 접근 시간만 변경

   -c : 지정한 파일이 없는 경우 새로 생성하지 않음

   -m : 수정시간만 변경

   -r ref_file : 시간을 ref_file에서 읽음

   -t 시간입력 : 시간 직접입력 ( [[CC]YY]MMDDhhmm[.ss]  형식으로 입력)

 

쉘 특수문자(몇 가지 너무 흔한 건 생략)

-       ;     한 줄에 여러 개의 명령입력 (ex : date;cal;ls)

-       [ ]    한 문자 위치를 위한 문자 범위표시(ex ls [a-f])

-       |     명령어 파이핑 (ex : ls | grep home)

-       -     이전작업 디렉토리 (ex : cd -)

-       ‘ ‘    모든 쉘 문자 무시(ex : printf ‘$SHELL’)

-       ` `    쉘 명령 수행 (ex : printf “today : `date`”)

-       \    특수문자 기능 제거 (ex : printf”\$SHELL”)

 

입출력 방향 바꾸기

-       > : 새로운 파일로 생성, 기존파일 사라짐

-       >> : 기존 파일의 끝에 내용 추가

-       2> : 표준 오류 출력

-       < : 입력을 키보드에서 파일로 변경(ex : mailx user1 < loveletter)

 

쉘 환경변수

-       set : 쉘 변수(지역)

-       env : 환경변수(전역)

 

-       쉘 변수 정의 : 변수 = (MYENV=KSH)

-       환경 변수 : export 변수=

-       변수 값 확인 echo $변수(또는 printf)

-       변수 정의 해제 : unset 변수

 

프롬프트 설정

PS1에 저장된 값을 프롬프트로 사용함

echo $PS1으로 값을 확인

-       컬러 프롬프트 설정 : PS1=”^[[x;y;nm 프롬프트 ^[[x;y;0m”      (^[ctrl-v+[ 이다]

-       x,y는 색깔 번호를 뜻하고 n은 특수기능을 뜻함

-       특수기능 번호 - 0 : 기본색, 1 : 굵게, 4 : 흑백에서 밑줄, 5 : 반짝임, 7 : 역상, 10 : 기본폰트,

                   38 : 밑줄 사용가능, 39 : 밑줄 사용불가능

-       글자색 컬러번호 : 검정색30부터 시작->,,,,,청록,흰색으로 37까지

-       배경색 번호 : 검정색 40부터 시작->,,,,,청록,흰색으로 47까지

Ex) 프롬프트 파란색으로 : PS1=1”^[ [34;1mBlue! ^[ [0;0m”

 

 

 

파일의 사용권한 및 검색

 

파일의 종류

 ls –l 명령으로 파일과 디렉토리의 속성을 알 수 있다.

Ex) –rw-r—r—1 cn05777 2011 50 9 1 12:00 hello.c

다음과 같이 파일명이 나왔을 때, 맨 앞에(rw전에) 나오는 문자 하나는 파일의 종류를 의미

-       -   : 일반파일

-       d : 디렉토리 파일

-       b : 블록 단위로 읽고 쓰는 블록장치 특수 파일

-       c : 문자 단위로 읽고 쓰는 문자 장치 특수 파일

-       l : 기호적 링크

-       p : 파이프

-       s : 소켓

 

파일사용 권한

그 다음으로 나오는 rw-r—r—는 파일사용 권한을 의미한다.

-       읽기(r), 쓰기(w), 실행(x)

-       순서대로 rw-(소유자)r—(그룹)r—(기타사용자)를 의미

-       chmod [옵션] 모드 파일명       <-이렇게 사용 –R 옵션 주면 하위 디렉토리를 포함 싹 다

권한부여 방법들

1.     기호모드

n  u(소유자),g(그룹),o(기타사용자), a(모든 사용자)

n  +(허가권부여), -(허가권제거), =(허가권지정)

ex) u+w (소유자에게 쓰기 권한 부여)

ex) chmod go=rw first.dat 그룹과 기타에 읽기와 쓰기 권한 부여

ex) chmod +rwx first.dat 소유자는 rwx, 그룹과 기타사용자는 r-x

2.     숫자모드

n  rwx->111, rw- -> 110, r-x ->101 이런식으로 바꿔줌

그리고 8진수에 따라서 이 숫자를 써줌

ex) 755 ->rwxr-xr-x, 764->rwxrw-r—

 

3.     마스크

n  umask [마스크값]

n  umask를 치면 현재 마스크 값이 나온다

n  umask [8진수] (ex: umask 077)로 마스크값을 변경

n  허용하지 않을 값 umask 값으로 지정한다

n  Umask와 파일의 권한이 XOR되어 해당 권한이 제거된다

n  파일생성시 혹은 수정을 할 때 등에 umask가 자동으로 적용된다.

(그래서 chmod +rwx해도 그룹,기타에는 r-xr-x로 설정되는 것이다. 기본 mask 022)

 

 

파일내용 검색

 

grep : 지정한 파일에 패턴이 들어있는지 검색하는 명령어(해당 패턴이 있는 줄을 출력)

grep [옵션] 패턴 파일명들

 옵션 -i : 대소문자를 무시하고 검색

      -l : 해당 패턴이 들어있는 파일 이름을 출력

      -n : 각 라인의 번호도 함께 출력

      -v : 명시된 패턴과 일치하지 않는 줄을 출력

      -c : 패턴과 일치하는 라인수 출력

      -w : 패턴이 하나의 단어로 된 것만 검색

ex) grep –i hello hello.c   (hello.c안에있는 hello를 가져옴, 대소문자 무시)

 

메타문자

  ^ : 라인의 시작 해당 문자열로 시작하는 모든 행(ex : grep ^문자열 a.txt)

  $ : 라인의 끝 해당 문자열로 끝나는 모든 행(ex : grep 문자열$ a.txt)

  . : 한 글자 – .하나가 임의의 한글자로 대응됨(ex : grep a..b a.txt ->a로시작 b로 끝나는 4글자)

  ? : 없거나 한 글자 – ab?으로 쓰면 ab거나 ab다음 임의의 한 글자

* : 앞의 항목이 없거나 반복 – ab*쓰면 ab다음에 업거나 반복적라인 검색

[ ] : 괄호 안의 글자 중 하나 – [ab]d로 쓰면 ad혹은 bd검색

[^] : 괄호 안에 있는 글자가 아닌 글자 – [^a-m]att 쓰면 att앞에 a에서 m이 나오는 않는 라인 검색

 

 

egrep : grep의 확장판 명령

egrep [옵션] 패턴 파일명들

 메타문자

+ : 앞의 글자가 하나 이상 나옴 – [a-z]+ark하면 결과는 airpark, dark, bark, shark

x|y : x또는 y중 하나가 나옴

( | ) : 문자열 그룹 – (1|2)+하면 1또는 2가 하나이상, search(es | ing)하면 searches 또는 searching

 

fgrep : 문자열 검색

fgrep [옵션] 문자열 파일명들

-       이 명령어는 문자열에 들어가는 모든 문자를 일반 문자로 인식한다

*을 쓰거나 ?, + 등을 써도 특수한 메타문자대신 그냥 *,?,+로 인식함

 

find : 파일을 찾는 명령어

find 범위 표현식 동작

 범위설정 :  ~(홈 디렉토리에서 찾기 시작), .(현재 디렉토리에서 찾기 시작) 등등

 표현식

-       -name filename : 파일이름을 지정(메타문자사용 가능하나 “ “ 안에 있어야함)

-      -type : 파일종류(f : 일반파일, d : 디렉토리)

-       -mtime[+ | -]n : 수정(접근)시간으로 검색, +하면 n일보다 오래된거, -하면 n보다 짧거나 일치하는 파일 (atime도 있음) (여기서 n 24시간 단위, 2 48시간)

-       -user loginID : 해당 id가 소유한 파일 모두 검색

-       -size [+ | -]n : 파일크기 설정 +n보다 크거나 -n보다 작거나 크기 n인 파일검색(1=512bytes)

-       -newer : 기준시간, 기준시간보다 이후에 생성된 파일검색 (-newer 기준파일명)

-       -perm : 사용권한, 사용권한과 일치하는 파일검색(8진수로 입력)

동작종류

-       -exec 명령 {} \;   exec옵션은 \;으로 끝난다. 검색된 파일은 {}위치에 들어감

-       -ok 명령 {} \;     exec의 확인모드, 사용자의 확인을 받아야 명령적용

-       -print             화면에 경로명을 출력(기본동작임)

-       -ls                긴 목록형식으로 검색결과를 출력

결합기호

-       -a : and(기본임), -o : or, ! : not  <- 이 세가지 사용해서 결합가능

 

 

which : PATH 환경변수에 지정된 경로에서 명령을 찾음

which 명령 (ex : which ls   -> 결과는 /user/bin/ls)

 

whereis : 지정된 경로에서 명령검색(/usr/bin, /usr/sbin, /usr/game등등등)

whereis 명령

 

 

 

UNIX 프로세스의 종류

-       데몬 : UNIX커널에 의해 시작되는 프로세스로 서비스 제공을 위한 프로세스들

-       부모, 자식 프로세스(^^ 알겟지…)

-       고아 : 자식프로세스 종료 전에 부모가 종료된 프로세스, 고아는 1번 프로세스를 새 부모로 가짐

-       좀비 : 부모프로세스가 종료처리를 하지 않은 프로세스, 프로세스 테이블만 차지하고 있음

ps [옵션]

 옵션

-       -e : 시스템에 있는 모든 프로세스 목록 출력

-       -f : 프로세스에 대한 자세한 정보 출력

-       -u uid : 특정 사용자에 속한 모든 프로세스 출력

 목록보기

-       UID : 소유자의 사용자 ID

-       PID : 프로세스 번호

-       PPID : 부모 프로세스 번호

-       C : 프로세스 우선순위

-       STIME : 프로세스 시작시간

-       TTY : 터미널 번호( ? = 데몬 )

-       TIME : CPU 사용시간

-       CMD : 명령어 이름

 

pgrep : 프로세스 이름으로 찾아 정보를 출력(Solaris only라고 나와있지만 요즘 리눅스 다됨 - _-)

pgrep [옵션] 패턴

 옵션

-       -x : 패턴과 정확히 일치하는 PID 출력

-       -n : 패턴을 포함하고 있는 가장 최근의 PID출력

-       -U uid : 특정 사용자에 속한 PID출력

-       -l : PID와 프로세스 이름출력

-       -t term : 특정 터미널과 관련된 프로세스 출력

 

Kill : 프로세스 종료 (pkill)

kill [시그널] pid

 시그널 종류

-       1 (SIGHUP) : 터미널 연결이 끊어진 경우에 발생

-       2 (SIGINT) : 보통 ctrl-c에 의해 발생

-       9 (SIGKILL) : 프로세스 kill시킴, 무시불가능, 강제종료

-       15 (SIGTERM) : 프로세스 종료시킴, 무시될 수도 있음, 기본시그널(soft kill)

 

pkill [시그널] 프로세스명

-       사용방법은 kill와 같지만 프로세스명으로 사용가능

 

Foreground & background

-       Foreground는 사용자가 명령을 입력한 후 결과가 출력될 때까지 기다려야 하는 경우

-       Background는 처리결과 출력과 관계없이 다른 작업 계속함.(명령 실행 시 마지막에 &붙임)

 

Jobs : 백그라운드 작업을 모두 출력

Job은 쉘이 관리할 수 있는 프로세스(pid와 쉘이 할당한 job id있음)

Jobs [%작업번호] ->특정 작업의 정보만 출력

-       %+ 또는 %% 하면 작업순사가 +인 작업 정보 출력, %-하면 순서가 인 작업정보 출력

 

작업 전환 및 종료명령

bg [%작업번호] : 현재 작업 혹은 특정작업 백그라운드로 전환시켜 실행

fg [%작업번호] : 포그라운드로 전환시켜실행

ctrl+z : 포그라운드작업 중지시키고 백그라운드의 중지된 목록으로 보냄

stop %작업번호 : 백그라운드 수행중인 특정작업 중지

kill %n : 특정 작업을 종료

 

nohup 백그라운드명령

일반적으로 백그라운드 작업을 실행시킨 단말기나 사용자가 로그아웃 시 함께 종료된다.

로그아웃 후에도 작업이 완료될 때까지 실행해야 할 대 nohup사용

명령어 실행 결과와 오류메시지는 현재 디렉토리 nohup.out파일로 자동저장

 

users : 현재 시스템에 로그인하고 있는 사용자명을 출력

 

who : 시스템을 사용하고 있는 사용자의 정보를 출력

-       -q : 사용자명만 출력

-       -H : 출력항목의 제목도 함께 출력

-       -b :마지막으로 재부팅한 날짜와 시간을 출력

 

w [사용자명] : 로그인한 사용자정보와 현재하고 있는 작업정보를 출력

 

who am i whoami 명령의 차이

who am i는 자신의 정보를 출력한다(로긴ID, 시간, 아이피 등), whoami는 로긴ID만 출력

 

id [옵션] : 사용자의 로긴ID와 그룹정보를 출력

-       -a : 기본 그룹외에 2차 그룹정보도 출력

 

 

 

 

 

 

 

 

파일백업 및 압축명령

 

tar : 파일과 디렉토리를 묶어 하나로 만드는 것

tar 기능 [아카이브파일] 파일이름

기능

-       c : tar 파일 생성

-       t : tar 파일목록 보기

-       x : tar 파일 풀기

-       f : 아카이브파일이나 장치 등 지정

-       v : 표준출력으로 실행내용 출력

-       h : 심볼릭링크의 원본 파일 포함

 

jar : 여러 파일을 하나의 jar 아카이브 파일로 묶어서 압축

jar 옵션 [아카이브파일] 파일이름

 옵션

-       c : tar파일생성

-       t : 파일목록보기

-       x : tar파일풀기

-       f : 아카이브파일지정

-       v : 실행내용 출력

-       0 : 압축없이 아카이브 파일만 생성

 

pack / unpack : 확장자가 .z인 압축 파일 생성 및 해제

pack [옵션] 파일이름   /    unpack 파일이름

 옵션

-       - : 상세정보 출력

-       -f : 강제압축

 

pcat 파일이름          :   .z파일 내용을 화면에 출력

 

compress / uncompress : 확장자가 .Z인 압축파일 생성 및 해제

compress [옵션] 파일이름 / uncompress 파일이름

 옵션

-       -v : 압축관련 정보 출력

-       -c : 압축 결과를 화면에 출력. .Z 파일생성 안함

 

zcat 파일이름         : .Z파일 내용을 화면에 출력

 

gzip / gunzip : 확장자가 .gz인 압축파일 생성 및 해제

 옵션

-       -d : 압축해제

-       -l : 압축된 파일의 내용 출력

-       -r : 현재 디렉토리부터 하위 디렉토리까지 모두 압축

-       -t : 압축 파일 검사

-       -v : 압축정보 화면에 출력

-       -g : 최대한 압축

 

gzcat 파일이름    :   .gz파일 내용을 화면에 출력

 

zip / unzip  : 확장자가 .zip인 압축파일 생성 및 해제

zip [옵션] 파일이름   /  unzip 파일이름

-       -v : 압축정보 화면에 출력

 

 

통신명령

 

write 로그인ID [단말기명]       :  사용자에게 메시지를 보냄 작성 후 콘트롤+d누름 전송

wall [파일명]    :  로그인하고 있는 모든 사용자에게 메시지 전송,

파일명은 메시지를 파일로 저장했을 경우 지정

talk 사용자주소 [단말기명] : 다른 사용자와 1:1대화하기

(사용자명@호스트명, 같은 호스트면 사용자명만 지정)

mesg [y | n] : 메시지를 단말기로 출력하는 것을 허용 또는 거부

mailx [-sf] [사용자명@호스트]        / 내용작성 후 . 이나 ^D 입력하면 전송

 옵션

-       -s : 제목 지정

-       -f : mbox의 내용확인

 

hostname : 현재 시스템의 호스트명을 출력

ping 호스트명 또는 IP주소 : 시스템이 네트워크를 통해 연결되는지 확인

finger [id | id@host | @host] : 현재 로그인한 사용자 정보를 출력 

(who결과에 덧붙여 완전한 이름출력->/etc/passwd

@host하면 특정호스트의 사용자 목록 출력

ftp host명 또는 IP주소 : TCP/IP를 사용하는 파일송수신 명령

ftp명령어 생략 : bin, get, put, cd, bye pwd 등등)

 

 

 

 

유틸리티 명령

 

wc : 파일의 라인수, 단어수, 바이트, 문자수 출력

 옵션

-       -c : 바이트 수

-       -m : 문자수

-       -C : -m과 동일

-       -l : 라인수

-       -w : 공백이나 새로운 행으로 구분된 단어수

 

sort : 아스키 코드값을 기준으로 파일의 텍스트 내용을 정렬하여 화면에 출력

sort [옵션] 파일

 옵션

-       -b : 앞에 붙는 공백무시

-       -c : 정렬이 되지 않은 상태로 출력

-       -d : 사전식 순서로 정렬. 숫자, 문자, 공백만 비교(특수문자는 무시)

-       -f : 대소문자 구분안함

-       -m : 정렬된 파일을 통합

-       -n : 숫자를 산술값으로 전환해 정렬

-       -r : 역순정렬

-       -t 문자 : 지정한 문자를 필드 구분자로 사용

-       +번호 : 번호+1필드를 기준으로 정렬

-       +pos1 –pos2 : 정렬하고자 하는 필드의 열을 지정, pos1부터 pos2까지 정렬

 

split : 큰 파일을 일정한 크기의 여러 개 작은 파일로 분할

split [옵션] [파일]

 옵션

-       -b n : 크기가 n 바이트인 파일로 분할

-       -n : n줄씩 분할

(디폴트는 1000줄씩 분할),(파일을 지정하지 않으면 표준입력내용을 분할 저장)

 

uniq : 파일/표준입력으로 입력된 내용 중 중복된 내용의 줄이 연속으로 있으면 하나만 남김

uniq [옵션] [입력파일 [출력파일] ]

 옵션

-       -u : 중복되지 않는 줄만 출력

-       -d : 중복된 줄 중 1줄만 출력

-       -n : 원하는 필드 앞의 공백과 문자열 무시. n은 필드번호

-       -c : 앞에 붙어있는 라인번호는 그대로 유지한다

(파일을 지정하지 않으면 표준입력내용을 처리, 입출력 파일 이름은 달라야 함)

cut : 파일의 각 행에서 선택된 필드를 잘라햄

cut [옵션] [파일]

 옵션

-       -c 리스트 : 각 줄에서 잘라낼 문자 위치 지정

(ex : cut –c5-8 -> 5번째전까지 그리고 8번째이후 자름, cut –c5하면 5번째 문자 외 다 자름)

-       -f 필드수 : 지정한 필드 잘라냄

-       -d 문자 : 필드 구분자

 

paste : 사용자가 지정한 두 개 이상의 파일 내용 중 같은 줄을 붙이거나 파일 끝에 다른 파일의 내용을 추가

paste [옵션] [파일1 파일2 …]

 옵션

-       -s : 파일의 끝에 추가(split으로 나눈 파일을 원래대로 붙일 때, 수평붙이기)

-       -d문자 : 필드 구분자

-       - : 파일대신 표준입력 사용

 

dd : 지정한 입력파일을 지정한 옵션에 따라 변환하여 출력파일로 저장

dd [옵션] [if=입력파일] [of=출력파일]

 옵션

-       bs=n : 입출력 블록의 크기를 n바이트로 지정

-       conv=lcase : 알파벳을 소문자로 변환

-       conv=ucase : 알파벳을 대문자로 변환

 

 출처 - http://arings.tistory.com/entry/Unix-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%A0%95%EB%A6%AC1

 

--------------------------------------------------------------------------------
1.DOS와 비슷한 명령어
--------------------------------------------------------------------------------
(1). cat

기능    : 파일의 내용을 화면에 출력. DOS의 'type' 명령과 유사.
사용법  : cat [options]

옵션    : -n     
        : 행번호를 붙여서 출력.
예제    # cat /etc/fstab
        : /etc/fstab의 내용을 화면에 출력
사용팁  : 리눅스에서 두개이상의 옵션을 붙힐때는 앞의 '-'는 한번만 사용하고
          영문자만 붙혀서 사용.
--------------------------------------------------------------------------------
(2). cd

기능    : 디렉토리 변경.
          그냥 'cd'만 입력하고 엔터키를 누르면 자기 자신의 홈디렉토리로 이동.
사용법  : cd <디렉토리>

예제    # cd ~dalma
        : dalma 라는 유저의 홈디렉토리로 이동

        # cd
        : 자기자신의 홈디렉토리로 이동

        # cd ..
        : 현재 디렉토리에서 부모디렉토리로 이동

        # cd /usr/bin
        : /usr/bin 디렉토리로 이동

주의점  : cd 명령 후 반드시 한칸 띄우도록 하자.
--------------------------------------------------------------------------------
(3). cp

기능    : 파일 복사
사용법  : cp [options]

옵션
        -b  : 덮어쓰거나 지울 때 백업본의 파일을 만든다.
        -d  : symbolic link 파일을 그대로 복사한다.
        -f  : 같은 파일의 이름을 가지는 파일이 있는 경우 이 파일을 지운 후 복사한다.
        -i  : 같은 파일 이름을 가지는 파일이 있는 경우 사용자에게 확인 후 복사한다.
        -R  : 서브디렉토리를 포함하여 복사한다.

예제
        # cp .bash_profile temp.bash_profile
        : .bash_profile 파일을 temp.bash_profile로 복사

        # cp -R ../home/tmp/* .
        : 현재 디렉토리의 부모 디렉토리에 있는 '/home/tmp' 디렉토리 밑의 서브디렉토리를
          포함한 모든 디렉토리를 현재의 디렉토리로 복사.

주의점  : DOS와는 달리 현재 디렉토리로 복사할 때 을 생략해서는 안된다.
          현재 디렉토리를 뜻하는 '.'을 두번째 예제와 같이 꼭 붙혀주도록 하자.
--------------------------------------------------------------------------------
(4). date

기능    : 시스템의 날짜와 시간을 표시하고 이를 수정
사용법  : date
--------------------------------------------------------------------------------
(5). ls

기능    : 파일과 디렉토리를 출력
사용법  : ls [option]

옵션
        -a  : 디렉토리내의 숨김 파일까지 모두 표시
        -l  : 파일의 사용허가, 소유자, 그룹, 파일의 크기, 날짜 등을 출력
        -F  : 파일의 형태와 함께 출력되는데 출력되는
              파일의 형태는 '*', '@', '|', '=' 등이며,
              이것은 각각 실행 파일, 심볼릭 링크, FIFO 소켓을 나타낸다.
        -m  : 쉼표를 구분하여 파일을 가로로 출력한다.
        -R  : 서브디렉토리의 내용을 포함하여 파일을 출력한다.

예제    
        # ls -alF /home/dalma
        : /home/dalma 디렉토리에 있는 모든 파일을 파일의
          사용허가, 소유자, 그룹, 파일의 크기, 날짜등을 포함하여,
          파일의 형태와 함께 출력

사용팁  : 리눅스를 비롯한 유닉스에서는 파일의 처음이 '.'로 시작하면
          숨겨진 파일로 인식.
          즉, '.bash_profile' 같은 파일은 '-a' 옵션을 붙히지 않으면 'ls'명령으로
          확인을 할 수가 없다.
--------------------------------------------------------------------------------
(6). man

기능    : 도움말을 출력
사용법  : man [option]

예제    : 'man ls' (ls 명령어의 도움말을 출력한다.)
--------------------------------------------------------------------------------
(7). mkdir

기능    : 새로운 디렉토리를 만드는 데 사용한다. DOS의 'md' 명령과 유사하다.
사용법  : mkdir [option]
옵션
        -p  : 지정된 모든 서브디렉토리까지 함께 생성한다.
        -m mode : mode에 해당하는 사용 허가로 디렉토리를 생성한다.
                  Mode에 대한 설명은 뒤에서 설명할 'chmod' 명령에서 함께 설명한다.

예제    : 'mkdir /home/dalma/tmp' (/home/dalma 디렉토리 밑에 tmp 디렉토리를 만든다.)
--------------------------------------------------------------------------------
(8). more

기능    : 주어진 파일의 내용을 한 화면씩 출력한다. DOS의 'more' 명령과 유사하다.
사용법  : more

옵션    : 리눅스에서의 more 명령은 DOS에서와는 다르게 실행중 화면이 정지해 있을 때
          명령어가 제공되는데 이 명령어를 이용하여 파일의 내용을 편리하게 볼 수 있다.
       
        h           : 도움말
        [space], z  : 다음 페이지를 출력
        [Return]    : 한 라인씩 스크롤시킴
        d, : 반 페이지씩 스크롤시킴
        q, Q        : 종료
        f           : 다음 페이지를 출력
        b,          : 앞 페이지를 다시 출력
        /<검색어>   : <검색어>에 해당되는 단어를 검색
        =           : 현재라인을 출력
        :! : 에 의해 주어진 명령어를 실행
            : 화면을 다시 리프레쉬 시킴
        :f          : 현재 파일 이름과 라인을 출력

사용팁  : 유닉스와 파이프 명령 '|'을 이용해서 다른 명령과 함께 조합하여 사용할 수 있다.
          예를 들어 'cat /home/dalma/readme | more' 를 입력하면 /home/dalma/readme 파일을
          화면에 출력하는데 한화면씩 끊어서 출력을 하고, 'ls /home/dalma |more' 명령을
          입력하면 /home/dalma 디렉토리 안의 내용을 한화면씩 출력한다.
--------------------------------------------------------------------------------
(9). mv

기능    : 파일을 다른 파일이나 디렉토리로 이동시키거나 파일의 이름을 바꾼다.
          DOS에서는 'ren' 명령이나 'move' 명령과 유사하다.
사용법  : mv [option]
옵션
        -b  : 파일을 지우기 전에 백업본을 만든다.
        -f  : 옮겨질 디렉토리에 같은 파일이 있으면 덮어쓴다.
        -i  : 옮겨질 디렉토리에 같은 파일이 있는지 확인한다.
        -u  : 옮겨질 디렉토리에 구버전의 파일이 있는 경우에만 옮긴다.
예제
        'mv /home/dalma /home/bar'
        (/home/dalma 디렉토리를 /home/bar 디록토리로 이름을 바꾼다)
       
        'mv /home/dalma/readme /home/foo/README'
        (/home/dalma/readme 파일을 /home/foo/README 파일로 이동한다.)

사용팁  : 리눅스에서는 파일명에 대소문자를 철저히 구분한다.
          즉 'readme'파일과 'README' 파일은 엄현히 다른 파일이다.
--------------------------------------------------------------------------------
(10). pwd

기능    : 현재 작업하고 있는 디렉토리의 절대경로명을 보여준다. DOS의 'cd' 명령어와
          유사하다.
사용법  : pwd
주의점  : 도스에서 'cd' 명령을 입력하면 현재 디렉토리의 절대경로를 보여주지만
          리눅스에서 'cd' 명령을 입력하면 자신의 홈디렉토리로 이동해 버린다.
          절대경로를 알기 위해서는 'pwd' 명령을 써야 한다.
--------------------------------------------------------------------------------
(11). rm

기능    : 파일을 지우는 명령으로 DOS의 'del', 'deltree' 명령과 유사하다.
사용법  : rm [option]
옵션
        -f  : 삭제중 오류가 발생하더라도 에러 메시지를 출력하지 않는다.
        -i  : 삭제하기 전에 확인을 한다.
        -r  : 서브디렉토리를 포함하여 지운다.
        -v  : 지워지는 파일 이름을 출력한다.
예제
        'rm -rf /home/dalma/tmp'
        (/home/dalma/tmp 디렉토리를 서브디렉토리를 포함해서 모두 지운다.)
        'rm .history'
        (.history 파일을 지운다.)

주의점  : 슈퍼유저 계정인 'root'로 이 명령을 쓸때는 아주 신중을 가해야 한다.
          특히 '-r' 옵션을 쓰면 실수로 리눅스 전체를 날릴 수 있기 때문에
          가급적 '-i' 옵션과 함께 사용하도록 한다. 'alias rm rm -i' 명령을 내리면
          rm 명령을 쓸 때 마다 -i 옵션이 자동으로 추가된다.
--------------------------------------------------------------------------------
(12). rmdir

기능    : 빈 디렉토리를 지우는 명령으로 DOS의 'rm' 명령과 유사하다. 그러나 'rm -r'
          명령으로 대처할 수 있기 때문에 그렇게 많이 쓰이지는 않는 명령이다.
사용법  : rmdir [option]
옵션
        -p : 지우고자 하는 디렉토리의 부모디렉토리까지 지운다.

예제    : 'rmdir -p /home/dalma'
          (/home 디렉토리에 파일이 존재하지 않을 경우라면 /home 디렉토리까지 지운다.)
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
2.User에 관한 명령어
--------------------------------------------------------------------------------
(1). chgrp

기능    : 파일의 그룹소유권을 바꾼다.
사용법  : chgrp [option]
옵션
        -R : 한 디렉토리내의 모든 파일이나 하위 디렉토리의 그룹소유권을 바꾼다.
예제
        'chgrp admin /home/dalma/readme'
        (/home/dalma/readme 파일의 그룹소유권을 admin으로 바꾼다.)
        'chgrp -R admin /home/dalma
        (/home/dalma 디렉토리아래의 모든 파일의 그룹 소유권을 admin으로 바꾼다.)
--------------------------------------------------------------------------------
(2). chmod

기능    : 파일에 대한 개인, 그룹, 타인에 대한 접근 권한을 변경.
사용법  : chmod [options]

옵션
        r : 읽기 권한 설정
        w : 쓰기 권한 설정
        x : 실행 권한 설정 (디렉토리의 경우는 접근 권한)
       
        u : 파일의 소유자(user)
        g : 그룹(group)
        o : 기타(other)
       
        a : 전체사용자(all)
        + : 권한 추가
        - : 권한 삭제
        = : 권한 지정

예제
        # chmod a+r *
          (현재 디렉토리의 모든 파일을 모든 사용자가 읽을 수 있도록 설정)
        # chmod +r *
          (위예제와 상동)
        # chmod o-r, o-w *
          (현재 디렉토리의 모든 파일을 기타사용자에게 읽기, 쓰기 권한을 없앰)
        # chmod og-x stuff
          (stuff 파일에서 그룹과 기타사용자에게 실행권한을 없앰)
        #chmod u+rwx stuff
          (stuff 파일에서 파일 소유자가 읽기, 쓰기, 실행권한을 추가)
        #chmod a=r *.txt
          (.txt로 끝나는 모든 파일을 전체 사용자가 읽을 수만 있도록 지정)

사용팁  : 숫자를 이용하여 특정권한을 지정

        '4'는 읽기 권한
        '2'는 쓰기 권한
        '1'은 실행 권한

        즉, 읽기, 쓰기권한 지정 => 4+2 = 6 로 표시
        예를 들면
        stuff라는 파일에 소유자에게는 모든권한을 그룹과
        다른 사용자에게는 읽기,실행권한을 주려면
        # chmod 755 stuff
--------------------------------------------------------------------------------
(3). chown

기능    : 파일의 소유권을 바꾼다.
사용법  : chown [option]
옵션    -R : 한 디렉토리내의 모든 파일이나 하위 디렉토리의 그룹소유권을 바꾼다.

예제    :
        'chown igi /home/dalma/readme'
        (/home/dalma/readme 파일의 소유권을 igi으로 바꾼다.)
        'chown -R igi /home/dalma
        (/home/dalma 디렉토리아래의 모든 파일의 소유권을 igi으로 바꾼다.)

사용팁  : 리눅스에서는 chown 명령을 통해서 파일의 소유권과 그룹의 소유권을
          한번에 바꿀 수 있다. 이를 위해서는 chown의 란에
          'igi.admin'이라고 입력하면 파일의 소유권은 'igi' 파일의
          그룹소유권은 'admin'으로 바뀌어진다.
--------------------------------------------------------------------------------
(4). su

기능    : 시스템에 접속한 상태에서 재로그인없이 다른 사람 ID로 접속한다.
사용법  : su [option] [user ID]
옵션
        - : 이 옵션이 없으면 자신의 환경변수의 값을 가지고 다른 사람 ID의 권한만 갖지만
            이 옵션을 붙히면 그 사용자의 환경변수의 내용까지 완벽하게 복사를 한다.
예제
        'su'
        (사용자 ID없이 명령을 내리면 자동으로 root로 접속을 시도한다.)
        'su - dalma'
        (dalma ID로 접속을 하는데 dalma의 환경변수의 내용까지 맞춘다.)
사용팁  : 리눅스에서는 외부에서 접속을 할 때 root로의 접속을 금지하고 있다.
          이유는 보안상의 문제인데 가급적(가능한) root에서의 작업은 피하고
          root의 권한이 필요하면 일반 사용자 ID로 작업을 하다가 su 명령을
          이용하여 root로 접속하는 습관을 들이는게 좋다.
--------------------------------------------------------------------------------
(5). who

기능    : 시스템에 어떤 사람이 로그인하고 있는가를 보여준다.
사용법  : who
          write
기능    : 특정사용자와 대화를 시작한다.
사용법  : write [ttyname]
예제
        'write dalma'
        (dalma에게 표준입력을 이용하여 대화하기 시작한다.)
        'write dalma /dev/tty21'
        (/dev/tty21에 있는 dalma와 대화를 시작한다.)

사용팁  : 마지막의 [ttyname]은 한사용자가 동시에 두번이상 접속을 하였을경우
          대화할 터미널을 결정하는 부분이다.
          그리고 어떤 사용자와 대화를 마쳤을 경우 [CTRL+D]를 눌러주면 대화를 종료한다.
--------------------------------------------------------------------------------
(6). find

기능    : 디스크에서 특정 파일을 찾아낸다.
사용법  : find <경로명> [expression]
옵션
        -name filename    : 찾을 filename을 입력한다.
        -perm octperm     : 특정 권한을 가진 파일을 검색한다.
                            이때 권한은 숫자형태로 입력한다.
        -type t           : 특정 종류의 파일을 (디렉토리, 일반파일 등등) 검색한다.
        -size n           : 크기가 n인 파일을 검색한다.
        -mtime n          : n일동안 변경된 파일을 검색한다.
        -print            : 파일 이름을 출력한다.
        -maxdepth levels  : 검색 시 서브디렉토리를 levels만큼만 진입을 해서 검색한다..
        -mindepth levels  : maxdepth와 반대의 명령어로 검색 시 서브디렉토리의
                            깊이가 level 이상부터 검사를 한다.
예제
        'find ~ -name '*.doc' -print
        ( 접속한 사용자의 홈디렉토리에 있는 파일 중에서 .doc로 끝나는 모든 파일을
          화면에 보여준다.)
        'find ~ -type d -print'
        (접속한 사용자의 홈디렉토리에 있는 파일 중 디렉토리만 출력한다.)
--------------------------------------------------------------------------------
(7). ln

기능    : 특정파일의 링크파일을 만든다.
사용법  : ln [option] , ln [option]
          file1의 링크를 file2에 만든다. file2가 명시되어 있지 않으면
          현재 디렉토리에 링크를 만든다.
옵션
        -s  : 심볼릭 링크를 만든다. 이 옵션을 넣고 링크를 만들면
              파일의 형태가 'l'로 표기가 된다.
예제
        'ln /usr/base /usr/lock'
        (/usr/base에 /usr/lock라는 링크를 만든다.)
        'ln com1 com2 com3 /bin'
        (/bin에 com1, com2, com3의 링크를 만든다.)
--------------------------------------------------------------------------------
(8). grep

기능    : 주어진 패턴을 포함하는 파일의 라인을 출력시킨다.
사용법  : grep [option]
옵션
        -C : 패턴이 일치하는 문장의 아래 위 두 라인까지 포함하여 출력한다.
        -c : 패턴이 일치하는 라인의 개수를 출력한다.
        -i : 대소문자를 구분하지 않고 패턴과 일치하는 것을 찾는다.
        -v : 패턴과 일치하지 않는 내용을 출력한다.
        -w : 패턴과 한단어로 일치해야 출력한다.
        -x : 패턴과 전체 라인이 일치해야 출력한다.
예제
        'grep linux /home/dalma/readme'
        (readme 파일 중에서 linux라는 패턴을 포함하는 모든 라인을 출력한다.)
        'grep -c /bin/bash /etc/passwd
        (/etc/passwd 파일에서 /bin/bash의 개수 -로그인셀이 본셀인 사용자의 수를 출력한다.)
        'grep -v '^[0-9]' readme'
        (readme 파일에서 숫자로 시작하지 않는 모든 라인을 보여준다.

사용팁  : 마지막 예제에서 '^[0-9]'의 표현은 좀 생소한 표현일것이다.
          이것은 정규식이라고 해서 어떤 문자패턴을 표현하는 하나의 표현식이다.
          간단히 설명을 하면 '[0-9]'는 0에서 9까지를 의미하고 '^'는 반대의 의미를 나타낸다.
          즉 '^[0-9]'는 0-9로 시작하지 않는 표현이라는 뜻을 가지게 된다.
--------------------------------------------------------------------------------
(9). wc

기능    : 그렇게 많이 쓰이는 명령은 아니지만, 리눅스 프로그래머가 자신이 짠 소스의
          총라인이 얼마인지 아님 특정 단어의 개수를 조사할 때 쓰이는 명령으로
          특정 단어나 문자 또는 행의 수를 세는 명령이다.
사용법  : wc [option]
옵션
        -c : 문자의 수만 센다.
        -l : 행의 수만을 센다.
        -w : 단어의 수만을 센다.
사용예
        'wc /home/dalma/readme'
        (readme 파일의 행, 단어, 문자의 수를 출력한다.)
        'who | wc -l'
        (현재 접속한 사람의 수를 표시한다.)
사용팁  : 리눅스는 혼자서 쓰는 운영체제가 아니라 여러 사람이 동시에 사용을 하는 운영체제이다.
          who는 리눅스에 접속한 모든 사용자의 목록을 보여주는 명령이고 '|'는 파이프 기호라고
          해서 여러 개의 명령어를 조합할 때 쓰이는 기호이다.
          즉, 파이프 앞의 출력의 내용을 파이프 뒤의 명령의 입력으로 넣어주는 기능을 한다.
          위의 예제에서 'who | wc -l' 명령은 'who' 명령의 결과를 'wc -l'의 입력으로 넣어준다.
          그래서 현재 접속한 사용자의 개수를 알수 있는것이다.
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
3.시스템 명령어
--------------------------------------------------------------------------------
(1). df (disk free)

기능    : 디스크의 남은 공간을 보여준다.
사용법  : df [option] [FileSystem | File]

옵션
        -k : kilobyte 단위로 보여준다.
        -m : megabyte 단위로 보여준다.

예제
        # df -k
        (kilobyte단위로 남은 공간을 보여준다. -기본값)
        # df .
        (현재 디렉토리가 포함되어 있는 파티션의 남은공간을 보여준다.)
--------------------------------------------------------------------------------
(2). du

기능    : 특정 디렉토리에서 하부디렉토리까지 포함한 디스크의 사용량을 보여주는 명령이다.
사용법  : du [option] [files]
옵션
        -a : 디렉토리에 있는 파일 하나하나의 크기를 출력한다.
        -s : 총 사용량만 표시해 준다.
        -k : 사용량을 kilobyte 단위로 출력해준다.
        -h : 용량을 보기 좋게 표시해준다.
예제
        'du -a'
        (현재 디렉토리의 디스크 사용량을 파일단위로 모두 출력한다.)
        'du -s *'
        (현재 디렉토리의 첫번째 단계까지만 디스크의 사용량을 출력한다.)
--------------------------------------------------------------------------------
(3). env

기능    : 현재 시스템 사용자들의 환경 변수를 보여준다.
사용법  : env
--------------------------------------------------------------------------------
(4). free

기능    : 가상메모리를 포함한 메모리의 사용현황을 보여준다.
사용법  : free
--------------------------------------------------------------------------------
(5). id

기능    : 자신의 ID번호와 자신이 속한 그룹의 ID를 보여준다.
사용법  : id
--------------------------------------------------------------------------------
(6). kill

기능    : 특정 프로세서에게 특정 시그널을 보낸다.
사용법  : kill [-signal_number] [process id]
예제    u 'kill -HUP 549'
        (549번 프로세서에 HUP신호를 보낸다.)
--------------------------------------------------------------------------------
(7). ps

기능    : 사용자나 시스템 프로세서의 상태에 관한 정보 출력
사용법  : ps [option]

옵션
        -a : 전체 사용자의 모든 프로세서를 출력
        -l : 결과를 상세하게 출력
        -u : 사용자 이름과 프로세서 시작 시간을 출력
        -x : 제어터미널을 갖고 있지 않은 프로세서를 출력

예제
        # ps -aux
        : 전체 사용자의 제어터미널을 갖고 있는 프로세서를 포함하여
          사용자 이름과 프로세서 시작시간을 포함하여 출력. 일반적으로 많이 쓰이는 형태
         
- END -         

출처 - http://blog.daum.net/mindus/15650888


'IT' 카테고리의 다른 글

[UNIX] 파일의 날짜와 시간정보를 변경하는 touch 명령어  (0) 2016.03.15

출처 : http://blog.naver.com/PostView.nhn?blogId=jinsang83&logNo=80095233911

m_Busy.Create(_T("Busy"), WS_CHILD|WS_VISIBLE|BS_CHECKBOX|WS_TABSTOP|BS_NOTIFY, 
CRect(300,2,355,22), this, Click_Busy);
m_Away.Create(_T("Away"), WS_CHILD|WS_VISIBLE|BS_CHECKBOX|WS_TABSTOP|BS_NOTIFY, 
CRect(360,2,415,22), this, Click_Away);
m_Mute.Create(_T("Mute"), WS_CHILD|WS_VISIBLE|BS_CHECKBOX|WS_TABSTOP|BS_NOTIFY, 
CRect(420,2,475,22), this, Click_Mute);

BS_CHECKBOX로 해야 내가 누를때마다 별도 처리가 가능하다 BS_AUTOCHECKBOX로 하면

내가 원하는 별도 처리가 불가능하다

자세한건 Win API 정보 200~201 페이지에 잘 써져있다...

그리구나서

메세지 맵에 

ON_BN_CLICKED(Click_Busy, &CMainFrame::UserStateBusyCheckBox)
ON_BN_CLICKED(Click_Away, &CMainFrame::UserStateAwayCheckBox)
ON_BN_CLICKED(Click_Mute, &CMainFrame::UserStateMuteCheckBox)

추가 후

afx_msg void UserStateBusyCheckBox(void);
afx_msg void UserStateAwayCheckBox(void);
afx_msg void UserStateMuteCheckBox(void);

메서드 선언 후

로그인 했을때

if (m_main->m_ptrDoc.m_userInfo.m_settinglist.m_busy)
{
m_main->m_Busy.SetCheck(BST_CHECKED);
}
if (m_main->m_ptrDoc.m_userInfo.m_settinglist.m_away)
{
m_main->m_Away.SetCheck(BST_CHECKED);
}
if (m_main->m_ptrDoc.m_userInfo.m_settinglist.m_mute)
{
m_main->m_Mute.SetCheck(BST_CHECKED);
}

클릭했을 때

void CMainFrame::UserStateBusyCheckBox(void)
{
if (m_Busy.GetCheck() == BST_CHECKED)
{
m_Busy.SetCheck(BST_UNCHECKED);

ptr->State = Send_Here;
SendFerret();
}
else if (m_Busy.GetCheck() == BST_UNCHECKED)
{
m_Busy.SetCheck(BST_CHECKED);

ptr->State = Send_Busy;
SendFerret();
}
}

void CMainFrame::UserStateAwayCheckBox(void)
{
if (m_Away.GetCheck() == BST_CHECKED)
{
m_Away.SetCheck(BST_UNCHECKED);

ptr->State = Send_Here;
SendFerret();
}
else
{
m_Away.SetCheck(BST_CHECKED);

ptr->State = Send_Away;
SendFerret();
}
}

void CMainFrame::UserStateMuteCheckBox(void)
{
if (m_Mute.GetCheck() == BST_CHECKED)
m_Mute.SetCheck(BST_UNCHECKED);
else
m_Mute.SetCheck(BST_CHECKED);

ptr->State = Send_Mute;
SendFerret();


+ Recent posts