(10101101)173/UNIX2009. 6. 17. 16:13
free명령어는 메모리상태를 종합적으로 확인이 가능한 명령어 입니다. free명령어를 통해 알아보는 정보는
* 메모리(RAM)의 전체용량
* 메모리의 사용중인 용량
* 메모리의 사용가능 용량
* 커널에서 사용되는 공유메모리 용량
* 커널에서 사용되는 버퍼에 용량
* 스왑(SWAP)메모리의 용량
* 캐쉬된 메모리의 용량
* 캐쉬 가능한 메모리의 용량

우선 free명령어는 기본적으로 메모리, 캐쉬, 스왑에 정보를 보여주게 됩니다.

[그림 1. free]

그림 1에서 보면 용량 단위는 KB단위로 보입니다.  이는 free명령에 -k옵션을 준 결과와 동일합니다. free명령의 결과를 -b, -k, -m, -g 옵션을 사용해 용량별로 확인이 가능합니다. 인간이라면 당연하게도 저 숫자들을 더하고 싶어집니다. 그럴때 사용하는 옵션이 바로 -t옵션입니다.

[그림 2. free -t]

-t 옵션을 사용하게 되면 Mem과 Swap행의 용량을 더하게 됩니다. -/+ buffers/cache행은 제외하게 됩니다. Mem은 순수하게 RAM의 용량이고 Swap은 설치시에 설정한 값을 말합니다. Swap은 윈도우에서 말하는 가상메모리와 같은것으로 하드디스크 공간을 설정한 만큼 잡아두고 RAM처럼 사용하는 부분입니다. 여기서 드는 의문는 -/+ buffers/cashe부분은 왜 Total값에 들어가지 않는가 라는 의문의 발생합니다. 그리고 하는것도 없어 보이는대 메모리 전체 용량(773,724KB)중 757,764KB를 사용한다고 보입니다. 사실 이는 리눅스의 운영체제적 입장에서 사용되는 메모리로 리눅스가 메모리를 효율적으로 사용하기 위해 미리 전체 메모리상에서 buffers + cache만큼의 메모리를 할당하게 됩니다. 이중중 메모리가 필요하게 될 경우 cached에 할당된 메모리를 넘겨주게 됩니다. 그래서 buffers와 cache를 더해보면 319,692 + 454,032 = 773,724 결국 메모리의 전체 용량과 같음을 확인하실 수 있습니다. 때문에 실질적으로 메모리에서 사용하고 있는 용량은 304MB(319,692)이고 남은 용량은 432MB(454,032) 입니다. 다시 432MB는 리눅스가 할당하여 사용하고 있는 상태입니다. 다른 옵션을 알아보겠습니다.

-o 옵션은 -/+ buffers/cache라인을 보여주지 않습니다.

[그림 3. -o : -/+ buffers/cache]

-l옵션은 High memory와 Low memory 정보까지 좀더 많은 결과를 보여줍니다.

[그림 4. -l High, Low memory]

-s 옵션은 뒤에 추가적으로 지정한 시간만큼 free명령을 반복해 주고 -c 옵션은 추가적으로 지정한 만큼 free옵션을 실행합니다. 예를 들어 다음과 같이 실행할 경우
[root@FC10VM /]# free -s 2 -c 3
free명령이 2초마다 한번씩 총 3번 실행되게 됩니다.

free명령의 결과는 /proc/meminfo의 파일 정볼르 불러와 보여주게 됩니다. 때문에 좀더 자세한 정보는 /proc/meminfo파일참고하는게 좋습니다.



Posted by Special Alex
(10101101)173/UNIX2009. 6. 10. 16:52
finger, w, who명령어와 같이 사용자에 정보를 알아내는 명령어 입니다. 이 명령어들의 차이점은 맨 마지막에 따로 도표화 하도록 하고 finger에 대해서 알아보겠습니다. finger는 Local, 원격 서버사용자의 계정 정보를 확인하는 명령어로 /etc/passwd파일을 근거로 합니다. 여러 정보를 보여주게 되는대 여기서 홈디렉토리에 .plan파일에 존재 유무에 따라 .plan파일을 보여주고 안보여 줍니다. 우선 finger명령어를 사용해 보도록 하겠습니다.
(.plan파일과 같이 사용 가능한 파일은 .project, .pgpkey, .forward 파일 인대 이중 .forward파일 제외한 파일은 끝에 .forward파일은 의미 그대로 앞쪽에 출력 됩니다. 출력 되는 위치는 그림 1에서 Last login과 New mail received줄 사이에 "Mail forwarded to [텍스트]"로 출력 됩니다. 여기서는 .plan파일로만 예를 보이겠습니다.)

