Posted
Filed under Linux

■ cp :: 파일을 현재의 위치나 다른 디렉토리로 복사(copy)한다.

문법

■ cp [ -abdfilPprsuvxR ] 파일명1 파일명2
■ cp [ -abdfilPprsuvxR ] 파일명(들) 디렉토리

옵션

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

설명

만일 파일명2가 이미 존재하는 파일의 이름이라면 기존에 있던 파일은 사라지고 새로운 복사본 파일로 바뀐다. 이것이 원하지 않는 결과라면 -i 옵션을 주어서 확인 작업을 거칠 수 있다. -i 옵션은 파일명2가 이미 존재하는 이름이라면 그대로 복사할 것인지 아닌지를 선택할 수 있게 물어온다.

사용예

■ $ cp -i blade.Z temp.Z
■ $ cp -r * /somewhere

당연히 -r 옵션은 파일명2가 디렉토리 이름일 때만 사용이 가능하다.

■■■■ crontab : 실행될 프로그램들과 스케줄의 cron 데몬을 구성한다.

문법

■ crontab -l [ -u 사용자 ]
■ crontab -e [ -u 사용자 ]
■ crontab -d [ -u 사용자 ]

옵션

-l : crontab 파일 목록을 보여준다.
-e : 에디터를 사용하여 crontab 파일을 수정한다.
-d : 사용자의 crontab 파일을 지운다.
-u 사용자 : 특정 사용자의 crontab 파일을 다루도록 지정한다. 이 명령을 사용하려면 슈퍼 유저로 로그인해야만 한다.

설명

crontab 파일 내의 빈 핵과 # 문자로 시작되는 행은 무시된다.

파일의 각 행은 M H D m d cmd 형태로 되어 있다. 필드의 에스테리스크(*)표시는 어떠한 값이든 일치하는 조건으로 가정한다는 의미이다.

■ M 분을 의미한다.(0-59) H 시를 의미한다(0-23)
■ D 날짜를 의미한다(1-31) m 달을 의미한다(1-12)
■ d 요일을 의미한다(0-6) cmd 실행할 명령을 의미한다.

■■ csh : 이것은 유닉스 C 셸이다. 하지만 리눅스에서는 tcsh에 링크되어 있는 파일에 불과하다. 자세한 내용은 tcsh를 참조하라.

■■ cut : 파일에서 필드를 뽑아낸다. 필드는 필드 구분자나 문자 위치로 지정된다.

문법

■ cut -c문자위치 파일명(들)
■ cut -f필드 -d필드 구분자 [ -s ] 파일명(들)

옵션

-c문자위치 : 잘라낼 곳의 글자 위치를 지정한다. 콤마를 사용하거나 하이픈을 사용하여 범위를 정할 수도 있으며, 이런 표현들을 혼합하여 사용할 수도 있다.
-f필드 : 잘라낼 필드를 정한다. 지정하는 방법은 -c 옵션과 같다.
-d필드 구분자 : 필드를 구분하는 문자를 지정한다. 디폴트는 탭 문자다.
-s : 필드 구분자를 포함할 수 없다면 그 행은 하지 않는다.

사용예

■ $ cut -f1,5 -d: /etc/passwd
■ $ cut -c1,3-7 /usr/tmp/board

■■ date : 시스템은 현재의 날짜와 시간을 유지하고 있다. date 명령을 사용하면 그러한 시간을 확인할 수 있다. 또한 날짜와 시간 정보를 변경할 수 있다. 물론 시스템의 날짜와 시간은 슈퍼 유저만이 변경할 수 있다.

문법

■ date [yymmddhhmm [ss] ]
■ date +형식

설명

date 는 위와 같이 주어진 인수가 없다면 현재 시스템의 시간과 날짜를 출력한다. 주어지는 인지가 있다면 그에 따라서 시스템의 시간과 날짜를 변경한다.

yy는 연도를 나타내는 두 숫자이며(99년까지), mm은 월을 나타내는 수이다. 그리고 dd는 날짜, hh는 24시간 단위로 표현되는 시간이며, mm은 분을 의미한다. 마지막 ss는 초를 의미하는 부분인데, 명시하지 않아도 상관없다.

+형식 구문을 사용한다면 날짜가 출력되는 형태를 지정할 수 있다. 여기에 사용되는 기호는 다음과 같은 것들이 있다.

■ n 개행 t 수평탭
■ H 시간(00-23) I 시간(01-12)
■ k 시간(0-23) l 시간(1-12)
■ M 분(00-59) p AM 혹은 PM
■ r 시간(12단위, hh:mm:ss AM/PM)
■ s 초(00-61) T 시간(24단위, hh:mm:ss)
■ X 시간 표현(hh:mm:ss) Z 시간대(예를들어CMT)
■ a 요일표현(Sun-Sat) A 요일명(Sunday-Saturday)
■ b 달 표현(Jan-Dec) B 달이름(January-December)
■ D mm/dd/yy 형태의 날짜 h %b 와 같은 것
■ j 일년단위 날짜(001-366) m 달(01-12)
■ y 서기의 뒷부분 숫자(00-99) Y 서기(0000-9999)

사용예

■ $ date

The Oct 1 15:57:23 KST 1996

■ df : 디스크의 여유 공간을 검사하여 보고한다.

문법

■ df [ -aikpvtx ] 파일시스템

옵션

-a : 0 블록을 가진 파일도 보고한다. 기본적으로는 무시한다.
-i : 블록 사용 대신 incode 사용 정보를 보고한다.
-k : 블록의 크기를 1K바이트로 계산한다.
-p : POSIX 형태의 출력을 한다.
-v : System V의 df와의 호환을 위한 옵션이다. 무시된다.
-t 형태 : 특정 형태의 파일 시스템으로 검사를 제한한다.
-x 형태 : 특정 형태의 파일 시스템 이외의 것으로 검사를 제한한다.

설명

이것은 바이트 크기를 사용하는 대신 블록 단위로 보고한다는 점을 유의해야 한다. 기본적으로 512바이트 크기로 한 블록을 다룬다.

■■ diff : 두 개의 파일을 비교한다. 이것은 두 개의 파일이 과연 어떻게 다른가를 중요시한다. 그래서 어떻게 수정되어야만 두 파일이 같아질 수 있는지를 말해준다.

문법

■ diff [ -ibefw ] 파일명1 파일명2

옵션

-i : 대소문자를 구분하지 않는다.
-b : 하나 이상의 공백 문자는 모두 같은 것으로 취급해서 비교한다.
-e : ed 에디터를 위한 스크립트를 생성한다.
-f : 반대 순서로 스크립트를 생성한다. 하지만 이것은 ed 에디터에 사용될 수가 없다.
-w : 탭(tab) 문자를 포함한 모든 공백 문자를 무시하고 비교 작업을 수행한다.

설명

diff가 보여주는 정보는 언뜻 보아서는 이해할 수 없다. 일단 명심해야 할 것은 표본이 되는 문서는 두 번째 파일이라는 점이다. 그래서 모든 정보는 '첫번째 파일이 어떻게 수정되어야 두 번째 파일과 같아지느냐'하는 것이다.

파일2에서 파일1로 첨가(append)되어야 할 것은 'a' 기호로 표현된다. 그리고 파일1에서 제거(delete)되어야 하는 내용은 'd'로, 두 파일의 내용이 바뀌어(change)하는 내용은 'c'기호로 표시한다. 이러한 수정 기호와 함께 행의 번호가 함께 표시되며, 해당 줄의 내용이 함께 출력된다.

■ 행숫자 a 파일2시작행번호 파일2끝행번호
■ 파일1시작행번호 파일1끝행번호 d 행숫자
■ 파일1시작행번호 파일1끝행번호 c 파일2시작행번호 파일2끝행번호


사용예

■ $ diff -i doc1.txt doc2.txt

■ du : 지정된 특정 디렉토리나 파일들이 차지하는 공간을 보고한다.

문법

■ du [ -sabxL ][ 디렉토리,파일명(들) ]

옵션

-s : 총 합계만을 따진다. 하위 디렉토리의 숫자 등은 나오지 않는다.
-a : 크기가 계산된 각 파일의 크기를 보인다.
-b : 바이트 크기로 출력한다.
-x : 현재 디렉토리에 마운트된 파일 시스템만 검사된다.
-L : 심볼릭 링크 자신의 공간 대신 연결된 파일의 크기를 다룬다.

설명

디렉토리나 파일을 지정하지 않으면 현재 디렉토리로 간주된다. 크기는 1K 바이트 크기의 블록으로 보고한다.

사용예

■ $ du /root ,,/root 디렉토리의 공간 크기를 보고한다.

■■■ echo : echo는 인수로 지정된 문자열을 그대로 화면에 출력한다. 이것은 인수로 주어진 문자열이 오퍼레이팅 시스템으로 읽혀진 후에 다시 그대로 화면에 '메아리'치는 것으로 생각할 수 있다.

문법

■ echo [ -ne ] 문자열

옵션

-n : 새로 개행하지 않고 출력하게 한다.
-e : 문자열 중에서 백슬래쉬와 조합되는 특수 문자를 인식하게 한다. 그러한 특수 문자들은 다음과 같은 것들이 있다.

■ \a 밸소리 \b 백스페이스
■ \f 용지바꿈(form feed) \n 행바꿈
■ \r 0 칼럼으로(carriage return) \f 탭(tab)
■ \v 수직 탭 \\ 백슬래쉬 문자
■ \nnn 8진법으로 표기되는 ASCII 문자 \c 출력 후 행바꿈 금지

설명

일반적으로 echo 명령은 프롬프트 상에서 사용되는 일은 없다. 하지만 스크립트 작성시 번번히 사용된다. 셸 스크립트 상에서 echo 명령은 BASIC의 PRINT 명령이나 C 언어의 printf() 함수와 같이 메시지를 출력하는 데에 자주 사용된다. 또한 전혀 필요없을 것 같은 echo의 -n 옵션도 스크립트 상에서는 유용하게 사용될 수 있다.

사용예

■ $ echo "The RedHat !"
■ The RedHat !
■ $ echo -e 'Linux\RedHat !'
■ Linux RedHat !

■ ed : 풀 스크린 에디터를 사용할 수 없는 열악한 환경의 터미널을 위한 라인 에디터(line editor)이다.

문법

■ ed [ - ][ -s ][ -p문자열 ] 파일명

옵션

- : e, r, w, q, ! 명령에 의해 발생하는 메시지를 금지한다.
-s : 검사 작업을 금지한다.
-p문자열 : 프로프트를 원하는 문자열로 바꾼다.

설명

ed는 기능이 다양한 에디터이나 라인 에디터는 거의 사용할 일이 없을 것이다.

■■ env : 현재의 환경에 영향을 주지 않고 원하는 환경을 만들어 명령을 실행한다. 또는 현재의 환경을 보고한다.

문법

■ env [ - ][-i ][ -u 이름 ][ 이름=값 ][명령]

옵션

- : 뒤에 오는 이름=값 목록으로 환경을 제한한다.
-i : 현재의 환경을 무시하고 빈 환경 상태로 시작한다.
-u 이름 : 현재의 환경에 그 이름의 변수가 있다면 제거한다.

설명

'이름=값'의 형식으로 특정 환경 변수를 지정해서 명령을 실행한다. 이러한 값을 필요한 대로 여러 개 나열하면 되고, 현재의 환경은 변경하지 않으므로 명령의 수행이 끝나면 환경의 상태는 이전과 다름없게 된다.

사용예

■ $ env HOME=/usr/victor tsh

홈 디렉토리 변수를 지정하여 셸을 실행한다.

■ $ env ,,현재 설정되어 있는 환경 변수들을 보여준다.

■■ file : 파일이 어떠한 형태의 파일인지 알아낸다.

문법

file [-czL ][ -fm 파일명 ] 파일명(들)

옵션

-c : 매직 파일의 파싱된 형태를 보여준다.
-z : 압축되어 있는 파일의 형태를 검사한다.
-L : 뒤따르는 심볼릭 링크를 야기시킨다.
-f 파일명 : 검사한 파일에 대해 리포트를 만들 파일의 이름을 지정한다.
-m 파일명 : 파일의 형태를 결정하는 데에 사용되는 매직 파일을 정한다.

설명

파일이 텍스트 문서인지 실행할 수 있는 파일인지 아니면 데이터 파일인지 등을 인식한다. 에디터를 사용해서 보거나 수정될 수 있는 파일인가 알아 보는 데에 많이 사용된다.

사용예

■ $ file -z /home/Book.Z

2009/07/17 20:30 2009/07/17 20:30
Posted
Filed under Linux

■ adduser : 사용자를 새로 등록한다.

설명

이것은 슈퍼 유저만이 사용할 수 있다. 명령을 입력하면 로그온 이름 등을 차례로 물어오며, 그에 따라서 알맞게 입력해 나가면 된다.

■ Enter login name for new account (^C to quit): blade
■ Editing information for new user [blade]
■ Full name: Park Chan Wook ,,사용자 전체 이름을 입력
■ GD [100]: ,,정해주는 값을 그냥 사용한다.

그외에도 홈 디렉토리에 사용하는 셸 등을 계속 물어오는데, 대괄호 속에 내정된 것을 그냥 사용하고자 한다면 엔터키만 누르면 된다. 패스워드 등을 입력하고 나면 지금까지 입력된 정보를 보여주고, 몇 가지 생성 작업을 화면으로 보여준 후 작업을 종료한다.

■ at : 프로그램을 지금이 아닌 나중에 실행하도록 예약한다.

문법

■ at -q [-m][-f 파일명] 큐(queue) 시간
■ at -r 작업번호
■ at -l

옵션

-q 큐 : 대소문자 알파벳으로 큐를 지정한다. 순서적으로 빠른 알파벳이 지정된 큐 일수록 CPU 시간 점유 우선권이 낮다.
-r 작업번호 : 큐에서 작업 번호가 지시하는 작업을 지운다. 슈퍼유저가 아니라면 자신의 작업만을 지울 수 있다.
-l : 현재 계획된 작업들의 목록을 보여준다. 슈퍼 유저라면 모든 작업들의 계획목록을 보여준다.
-m : 작업이 완결되면 사용자에게 메일을 보낸다.
-f 파일명 : 표준 입력이 아닌 지시된 파일에서 작업을 읽어온다.

설명

명령은 기본적으로 표준 입력 장치를 통해서 받으며, ^D로 입력을 종료한다. 리다이렉션을 사용하여 다른 파일의 내용을 사용할 수 있다.

/etc/at.allow 파일이 있다면 이 파일에 명단이 있는 사용자만이 at 명령을 사용할 수 있다. /etc/at.allow 파일이 없다면 /etc/at.deny 파일을 찾는다. 이 파일에 목록이 있는 사용자는 at 명령을 사용할 수 없다. 두 파일 모두 찾지 못한다면 오로지 슈퍼 유저만이 at 명령을 사용할 수 있다. 그리고 /etc/at.deny 파일이 비어 있다면 모든 사용자가 at 명령을 사용할 수 있다.

시간을 지정할 때 상당히 다양한 방법을 사용할 수 있다. hhmm 혹은 hh:mm 형태도 가능하며, noon, midnight이나 오후 4시를 의미하는 teatime이라고도 할 수 있다. 오전 오후를 쉽게 구분하려면 am pm 문자를 추가해도 된다. 이미 지나간 시간이라면 다음 날 그 시간에 수행될 것이다. 정확한 날짜를 지정하려면 mmddyy 혹은 mm/dd/yy 아니면 dd.mm.yy 형태 중 선택하라.