[그림 1. finger와 finger root]

그림 1에 경우는 홈디렉토리에 .plan파일이 없기 때문에 "No Plan."부분이 보입니다.
그러면 이번에는 .plan파일을 만들어서 다시 해보겠습니다.

[그림 2. finger root시 .plan파일]

그림 2를 보면 처음에 finger root 명령에 No Plan.이라고 나옵니다 그래서 미리 만들어둔 plan파일을 이름을 .plan으로 바꾼 후 다시 finger root 명령을 내리면 .plan파일이 존재하기 때문에 .plan파일을 읽어요 내용을 보여주게 됩니다. 단순한 텍스트 내용이기 때문에 특별한건 없습니다. 명령어를 쓰더라도 텍스트로 인식하게 됩니다.

finger에는 lmps 4가지의 옵션이 있습니다.
-l 옵션은 생략가능한 옵션으로 finger root와 동일한 결과물이 보입니다. 즉 finger root는 finger -l root과 동일합니다.
옵션 설명
-l finger root와 동일한 결과물을 보여줍니다. 즉 finger -l root와 finger root는 동일한 명령이라고 보실 수 있습니다.
-m 대소문자를 가리는 옵션이라고 보시면 이해가 빠릅니다.
-p -l과 동일 하지만 .plan, .project, .pgpkey파일을 생략하고 보여줍니다 하지만 .forward는 생략하지 않습니다.
-s 그림 1에 finger와 동일한 명령으로 결과를 간단하게 보여줍니다.

[그림 3. finger와 finger -s의 차이]

마지막으로 앞서 언급했던 w, who, finger의 차이점 입니다.
w who finger 설명
O O O 사용자 ID
O O O 터미널 라인 ID(tty)
O   O 로그인 일자와 시간
  O   로그인 날짜와 시간
O   O 유휴 시간(Idle Time)
O     사용자가 실행중인 프로그램
    O 사용자의 로그인 위치
O     사용한 CPU시간
    O 이름(/etc/passwd에서 가져온 정보)
    O 사용자가 제공한 정보
O     시스템이 실행중인 기간 및 평균 부하



Posted by Special Alex
(10101101)173/UNIX2009. 5. 10. 21:13
cp는 copy의 약어로 파일이나 디렉토리를 복사할때 사용합니다. 보통 다음과 같이 사용 합니다.

[root@FC10VM /]# cp (디렉토리)copy1.txt (디렉토리)copy2.txt

[그림 1. cp man_cp.txt파일을 man_cp2.txt파일로 복사]

간단하게 man_cp.txt파일을 man_cp2.txt파이로 복사 했습니다. 이번에는 디렉토리를 복사해 보도록 하겠습니다.

[그림 2. cp testDir디렉토리를 testDir2디렉토리로 복사]

그런대 문제가 발생합니다. 파일에 경우 cp로 복사가 되지만 디렉토리의 경우 복사가 되지 않습니다. 그렇기 때문에 에러 문구가(빨간 밑줄) 보입니다. 그럼 cp로 어떻게 복사를 하느냐? 옵션을 줘서 복사를 하게 됩니다. 디렉토리 복사시 "-r"옵션으로 가능하며 파일에 -r옵션을 사용했다면 이와 상관없이 명령이 실행됩니다. -R옵션으로 사용해도 문제가 발생되지는 않습니다. cp명령을 man명령으로 봤을때 -r, -R옵션에 대해 설명이 큰 차이를 나타내지는 않습니다.
하지만 문제는 복사 후에 발생하게 됩니다. 아무런 옵션 없이 복사를 하게 되면 파일, 디렉토리 모두 정보가 변경 됩니다. 이 정보는 소유자, 그룹, 권한 등이 포함됩니다. 민감한 시스템 파일일 경우 소유자에 따라서 실행이 되지 않을수도 있으니 문제가 발생하게 됩니다. 이런 문제를 해결하는 옵션이 "-p"옵션 입니다. -p옵션을 사용해 파일이나 디렉토리를 복사하게 되면 모든 정보가 그대로 복사 됩니다.

[그림 3. cp -p 옵션]