현재부터 얼마의 시간이 경과한 후에 수행할지를 지정하려면 + 기호를 사용하라. 이 + 기호뒤에 숫자를 명시하고, 다시 뒤에 그 숫자의 단위가 무엇인지 지정하면 된다.

사용예

■ at 8am work : work에 수록된 작업 사항들을 오전 8시에 수행하도록 한다.
■ at noon work ,,정오에 work에 수록된 작업을 수행한다.
■ at -f work 14:40 tomorrow


내일 오후2시 40분에 work 파일에 수록된 작업을 수행한다.

■■■■ banner : 인수로 주어진 문자열을 큰 글씨로 만들어서 출력한다.

문법

■ banner [ -w [숫자] ] 문자열

옵션

-w : 옵션 지정만 하면 80 칼럼으로 폭을 바꾼다. 지정하지 않으면 132 칼럼으로 내정되어 있다. -w 옵션 뒤에 숫자를 지정하면 원하는 폭으로 조정할 수 있다.

설명

출력은 표준 출력으로 내정되어 있다. 글자는 열 배 정도 확대된다. 글자는 에스터리스크(*)를 조합하여 만든다.

사용예

■ banner "hello world"
■ banner linux | lqr ,,디폴트 프린터에 확대한 글자를 출력한다.

■■■ bash : 이것은 리눅스의 Boume 셸이다. sh를 사용하면 sh가 bash를 호출하여 실행한다. bash를 직접 사용하지 말고 sh를 사용하도록 하라.

문법

■ sh [ 옵션 ][ 파일 ]

설명

sh의 설명을 참조하라.

■■ biff : 전자우편의 수신을 즉시 알려주는 동작을 가능하게 할 것인지 그렇지 않은 지의 여부를 보여주거나 결정한다.

문법

■ biff [ y 혹은 n]

설명

유닉스 셸은 사용중이라도 주기적으로 전자우편의 수신 여부를 점검한다. 만일 사용자가 전자우편이 도착하는 즉시 알고자 한다면 biff를 사용하여 그것을 지시할 수 있다. 또는 언제라도 그 기능을 해제할 수도 있다. biff는 인수없이 사용되면 현재 어떤 상태로 되어 있는지 보여준다. 기능 설정과 해제 여부는 y 혹은 n 인수를 주어서 결정한다.

사용예

■ $ biff
■ is n ,,전자우편 수신 즉시 통고 기능은 설정되어 있지 않음
■ $ biff y ,,기능설정
■ $ biff
■ is y

■ cal : 서기 원년부터 9999년까지의 달력을 볼 수 있다.

문법

■ cal [-jy] [ [ 달 ] 연도 ]

옵션

-j : 1월 1일부터 날짜수를 계산하는 julian 날짜를 표시한다.
-y : 올해의 달력을 표시한다.

설명

인수를 하나만 준다면 그 숫자는 연도를 의미하는 것으로 간주된다. 두 개의 숫자를 준다면 앞의 것은 월, 그 다음은 연도를 의미하는 것이 된다. 우리의 습관과는 다른 방법을 사용한다. 아무 인수도 주어지지 않으면 이번달의 달력을 표시한다. 연도를 표기할 때는 서기를 완전히 표기해야 한다. 예를들어 97은 1997년이 아니라 서기 97년의 달력을 출력할 것이다.

사용예

■ $ cal 1997
■ $ cal 4 1997

■■ cat : cat은 catenate(사슬로 잇다. 연결하다)에서 이름이 유래한다. 이것은 파일의 내용을 화면에 출력하는 데 사용되기도 하며 파일을 다른 곳에 순차적인 스트림으로 보내기 위해 사용된다.

문법

■ cat [ -benstuvETA ] [ 파일명(들) ]

옵션

-b : 공백 외의 글자가 있는 모든 행의 개수를 센다.
-e : 제어 문자를 ^ 형태로 출력하면서, 각 행의 끝에 $를 추가한다. -vE와 같다.
-n : 각 행을 출력하면서 행 번호를 함께 첨부한다.
-s : 중복되고 겹치는 빈 행은 하나의 빈 행으로 처리한다.
-r : 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다. -vT와 같다.
-u : 유닉스 호환성을 위해 추가된 옵션으로서 무시된다.
-v : tab과 행바꿈 문자를 제외한 제어 문자를 ^ 형태로 출력한다.
-E : 각 행마다 끝에 $ 문자를 출력한다.
-T : 시로서 탭(tab) 문자를 출력한다.
-A : -vET 옵션을 사용한 것과 같은 효과를 가진다.

설명

유닉스 시스템은 기본적으로 텍스트 자료들을 처리하는 것을 매우 중요시 여겼다. 많은 초기 설정 작업들이 텍스트 문서로 이루어지고, 텍스트 문서를 처리하는 수많은 명령들이 있다. cat 명령은 그러한 것들 중 기본적인 것이다. cat 명령은 읽어들이는 파일 이름을 지정하지 않으면, 기본 내정값으로 표준 입력 장치를 선정한다.

■ $ cat

이렇게 하면 키보드로부터 입력을 받고, ^d로 입력이 끝나면 다시 표준 출력 장치인 화면으로 출력한다.

사용예

■ $ cat document.1 ,,document.1 파일을 화면으로 출력한다.
■ $ cat content report.first myreport

content와 report.first 두 개의 문서가 연결된 myreport라는 파일을 생성하게 된다.

■ cd : 현재 작업하는 디렉토리를 변경한다.

문법

■ cd [ 디렉토리 ]

설명

디렉토리 이름과 cd 명령 사이에 반드시 공백이 있어야 한다. 디렉토리 이름을 주지 않고 수행하면 사용자의 홈 디렉토리로 이동한다. 자신이 이동하고자 하는 디렉토리는 자신에게 실행 권한(execution permission)이 있어야 한다.

사용예

■ $ cd /home
■ $ pwd
■ /home

■■■ chgrp : 파일의 그룹 소유권을 바꾼다.

문법

■ chgrp [ -cfvR ] 그룹 파일들

옵션

-c : 실제로 소유자가 바뀐 파일에 대해서 자세히 기술한다.
-f : 파일의 그룹 소유권을 바꿀 수 없더라도 에러 메시지를 출력하지 않는다.
-v : 소유권의 바뀜에 대해서 자세히 기술한다.
-R : 디렉토리와 그 내용 파일들의 소유권을 재귀적으로 모두 바꾼다.

설명

파일의 소유자나 슈퍼 유저만이 파일의 그룹 소유권을 바꿀 수 있다. chgrp 명령 뒤에 원하는 옵션을 사용한 후 목적하는 그룹의 이름을 명시하고 대상 파일의 이름을 명시한다.

사용예

■ $ chgrp DoublePlus /usr/project/*

이것은 /usr/project의 모든 파일들의 소유권을 DoublePlus 그룹으로 바꾼다.

■■■ chmod : 파일의 모드를 바꾼다. 파일의 모드는 권한(permission) 을 제어한다.

문법

■ chmod [ -cfvR ] 모드 파일명(들)
■ chmod [ -cfvR ] 레벨 동작 권한 파일이름(들)

옵션

-c : 실제로 파일의 권한이 바뀐 파일만 자세히 기술한다.
-f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 권한에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.

설명

위에서 보인 문법에서 첫 번째 보인 형식에 사용되는 모드는 파일의 권한을 8진수로 표현한 값이 된다. 파일의 권한은 세 가지가 있기 때문에 각 특성을 하나의 비트로 표현하면 0부터 7까지의 수로 표현할 수 있다. 이것은 8진법 표현이 매우 적당하다.

두 번째 형식은 어떤 사용자 레벨을 바꿀 것인가 어떻게 바꿀 것인가를 개별적으로 정하는 방법이다. 숫자를 사용하지 않고 ls 등을 사용할 때 실제로 볼 수 있는 기호 문자를 사용한다는 것과 특정 권한을 줄 것인가 뺄 것인가 지정할 수 있다는 장점이 있다. 특정한 경우 두 번째 형식이 편리하겠지만 고유한 값의 권한을 지정하는데에는 첫 번째 형식이 훨씬 편리할 것이다. 8진법을 다루는 것은 조금만 알면 너무나 쉽기 때문이다.

사용예

■ $ chmod 666 broadboard ,,파일을 모두가 읽고 쓸 수 있도록 한다.
■ $ chmod 746 broad ,,파일 권한을 -rwxr--rw-로 변경한다.
■ $ chmod o+x,g-w broadboard

파일 소유자는 실행권한을 추가하고, 그룹은 쓰기 권한을 금지한다.

■ $ chmod u=r broad ,, 다른 사용자의 권한을 읽기로 제한한다.

사용자의 다른 권한은 사라져 버린다.

■■■ chown : 파일의 소유권을 다른 사람에게로 변경시킨다.

문법

■ chown [ -cfvR ] 사용자 파일명(들)

옵션

-c : 실제로 파일의 소유권이 바뀐 파일만 자세히 기술한다.
-f : 파일의 소유권이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 소유권에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 소유권을 재귀적으로 모두 바꾼다.

설명

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

사용예

■ $ chown blade /user/sisap/*

/usr/sisap 디렉토리의 모든 파일을 blade의 것으로 바꾼다.

■■■ clear : clear 명령은 도스의 cls와 마찬가지로 화면을 지우는 동작을 한다.

문법

■ cmp [-ls][파일명][파일명2][오프셋1][오프셋2]

옵션

-l : 일치하지 않는 모든 바이트 값과 그 오프셋을 알 수 있다.
-s : 비교만을 수행할 뿐 아무런 메시지도 출력하지 않는다.

설명

옵션없이 두 파일 이름만을 지정하면 cmp는 두 개의 파일 처음부터 순서대로 비교를 시작한다. 만일 끝까지 차이점을 발견하지 못하면 cmp는 조용히 끝난다.

만일 중간에 다른 점을 발견한다면 더 이상의 작업은 중단하고 차이를 발견한 지점을 알려주고는 종료한다. 또한 계속해서 일치해 나가다가 두 파일 중 어느 하나가 끝나는 경우가 있을 수 있다. 다시 말해, 한 파일이 다른 파일의 앞부분에 해당하는 경우이다. 이때는 어느쪽 파일의 end of file 표시를 만나게 되었는지를 알려주고 종료한다.

■ $ cmp document1 document2
■ document1 document2 differ: char 128, line 13 ,,차이 발견

오프셋을 지정하면 파일의 어느 부분부터 비교할 것인지를 정할 수 있다. -s 옵션이 왜 필요한 지를 이해하지 못할 테지만, cmp 명령이 보이지 않게 리턴값을 들려준다는 점을 알면 이해할 수 있을 것이다. cmp는 비교 후 두 파일이 일치한다고 판단하면 0을 리턴하며, 그렇지 않으면 1을 리턴한다. 셸 스크립트 상에서 비교 결과만을 원하고 화면에 메시지가 출력되는 것을 원치 않을 때에는 이러한 옵션을 사용할 수 있을 것이다. C 언어를 아는 사람이라면 금방 이해할 수 있었으리라 생각된다.

사용예

■ $ cmp mail.1 mail.2 13 14

■■■■■ compress : 파일을 압축하거나 압축을 푼다.

문법

■ compress [ -cCdfv ] 파일명

옵션

-c : 옵션을 사용하면 압축 결과가 표준 출력으로 나가며 파일은 변함없다.
-C : 파일을 블록으로 분화하는 것을 금지한다. 이것은 compress의 구식 버전이 파일을 읽을 수 있도록 하기 위함이다.
-f : 수행 결과 파일과 같은 이름의 파일이 있다면 물어보지 않고 덮어쓴다. 또한 파일의 크기가 줄어들지 않더라도 파일 이름에 .Z를 추가한다.
-v : 파일이 압축되면 압축 효율을 퍼센트로 보여준다.

설명

압축된 파일은 이름에 접미사 .Z가 추가된다. 압축 알고리즘에 의해 크기가 줄어드는 경우만 압축을 수행한다. -d 옵션은 역으로 압축을 풀지만 uncompress를 사용하면 옵션을 주지 않고 압축을 풀 수 있다. 압축을 푸는 경우 파일 이름 뒤에 접미사 .Z를 생략할 수도 있다.

사용예

■ $ compress -v roman
■ $ compress -d noman.Z 혹은 $ compress -d roman

2009/07/17 20:30 2009/07/17 20:30
Posted
Filed under Linux

emulation 항목에서 Linux+ANSI Color로 설정한 뒤에

/*

 * ANSI + ANSI Color로 하는게 더 좋다. ANSI가 지원된다면...

 * top 유틸에서 Linux가 지원이 안된다.

 */


~/.vimrc에 아래 줄 추가