그림 3에서 보면 testDir2_r과 testDir3_rp디렉토리 둘다 동일한 testDir디렉토리를 복사했는대 차이가 있습니다. 마지막 수정시간의 시간 정보가 testDir2_r디렉토리는 복사가 된 시간이 보이지만 testDir3_rp디렉토리는 testDir디렉토리와 같은 시간이 보입니다.(빨간 밑줄과 노란 밑줄) 이는 위에서 언급한 바와 같이 -p옵션을 사용해 모든 정보가 동일하게 복사가 되었습니다. 파일 디렉토리 내에 파일 또한 동일한 옵션에 적용을 받습니다.(빨간 밑줄과 박스, 노란 밑줄과 박스)

[그림 4. cp -p 옵션에 디렉토리 내부 적용]

그외에 cp에서 사용 가능한 옵션을 설명 하겠습니다.

옵션 설명
-a (archive) 원본 파일의 속성(Attribution)과 링크정보 등을 그대로 유지하면서 복사한다.
-dpR 옵션과 같은 혁활을 한다.
-b (backup) 복사할 대상이 이미 있어(복사할 파일이 동일한 이름으로 해당 위치에 존재하고 있을 경우)
이것을 덮어쓰거나 지울 경우에 대히배 백업본을 만듬
-d (no dereference) 만약 복사할 파일이 심블릭 파일이면 cp명령은 그 심블릭대상이 되는 파일을 복사한다.
때문에 이렇게 하지 않고 심블릭 파일 자체를 심블릭 정보와 함께 복사 할때 사용한다.
-f (force) 복사 대상 파일이 이미 있으면 강제로 지우고 복사한다.
-i (interactive) 복사 대상 파일이 이미 있으면 사용자에게 물어본다.
-l (link) 하드링크 형식으로 복사한다.(하드링크 형식이기 때문에 경로는 복사할 수 없다.)
-P (parents) 원본 파일이 디렉토리와 함께 지정되었을 경우 지정된 디렉토리를 그대로 복사한다.
이때 대상으로 사용될 수 있는 것은 디렉토리 이름이어야만 한다.
예를 들어 다음과 같이 명령어를 사용 한다면 "cp -P home/sysadmin/dir existing_dir"
결과는 existing_dir/home/sysadmin/dir 이런 식이 된다.
-p (preserve) 원본 파일의 소유주, 그룹, 권한, 시간정보 들이 그대로 보존되어 복사된다.
-r 일반 파일이 아니면, 그냥 복사되고, 디렉토리 라면 그 디렉토리와 함께
경로 안에 있는 모든 하위경로, 파일들이 복사 된다.
-s (symbolic link) 디렉토리가 아닌 일반 파일을 심블릭 링크 형식으로 복사한다. 이 때 복사할 원본 파일
이름은 절대경로('/'로 시작하는 경로)로 지정된 파일이름이어야 한다.
심블릭 링크를 지원하지 않는 시스템에서 이 옵션을 사용할 경우 오류 메시지를 보여준다.
-u (update) 복사할 대상이 파일 변경 날짜가 같거나 더 최근의 것이면 복사하지 않는다.
-v (verbose) 각 파일의 복사 상태를 자세히 보여준다.
-x (one file system) 원복과 대상 파일의 파일 시스템이 다를 경우에는 복사하지 않는다.
-R (recursive) 디렉토리를 복사할 경우에 그 안에 포함된 모든 하위디렉토리와 파일들을 모두 복사한다.
-S (suffix backup suffix) 복사 대상이 이미 있어 백업을 해야할 경우에 백업 파일에서 사용할 파일 이름의 꼬리 문자를
지정한다. 이것은 이미 지정되어 있는 SIMPLE_BACKUP_SUFFI 환경 변수를 무시하게 된다.
만약 이 환경변수도 지정되어 있지 않고 이 보션도 사용하지 않는다면 초기 값으로
Emacs와 같이 '~'문자를 사용한다.
-V (version control) 백업하는 방법을 지정하는데, 이미 지정되어 있는 VERISON_CONTROL환경 변수를
무시한다. 만약 이 환경 변수도 지정되어 있지 않고, 옵셩도 사용하지 않는다면
초기값으로 'existing'을 사용한다. 여기서 사용하는 백업방법은 GNU Emacs의
'version-control'값과 같다. 

-v {numbered, existing, simple}
t 또는 numbered : 항상 번호 있는 백업본을 만든다.
nil 또는 existing : 대상 파일이 이미 있을 경우에만 백업본을 만든다.
never 또는 simple : 간단한 백업을 만든다.



Posted by Special Alex