if $TERM =~ "linux" || $TERM =~ "ansi"
  set t_Co=8
  set t_Sf=\033[3%p1%dm
  set t_Sb=\033[4%p1%dm
  syntax on
endif


해주면 된다.


이렇게 바뀐다

원래는...

 
추가 팁
소스화일을 highlighting된 html로 만들고 싶다면 vi에서
:so $VIMRUNTIME/syntax/2html.vim
해주면 된다.
2009/07/17 20:29 2009/07/17 20:29
Posted
Filed under music
If I were a boy
내가 남자라면
Even just for a day
하루만이라도 남자가 될 수 있다면
I'd roll out of bed in the morning
난 아침에 침대에서 일어나
And throw on what I wanted and go
입고 싶은대로 입고 나갈거야
 
Drink beer with the guys
남자들과 맥주 마시고
And chase after girls
여자들을 쫓아다니고
I'd kick it with who I wanted
아무하고 놀러 다닐거야
And I’d never get confronted for it
누가 막지도 않겠지
Because they'd stick up for me
사람들은 날 이해해 줄테니
 
If I were a boy
내가 남자라면
I think that I'd understand
여자를 사랑하는 게 어떤 기분일지
how it feels to love a girl
이해할 수 있을 것 같아
I swear I'd be a better man
난 더 나은 남자가 될 수 있을 거라고 확신해
 
I'd listen to her
여자의 말에 귀를 귀울일거야
cause I know how it hurts
소중한 사람을 잃어버리는게
when you loose the one you wanted
얼마나 아픈지 아니까
cause he's taken you for granted
그는 네가 얼마나 소중한 지 알지 못하니까
and everything you had got destroyed!
너의 모든 것이 무너져 버렸으니까!
 
If I were a boy
내가 남자라면
I would turn off my phone
난 전화기를 끄고 있을거야
Tell everyone that its broken
다른 사람들에게는 망가졌다고 말하고
so they think that I was sleeping alone
그러면 모두가 내가 혼자 자고 있었다고 생각하겠지
 
I'd put myself first
언제나 나를 중심으로 생각할거야
and make the rules as I go
내가 바라는데로 세상이 돌아가도록 할거야
cause I know that she’ll be faithful
집에서 돌아올 날 기다리는 그녀가
waiting for me to come home
충실할거라는걸 아니까
 
If I were a boy
내가 남자라면
I think that I could understand
여자를 사랑하는 게 어떤 기분일지
how it feels to love a girl
이해할수 있을것 같아
I swear I'd be a better man
난 더 나은 남자가 될수 있을거라고 확신해
 
I'd listen to her
여자의 말에 귀를 기울일거야
Cause I know how it hurts
소중한 사람을 잃어버리는게
when you loose the one you wanted
얼마나 아픈지 아니까
cause he's taken you for granted
그는 연인을 당연한 존재로만 여기니까
and everything you had got destroyed!
너의 모든 것이 무너져 버렸으니까
 
It's a little too late for you to come back
돌아오기에 넌 이미 늦었어
Say its just a mistake
그저 실수라고만 말하지
Think I forgive you like that
내가 그렇게 널 용서해 줄거라고 생각하지
If you thought I would wait for you
내가 널 기다려 줄 거라고 생각했다면
You thought wrong
넌 틀렸어
 
But your just a boy
하지만 넌 그저 남자일 뿐이야
You don't understand
넌 이해못해
How it feels to love a girl
여자를 사랑하는 게 어떤 기분인지
Someday you'll wish you were a better man
넌 내가 더 나은 남자가 되길 바라겠지만
 
You don't listen to her
소중한 사람을 잃기 전까지는
You don't care how it hurts
넌 여자들의 말을 듣지도 않잖아
Until you lose the one you wanted
그게 얼마나 아픈지 신경도 안쓰지
Cause you taken her for granted
넌 여자를 당연한 존재로만 여기니까
And everything that you had got destroyed!
그리고 네가 가진 모든 것이 무너져 버렸으니까
 
But your just a boy
넌 그냥 한 남자일 뿐이야
2009/07/17 20:29 2009/07/17 20:29
Posted
Filed under etc

CPU 스케줄링은 준비완료 큐에 있는 어는 프로세스에 CPU를 할당할 것인지를 결정하는 문제를 다룬다. 그리고 이러한 문제를 다루는 여러가지 CPU스케줄링 알고리즘들이 있다.



FCFS 스케줄링(First Come, First Served Scheduling)

가장 간단한 CPU 스케줄링 알고리즘이다. 이 방법에서는 CPU를 먼저 요청하는 프로세스가 CPU를 먼저 할당받는다. FIFO 큐로 쉽게 구현하고 관리할 수 있다. 그러나 이 알고리즘 하에서 프로스세스들의 평균 대기 시간은 가끔 대단히 길 수 있다. 시간 0에 도착한 다음의 프로세스 집합을 생각해보자.(CPU 버스트 시간 단위는 밀리초이다)


프로세스(버스트시간)

P1(24)

P2(3)

p3(3)


프로세스들이 P1, P2, P3 순으로 도착하고 FIFO 서비스를 받는다면, P1의 대기시간(0), P2의 대기시간(24), P3의 대기시간(27)의 평균 대기시간은 (0 + 24 + 27)/3 = 17 밀리초이다. 그러나 프로세스들이 P2, P3, P1 순으로 도착하면 평균 대기시간은 (0 + 3 + 6)/3 = 3 밀리초이다.


일반적으로 FCFS 스케줄링 정책 하에서 평균 대기시간은 최소가 아니며, CPU 버스트 시간이 크게 변할 경우 평균 대기시간도 상당히 변한다.



SJF 스케줄링(Shortest Job First Scheduling)

이 알고리즘은 각 프로세스에 그것의 다음 CPU 버스트 길이를 연관시킨다. CPU가 이용 가능해지면, 가장 작은 다음 CPU 버스트를 가진 프로세스에게 CPU를 할당한다. 두 프로세스가 동일한 길이의 다음 CPU 버스트를 가지면, 순위를 정하기 위해 FCFS 스케줄링을 적용한다. 이 스케줄링은 프로세스 전체길이(CPU 버스트 시간, I/O 처리 시간 등)가 아니라 다음 CPU 버스트의 길이에 의해 스케줄링이 되는 것을 유의하기 바란다.


프로세스(버스트시간)

P1(6)

P2(8)

P3(7)

P4(3)


SJF 스케줄링을 이용하면 위의 프로세스들은 P4 → P1 → P3 → P2의 순서로 스케줄링 될것이다. P4의 대기시간(0), P1의 대기시간(3), P3의 대기시간(9), P2의 대기시간(16)의 평균 대기시간은 (0 + 3 + 9 + 16)/4 = 7 밀리초이다. 만일 FCFS 스케줄링을 사용했다면 평균 대기시간은 10.25 밀리초가 되었을 것이다.


SJF 스케줄링 알고리즘은 주어진 프로세스들의 집합에 대해 최소의 평균 대기시간을 가진다는 점에서 최적임이 증명 가능하다. 그러나 SJF 알고리즘의 실제 어려움은 다음 CPU 요청의 길이를 파악하는 것이다. SJF 알고리즘이 최적이긴 하지만 단기 CPU 스케줄링 수준에서는 구현될 수 없으며, 한가지 접근 방식은 다음 CPU 버스트의 길이를 특정한 방법으로 추정하여, SJF 스케줄링과 근사한 방법을 사용하는 것이다.


비선점 SJF 스케줄링 알고리즘은 현재 CPU가 할당된 프로세스의 잔여 버스트 시간보다 더 짧은 CPU 버스트 시간을 갖는 새로운 프로세스가 준비완료 큐에 도착하여도 현재 CPU가 할당된 프로세스를 완료한 후에 새로 들어온 프로세스가 선택되어지지만, 선점형 SJF 스케줄링 알고리즘은 현재 CPU가 할당된 프로세스를 준비완료 큐로 보내고 새로 들어온 더 짧은 길이의 버스트 시간을 갖는 프로세스를 CPU에 할당할 것이다. 예를 들어 다음의 네 프로세스들을 생각해보자.


프로세스(도착시간, 버스트 시간)

P1(0, 8)

P2(1, 4)

P3(2, 9)

P4(3, 5)


선점형 SJF 스케줄링 알고리즘 하에서 프로세스들의 실행 순서와 버스트 길이, 시작 시간은 다음과 같다.


P1(1, 0) → P2(4, 1) → P4(5, 5) → P1(7, 10) → P3(9, 17)


프로세스 P1은 준비완료 큐에 있는 유일한 프로세스이므로 시간 0에 시작된다. 프로세스 P2는 시간 1에 도착한다. 프로세스 P1의 잔여시간(7)이 프로세스 P2가 요구하는 시간(4)보다 크기 때문에 프로세스 P1은 선점되고 프로세스 P2가 스케줄 된다. 프로세스 P3는 시간 2에 도착하지만, 프로세스 P2의 잔여시간(3)보다 프로세스 P3가 요구하는 시간(9)보다 작기 때문에 선점은 일어나지 않으며 나머지 경우도 마찬가지이다.


P1의 대기시간(10 - 1), P2의 대기시간(1 - 1), P3의 대기시간(17 - 2), P4의 대기시간(5 -3)의 평균 대기시간은 26/4 = 6.5 밀리초로 비선점형 SJF 스케줄링의 평균 대기시간 7.75 밀리초보다 작다.



우선순위 스케줄링(Priority Scheduling)

SJF 알고리즘은 우선순위 스케줄링 알고리즘의 특별한 경우이다. 우선순위가 각 프로세스들에 연관되어 있으며, CPU는 가장 높은 우선순위를 가진 프로세스에게 할당된다. 우선순위가 같은 프로세스들은 FCFS 순서로 스케줄된다.


우선순위는 내부적 또는 외부적으로 정의될 수 있다. 내부적으로 정의된 우선순위는 프로세스의 우선순위를 계산하기 위해 어떤 측정 가능한 양들을 사용한다. 예를 들어 시간제한, 메모리 요구, 열린 파일 수, 평균 I/O 버스트의 평균 CPU 버스트에 대한 비율 등이 우선순의의 계산에 사용된다. 외부적 우선순위는 프로세스의 중요성, 지불되는 비용 등 운영체제 외부적 기준에 의해 결정된다.


우선순위 스케줄링 알고리즘의 주요 문제는 무한봉쇄(indefinite blocking) 또는 기아상태(starvaion)이다. 부하가 과중한 컴퓨터 시스템에서는 높은 우선순위의 프로세스들이 꾸준히 들어와서 낮은 우선순위의 프로세스들이 CPU를 얻지 못하게 될 수 있는데, 이때 낮은 우선순위 프로세스들이 CPU를 무한히 대기하는 경우가 발생한다. 낮은 우선순위의 프로세스들을 무한히 봉쇄하는 문제에 대한 한 해결 방안은 노화(aging)으로, 오랫동안 시스템에서 대기하는 프로세스들의 우선순위를 점진적으로 증가시키는 기법이다.



라운드 로빈 스케줄링(Round Robin Scheduling)

라운드 로빈 스케줄링 알고리즘은 시분할 시스템을 위해 설계되었다. FCFS 스케줄링과 유사하지만 프로세스들 사이를 옮겨 다니기 위해서 선점이 추가되며, 시간 할당량(time quantum)이라고 하는 작은 단위의 시간을 정의하는데 일반적으로 10에서 100 밀리초 사이다. 준비완료 큐는 환형 큐(circular queue)로 설계되며, CPU 스케줄러는 준비완료 큐를 돌아가면서 시간 할당량 동안 프로세스들에게 CPU를 할당하고 할당량 이후에 인터럽트를 걸도록 타이머를 설정한 후 프로세스를 디스패치(dispatch)한다.


프로세스를 스케줄할 때 두 가지 경우 중 하나가 발생한다. 첫번째, CPU 버스트가 시간 할당량보다 작을 경우 프로세스 자신이 CPU를 자발적으로 방출하며, 스케줄러는 준비완료 큐에 있는 다음 프로세스로 진행한다. 두번째, CPU 버스트가 시간 할당량보다 긴 경우 타이머가 끝이 나고 운영체제는 인터럽트를 유발한다. 문맥교환이 일어나고 실행하던 프로세스는 준비완료 큐의 꼬리에 넣어진다. 그 후 CPU 스케줄러는 준비완료 큐의 다음 프로세스를 선택한다.


RR 알고리즘의 성능은 시간 할당량의 크기에 매우 많은 영향을 받는다. 극단적인 경우, 시간 할당량이 매우 크면 RR 정책은 FIFO와 같다. 시간 할당량이 매우 적다면 RR방식은 프로세서 공유(processor sharing)라 불리며, 이론적으로는 n개의 프로세들이  실제 프로세서의 1/n 속도로 실행되는 자신의 프로세서를 가지고 있는 것처럼 보인다. 그러나 소프트웨어에서는 RR 스케줄링의 성능에 문맥교환의 영향을 고려해야 할 필요가 있다. 너무 작은 시간할당량은 문맥교환 빈도를 높여 프로세스 집합의 평균 총처리시간을 증가시킬 것이기 때문이다.



다단계 큐 스케줄링(Multilevel Queue Scheduling)

포어그라운드(foreground) 대화형 프로세스들과 백그라운드(background) 일괄처리 프로세스들은 일반적으로 구분을 한다. 이들 두 타입의 프로세스는 응답시간에 대한 요구사항이 다르기 때문에 스케줄링 또한 다를 것이기 때문이다. 이처럼 단단계 큐 스케줄링은 프로세스의 특성에 기반하여 준비완료 큐를 다수의 별도 큐로 나누어 관리하며, 각 큐는 자신의 스케줄링 알고리즘을 갖고 있다. 예를들어 포어그라운드 큐는 RR 알고리즘에 의해 스케줄 될 수 있고, 백그라운드 큐는 FCFS 알고리즘에 의해 스케줄 될 수 있는 것이다. 추가로 큐 사이에 스케줄링이 반드시 있어야 하며, 일반적으로 고정된 우선순위의 선점형 스케줄링으로 구현된다. 예를 들어 포그라운드 큐는 백그라운드 큐보다 절대적인 우선순위를 갖을 수 있음을 말한다.



다단계 피드백 큐 스케줄링(Multilevel Feedback Queue Scheduling)

다단계 큐 스케줄링 알고리즘에서는 일반적으로 프로세스들이 영구적으로 하나의 큐에 할당되며, 프로세스들은 큐 사이를 이동하지 않는다. 이러한 방식은 스케줄링 부담이 적은 장점이 있으나 융통성이 적다. 다단계 피드백 큐 스케줄링 알고리즘은 프로세스가 큐들 사이로 이동할 수 있으며, 프로세스들을 상이한 CPU 버스트 성격에 따라서 구분한다. 어떤 프로세스가 CPU 시간을 너무 많이 사용하면 낮은 우선순위의 큐로 이동되는 식이다. I/O 중심의 프로세스와 대화형 프로세스들을 높은 우선순위의 큐에 넣고, 긴 프로세스는 낮은 우선순위 큐에 넣어지게 된다. 노화(aging)을 통해 낮은 우선순위 큐에서 너무 오래 대기하는 프로세스는 높은 우선순위 큐로 이동할 수 있다.


실시간 스케줄링(Real Time Scheduling)

실시간 컴퓨팅은 두 가지 타입으로 나누어진다. 경성(hard) 실시간 시스템은 중요한 작업을 보장된 시간 내에 완료할 것을 요구한다. 일반적으로 프로세스는 작업완료나 I/O 수행에 필요한 시간의 양을 제출하고, 스케줄러는 프로세스가 정해진 시간에 완료되는 것이 보장될 경우 그 프로세스를 받아들이며, 불가능할 경우 요청을 거절한다. 이러한 보장은 스케줄러가 각 타입의 운영체제 기능을 수행하는 데 얼마만큼의 시간이 쇼요될 지를 정확하게 파악할 것을 요구하며, 각 연산의 최대 소요시간을 보장해야 한다.


연성(soft) 실시간 컴퓨팅은 경성 실시간 컴퓨팅에 비해 덜 제한적이며, 중요한 프로세스들이 다소 덜 중요한 프로세스에 비해서 높은 우선순위를 가질 것을 요구한다.


연성 실시간 시스템의 요구사항은 다음과 같다.


1. 우선순위 스케줄링을 제공해야 하며, 실시간 프로세스들이 가장 높은 우선순위를 가져야 하고, 실시간 프로세들의 우선순위는 시간이 지남에 따라 낮아져서는 안된다. 이런 성질을 가지도록 보장하기 위해 실시간 프로세스는 프로세스 노화를 허용하지 않는다.


2. 디스패치 지연을 최소화해야 된다. 디스패치 지연을 줄이기 위해서는 시스템 호출이 선점되는 것을 허용할 필요가 있으며, 이러한 목적을 달성하기 위해 시스템 호출에 선점 지점(preemption point)을 삽입하고 그 호출이 높은 우선순위의 프로세스가 실행할 필요가 있는지 검사하도록 한다. 선점지점은 커널 자료가 변경될 수 없는 곳에만 놓여질 수 있다. 또 다른 방법은 커널 전체를 선점 가능하도록 하는 것이다. 올바른 동작을 보장받기 위해서는 모든 커널 자료구조는 여러가지 동기화 기법을 사용하여 반드시 보호되어야 한다. 이 방법으로 갱신되고 있는 커널자료가 높은 우선순위의 프로세스에 의해 변경되는 것을 방지할 수 있기 때문에 커널은 항상 선점할 수 있다. 높은 우선순위의 프로세스가 현재 낮은 우선순위의 프로세스에 의해 접근되고 있는 커널 자료를 변경할 필요가 있을 경우 높은 우선순위 프로세스는 낮은 우선순위의 프로세스가 끝나기를 기다려야 하며, 낮은 우선순위 프로세스가 그 자원을 사용 완료할 때까지 높은 우선순위를 상속하였다가 종료될 때 원래의 값으로 복귀시키는 방법이 있다.

2009/07/17 20:28 2009/07/17 20:28
Posted
Filed under etc
.UNIX 파일 시스템 특징 : - 파일보호, 계층적 트리구조, 주변장치를 파일과 동일하게 취급, 파일생성, 삭제, 보호기능.

2. 색인순차파일 인덱스 영역 : 마스터, 트랙, 실린더

3. 파일보호기법

- 접근제어(Access Control) : 접근 목록을 두어 접근 가능한 사용자와 가능한 동작을 기록.

- 파일 명명(Naming) : 파일이름 모르는 사용자 제외.

- 비밀번호(Password, 암호) : 암호를 아는 사용자에게 접근 허용

4. 파일 디스크립터의 특징

- 시스템이 필요로하는 파일에 대한 정보를 갖고 있는 제어블록을 의미하며, 파일 제어 블록(FCB: File Control Block)

- 보조기억장치에 저장되어 있다가 파일이 개방될때 주기억장치로 옮겨진다.

- 파일 시스템이 관리하므로 사용자가 직접 참조할 수 없다.

5. 내부단편화, 외부단편화

- 외부단편화 : 분할크기가 작아 작업크기를 사용하지 못하는 경우 분할크기를 의미

- 내부단편화 : 분할크기가 커서 작업크기가 할당된 후 남아있는 분할 크기를 의미.

분할영역분할크기작업크기

1             50        60

2            120      160

3            200      100

4            300       150

- 1영역 : 외부단변화 50, 2영역 : 외부단편화 120, 3영역 : 내부단편화 100, 4영역 : 내부단편화 150

6. 투명성(Transparence) : 분산처리 운영체제에서 구체적인 시스템 환경을 사용자가 알 수 없도록 마여, 또한 사용자들로 하여금 이에 대한 정보가 없이도 원하는 작업을 수행할 수 있도록 지원하는 개념.

7. LRU 페이지부재 구하는 방법

8. UNIX의 쉘(Shell) : 시스템과 사용자간의 인터페이스, 명령어 해석

- 커널(Kernel) : 프로세스 관리, 파일관리, 입출력관리, 기억장치 관리등의 기능 수행.

9. 운영체제 해결 문제점 :

- 교착상태 예장, 회피, 발견, 회복 등의 처리문제 , CPU와 자원의 할당 문제, 메모리 관리 문제, 병행성 제어 문제, 공종하는 프로그램 감의 충돌 해결 문제

- 위와 같은 문제는 다중 프로그래밍 기법을 이용이 원인이 되어 발생된다.

10. UNIX 운영체제의 특징 : 대화식 운영체제, 다중 사용자 시스템, C언어로 기술, 높은 이식성과 확장성, 시분할 시스템, 개방형 시스템, 멀티 유저 멀티테스킹 지원, 트리구조,

11. 운영제제 역할

- 사용자와 시스템 간의 인터페이스 제공

- 여러 사용자 간의 자원 공유 기능 제공

- 자원의 효율적인 운영을 위한 스케줄링

- 하드웨어와 네트워크 관리, 데이터 관리

- 시스템 오류검사 복구

* 입출력에 대한 주력적인 역할수행은 입출력장치 역할이다.

12. 교착 상태 발생의 4가지 조건

- 상호 배제(Mutual Exclusion) : 한 개의 프로세스만이 공유 자원을 사용

- 점유와 대기(Hold and Wait) : 최소 하나의 자원을 점유하면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스

- 비선점(Non-preemption) : 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함.

- 환형 대기(Circular Wait) : 프로세스들이 원형으로 구성

교착 상태 예방 기법 : 교착 상태 발생하지 않도록 교착 상태 조건을 제거하는 것.

- 상호 배제(Mutual Exclusion)부정 : 여러개의 프로세스를 공유 자원을 사용

- 점유와 대기(Hold and Wait) 부정 : 프로세스 실행 전 필요한 모든 자원을 할당, 자원이 점유되지 않는 상태에서만 자원을 요구.

- 비선점(Non-preemption) 부정 : 점유한 자원을 반납하고 요구한 자원을 사용하기 위해 기다리게 함.

- 환형 대기(Circular Wait) 부정 : 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구

13. cpu 스케줄일 평가 기준 : 처리량(Throughput), 대기시간, 균형있는 자원 이용

14. C-SCAN 스케쥴링 이동거리 계산.

15. 가상 기억 장치 관리 기법에서 페이지(Page) 크기

- 페이지 크기가 작으면 페이지 수는 늘어나고 단편화는 줄어든다.

- 페이지 크기가 크면 페이지 수 줄어늘고 단편화는 늘어난다.

16. CPU 스케줄링

대화형 시스템 : 여러명의 사용자가 사용하는 시스템에서 컴퓨터가 사용자들의 프로그램을 번갈아 가며 처리. 독립된 사용느낌을 준다. 반응시간(Response Time)이 중요하다.

17. 프로세서(Process)

- 실행중인 프로그램.

- PCB를 가진 프로그램

- 프로시저가 활동

- 비동기적행위

18. 분산 처리 시스템의 장점

- 점진적인 확장 : 병목현상 제거위해 필요자원을 추가

- 가용성 : 즉시 사용가능한 정도

- 고정 허용성 : 고장이 있어도 데어터 손상없이 계속사용할 수 있는 정도

19. 별도의 로더 없이 언어변역 프로그램이 로더 역할까지 담당 : Compile and Go Loader

로더의 종류

- 절대로더 (Absolute Loader) : 목적 프로그램을 기억장소에 적재시키는 기능만 수행

- 직접 연결 로더(Derect Linking Loader) : 일반적인 기능의 로더

- 동적 적재 로더 (Dynamic Loding Loader) : 실행시 필요한 일부분만을 적재

20. 주/종(Master/Slaver) 시스템

- 주프로세서 : 입출력과 연산을 담당. 운영체제를 수행. 고장나면 시스템 전체 다운.

- 종프로세서 : 연산만 담당. 사용자 프로그램만 담당.


21. 유닉스 명령어.

- cat : 화면에 표시하는 명령

- chmod : 파일의 보호 모드 설정.

- cp : 파일 복사

- mount : 서브 디렉토리에 연결

- mkfs : 파일 시스템을 생성

- fsck : 파일시스탬 검사 보수

- mknod : 특수파일 생성

22. SSTF : 현재 헤드 위치에서 가장 가까운 거리에 있는 요청을 먼저 서비스

23. 유닉스 I-node에 포함 내용 : 파일 크기, 파일 소유자의 사용자 식별, 파일링크 수, 최종 변경 시기, 최근 사용시기

I-node에 포함 되지 않는 내용 : 사용회수, 파일이 최초로 수정된 시간, 파일 경로명

24. 분산 처리 시스템 특징 : 자원 공유, 연산속도 향상, 신뢰도 향상, 컴퓨터 통신

- 보안은 분산시스템 단점이다.

25. 다중 접근 버스 구조(Multi - Access Bus Counnection) : 모든 사이트 공유 버스에 연결.

분산 운영체제의 구조

- 망형 - 완전 연결 : 모든 사이트들과 직접 연결

- 망형 - 부분 연결 : 일부 사이트들 간에만 직접 연결

- 트리(Tree) 또는 게층(Hierarchy) : 분산처리 시스템의 가장 대표적인 형태. 트리형태로 연결.

- 스타(Star)형 = 성형 : 중앙 사이트에 직접 연결.

- 링형(Ring) = 환형 : 인접하는 두 사이트만 직접 연결.

26. 매크로 프로세서의 기본적인 기능 : 정의 인식, 정의 저장, 호출 인식, 확장과 인수

27. 배치 전략

- 최초 적합(First-Fit) : 첫 번째 분할 영역에 배치시키는 기법

- 최적 적합(Best-Fit) : 단편화를 가장 작게 남기는 방법

- 최악 적합(Worst_Fit) : 단편화를 가장 많이 남기는 방법

28. 문맥 교환(Context Switching) : 프로그램 재개에 필요한 환경을 다시 설정하는 것. 운영체제에서 오버해드의 큰 요인으로 작용.

- 세마포어(Semaphore) : 신호기, 깃발을 뜻함. 제어신호 전달하여 순서대로 작업 수행.

- 모니터 : 동기화 구현

- 디스패치 : 준비상태에 있는 프로세스가 실행상태로 전이.

29. 파일 시스템 : 파일의 저장, 액세스, 공유, 보호, 파일 관리 기술.

- 사용자와 보조기억 장치 사이에 인터페이스 제공.

- 파일 생성, 수정, 제거

- 파일의 예비, 복구

- 언어 번역기 : 고급언어에 대한 변역 기능 제공

30. ★스케줄링

- 선점 스케줄링 종류 : RR(Round Robin, 시분할시스템), SRT(Shortest Remaining Time, SJF기법을 선점형태로 변경, 가장 짧은 실행시간을 요구), 선접 우선순위, 다단계큐, 다단계 피드백 큐

- 비선점 스케줄링 : FIFO, SJF,우선순위, HRN(SJF 방법의 단점 보안,실행 시간과 대기 시간을 이용), 기한부

31. 운영체제 : 사용자와 하드웨어간의 인터페이스, 시스템 소프트웨어,

-운영체제 성능 평가 요소 : 처리 능력, 반환시간, 사용가능도, 신뢰도,

32. 순차 파일(SAM)

- 공간낭비 없다.

- 파일 구성 용이

- 일괄처리, 급여업무

- 검색효율 낮다.

- 삽입 삭제 시간 많이 소요.

- 자기테이프

33. 워킹 셋(Working Set) : 실행중인 프로세스가 일정시간동안 자주 참조하는 페이지의 집합.

34. LRU 교체기법 나열 순서?

35. 페이지 교체 알고리즘

- LFU : 사용빈도가 가장 적은 페이지 교체

- FIFO : 가장 먼저 들어와서 가장 오래 있었던 페이지 교체

- NUR : 최근에 사용되지 않는 페이지를 교체, 참조비트와 변형비트 사용

36. 공간구역성 - 배열순례(Array Traversal)

구역성 종류

- 시간구역성(Temporal Locality) : 하나의 페이지를 일정 시간 동안 집중적으로 액세스. Loop(반복, 순환), 스택, 부프로그램(Sub Routine), Counting, 집계(Totaling)

- 공간구역성(Spatial Locality) : 일정 위치에 페이지를 집중적으로 액세스. 배열순회, 순차적 코드 실행, 프로그래며들이 관련된 변수

2009/07/17 20:28 2009/07/17 20:28
Posted
Filed under C#

응용 프로그램에서 Active Directory 계층 구조의 내용과 상호 작용하려면 DirectoryEntry 또는 DirectorySearcher 구성 요소 인스턴스를 만듭니다. 자세한 내용은 Active Directory 개체 소개를 참조하십시오. DirectoryEntry 구성 요소나 DirectorySearcher 구성 요소를 사용하려면 System.DirectoryServices 네임스페이스에 대한 참조를 응용 프로그램에 추가해야 합니다. 자세한 내용은 참조 추가 및 제거를 참조하십시오. DirectorySearcher 구성 요소 만들기에 대한 자세한 내용은 Active Directory 계층 구조 검색을 참조하십시오.

다음과 같은 여러 방법을 사용하여 DirectoryEntry 구성 요소의 인스턴스를 만들 수 있습니다.

  • DirectoryEntry 구성 요소의 인스턴스를 도구 상자의 구성 요소 탭에서 디자이너로 끌어 올 수 있습니다.
  • 코드에서 DirectoryEntry 구성 요소의 인스턴스를 만들 수 있습니다.
    참고   도구 상자의 구성 요소 탭에 있는 대부분의 구성 요소와 달리 DirectoryEntry 구성 요소는 서버 탐색기에 나타나지 않으므로 이 창에서 구성 요소의 인스턴스를 만들 수 없습니다.

디자이너에서 DirectoryEntry 구성 요소의 인스턴스를 만들려면

  1. 도구 상자의 구성 요소 탭에서 DirectoryEntry 개체를 폼 또는 구성 요소의 디자인 화면으로 끌어 옵니다.
  2. 속성 창에서 다음 구문을 사용하여 구성 요소를 바인딩할 리소스가 Active Directory 계층 구조에서 차지하는 위치를 구성 요소의 Path 속성에 설정합니다.
    Provider://providerpath
    위치 설명
    Provider 액세스할 디렉터리에 대한 서비스 공급자를 나타내는 표시기입니다. 공급자 식별자는 대/소문자를 구분하여 다음 값 중 하나를 입력해야 합니다.
    • LDAP://
    • WinNT://
    • NDS://
    • NWCOMPAT://
    ProviderPath 선택한 서비스 공급자의 형식에 따라 공급자 경로의 매개 변수가 달라집니다. 자세한 내용은 ADSI 시스템 공급자를 참조하십시오.

    예를 들어, 아래에 다양한 공급자 형식에 대한 유효 경로가 나와 있습니다.

    LDAP://MyDom.fabrikam.com/CN=SomeCN,DC=DEV,DC=SOMEDC,DC=COM,O=Internet
    LDAP://CN=SomeCN,DC=DEV,DC=SOMEDC,DC=COM,O=Internet
    WinNT://MyDomain/Group
    WinNT://MyDomain/MyComputer/aPrinter/
    NDS://ndsServer/O=Internet/DC=COM/DC=SOMEDC/DC=DEV/CN=SomeCN
    NWCOMPAT://binderyServer/ADivision

프로그래밍 방식으로 DirectoryEntry 구성 요소의 인스턴스를 만들려면

  • 코드에서 바인딩할 개체의 경로를 매개 변수로 전달하여 DirectoryEntry 클래스의 인스턴스를 만듭니다.

    아래 예제에서는 DirectoryEntry 개체에 공급자 경로를 전달하는 방법을 보여 줍니다.

    ' Visual Basic
    Dim myDir As 
       New System.DirectoryServices.DirectoryEntry("provider://path")
    
    // C#
    System.DirectoryServices.DirectoryEntry myDir = 
       new System.DirectoryServices.DirectoryEntry("provider://path");

    아래 예제에서는 코드에서 DirectoryEntry 구성 요소 인스턴스를 만들고 LDAP 경로를 사용하여 초기화한 다음 폼 요소에 표시하기 위해 항목의 이름과 GUID를 검색하는 방법을 보여 줍니다.

    ' Visual Basic
    Dim strpath As String = "LDAP://DC=onecity,DC=corp,DC=fabrikam,DC=com"
    Dim myDE As New System.DirectoryServices.DirectoryEntry(strpath)
    Dim nameGUID As String
    nameGUID = myDE.Name & myDE.Guid.ToString()
    
    // C#
    String strpath = "LDAP://DC=onecity,DC=corp,DC=fabrikam,DC=com";
    System.DirectoryServices.DirectoryEntry myDE = new 
       System.DirectoryServices.DirectoryEntry(strpath);
    string nameGuid = myDE.Name + myDE.Guid.ToString();

참고 항목

Active Directory 개체 소개 | Active Directory 노드 제거 | Active Directory 계층 구조 검색 | 연습: Active Directory 개체 추가

2009/07/17 20:28 2009/07/17 20:28
Posted
Filed under Linux

\cp -rf 
\를 붙이게 되면 기존에 설정 되어 있던 리눅스 자
체의 알리아스를 무시 한다.

cp옵션.docx

2009/07/17 20:27 2009/07/17 20:27
Posted
Filed under etc





2009/07/17 20:27 2009/07/17 20:27
Posted
Filed under etc


2009/07/17 20:26 2009/07/17 20:26