프로세스 설명


- 시스템 부팅을 담당하는 boot 프로세스 (0번 프로세스)를 제외한 모든 프로세스는 부모 프로세스를 가진다

- 자식 프로세스가 살아있는 상태에서 부모 프로세스가 종료하면 대리모 프로세스 (1번 프로세스)가 부모역할을 한다

- 프로세스 종료시 자신의 종료 상태정보(pid , exit code(종료시 반환값) , cpu time(cpu 사용시간))를 부모 프로세스에 반환해야 정상적으로 소멸된다

- 프로세스 수행을 종료했지만 부모 프로세스가 종료 상태정보를 확인하지 않아 소멸하지 않고 남아있는 프로세스를 좀비 프로세스라 한다


프로세스 관리 자료구조


프로세스 제어 블록(PCB)

프로세스 별로 관리정보를 담고있다

프로세스 상태 : ready, running, blocked

프로세스 번호 : PID

프로그램 카운터 : 문맥교환시 다음에 실행할 명령어의 위치

레지스터 : 문맥교환시 현재 프로세스의 실행 상태정보

메모리 정보 : page 또는 segment 테이블 정보


파일 디스크립터 파일(FDT)

프로세스 별로 오픈한 파일 관리


System open-file tables

커널, 운영체제 내에서 프로세스들에 의해 오픈된 파일 관리


디렉토리 및 파일 관련 명령어


구분 

명령어 

내용 

디렉토리 관리 

ls 

디렉토리 및 파일 정보 

cd 

작업 디렉토리 변경 

pwd 

현재 작업 디렉토리의 절대 경로명 

mkdir 

새로운 디렉토리 생성 

rmdir 

비어있는 디렉토리 삭제 

파일 관리 

cat 

파일의 내용을 출력 또는 병합 

more 

끊어서 보여주기 

head 

파일의 앞부분을 보여주기 

tail 

파일의 뒷부분을 보여주기 

mv

파일, 디렉토리 이동 

cp 

파일, 디렉토리 복사 

rm 

파일, 디렉토리 삭제 

ln 

하드링크, 심볼릭 링크 생성 

파일 권한 관리 

chmod 

파일, 디렉토리의 접근 권한 변경 

chown 

파일 소유주를 변경 

chgrp 

파일 소유그룹을 변경 

touch 

빈 파일 생성 또는 파일의 시간변경 

umask 

접근권한 마스킹 

파일 응용 

wc 

파일 내의 행, 단어, 문자수 출력 

cut 

특정 바이트나 필드 추출 

paste 

행병합 

tr

선택한 문자를 치환 또는 삭제 

sort 

파일 정렬 

split 

파일 분할 

uniq 

인접하는 행의 내용 비교 

cmp 

파일 내용 비교 

comm 

파일 내용 비교 

diff 

동일한 파일인지 검사 

grep 

특정 패턴이나 문자열 검색 

find

파일 검색 


파일 검색

find [path] [opt]

사용자가 원하는 파일을 찾을때 사용

옵션

-name : 파일명 지정 ([], ?, * 의 메타문자 사용)

-type : 파일종류 지정 (f : 일반파일 , d : 디렉토리 , b : 블록 장치 파일 , c : 문자 장치 파일 , l : 심볼릭 링크 파일 , s : 소켓 파일 , p : 파이프 파일)

-user : 소유자 지정

-group : 그룹 지정

-size : 파일 크기 지정 (b : blocks(기본) , c : bytes , k : kilobytes , M : megabytes , G : gigabytes)

-perm : 접근 권한 지정 (8진수)

-atime : 마지막 접근 시간 지정

-ctime : 파일 속성이 마지막으로 변경된 시간 지정

-mtime : 파일 내용이 마지막으로 변경된 시간 지정

-exec : 검색결과에 추가적인 명령 실행

-print : 하위 디렉토리까지 검색

ex)

find . -name "test*.txt" -print

find . \( -perm -4000 -o -perm -2000 \) -exec ls -al {} \;

-perm -4000 : -가 없으면 권한이 정확히 일치하는 파일을 있으면 포함하는 파일을 검색한다

-o : -o (or) , -a (and) 및 () 사용가능

\; : 명령어의 종료

find -type f -mtime -4 exec ls -al {} \;

-mtype -4 : +-가 없으면 정확히 4일 , +는 4일 초과 -는 4일 미만인 파일을 검색한다

find -type f -size +3M -exec ls -al {} \;

-size +3M : +-가 없으면 정확히 3MB, +는 3MB 초과, -는 3MB 미만인 파일을 검색한다



파일 권한 관리


접근 권한 변경

chmod [opt] permission file_name [file_name]

파일 소유주 또는 root 사용자만 가능

옵션

-R : 하위 디렉토리와 파일까지 변경한다

ex)

chmod g+w test.c

chmod 775 test.c


소유주, 소유그룹 변경

chown [opt] owner file_name [file_name]

chgrp [opt] group file_name [file_name]

root 사용자만 가능

옵션

-R : 하위 디렉토리와 파일까지 변경한다

-h : 심볼릭 링크 파일을 변경한다

ex)

chown root test.c

chgrp root test.c


접근 권한 마스크

umask 마스킹할 8진수

앞으로 만들어질 파일, 디렉토리에 영향을 미친다

일반 파일은 666, 디렉토리는 777를 기본 권한으로 한다

시스템 관리자는 /etc/profile 파일에 umask를 지정하여 전체 사용자에게 umask를 적용시킬 수 있다

ex)

umask 333

디렉토리 관리


디렉토리 출력

ls [-opt] [file_name | directory_name]

특정 디렉토리에 있는 디렉토리와 파일 목록을 보여준다

옵션

-l : 파일정보를 자세히 보여준다

-a : 숨김파일도 같이 보여준다

-R : 하위디렉토리의 내용까지 보여준다

-F : 디렉토리인지 또는 어떤 종류의 파일인지 보여준다

(디렉토리 / , 실행파일 * , 심볼릭 링크 @)

-i : i-node number를 보여준다

ex)

ls -al *.c

옵션 -l 출력결과

[파일종류][접근권한][하드링크수][소유주][소유그룹][크기][최종 수정일시][파일명]

파일종류

문자값 

종류 

d 

디렉토리 

b 

블록 장치 파일 

c 

문자 장치 파일 

l 

심볼릭 링크 파일 

p 

파이프 파일 

s 

소켓 파일 

- 

일반 파일 

접근권한

일반 파일의 기본 접근 권한은 666, 디렉토리의 기본 접근 권한은 777이다

하드링크 수

동일한 i-node를 참조하는 파일의 갯수


디렉토리 이동

cd [directory_name]

파일 시스템내의 특정 디렉토리로 이동

ex)

cd ~/example/ghj


디렉토리 생성

mkdir [-opt] directory_name

옵션

-m : 디렉토리의 접근 권한을 명시적으로 선언

-p : 하위 디렉토리까지 한번에 생성

ex)

mkdir -m 777 -p example/ghj


디렉토리 삭제

rmdir [-opt] directory_name

삭제할려는 디렉토리 하위에 디렉토리나 파일이 없어야한다

옵션

-p : 하위 디렉토리까지 한꺼번에 삭제한다

     명령어에 나열한 하위 디렉토리 외에는 추가적인 디렉토리나 파일이 없어야

     한

ex)

rmdir -p example/ghj


하드 링크, 심볼릭 링크

ln [-s] source_file target_directory/target_file

[-s] 옵션 : 있으면 심볼릭 링크, 없으면 하드 링크

ex)

하드 링크 : ln ~/ghj/test.txt ~/ghj/ln/text.txt

심볼릭크 : ln -s ~/ghj ~ghj/ln


하드 링크

기존 파일과 동일한 i-node number 를 가지는 파일을 생성하여 접근

동일 파일 시스템 내에서만 하드링크가 가능하며 디렉토리는 하드 링크가 불가능하다

하드 링크 파일을 생성(삭제)하면 i-node 의 링크 카운트가 1증가(감소)한다


심볼릭 링크

원본 파일의 경로를 내용으로 하는 새로운 파일을 생성해서 접근

파일 시스템에 제한이 없으며 디렉토리도 가능하다

원본 파일이 삭제되거나 이동하면 심볼릭 링크 파일은 링크가 끊어진다


파일 시스템 구성

물리적인 디스크는 논리적인 파티션으로 나뉘며 각 파티션별로 파일 시스템을 생성

ex) NTFS, EXT, EXT2, EXT3, EXT4


부트블럭

운영체제를 부팅하거나 최소화


슈퍼블럭

파일시스템을 관리하기 위한 정보


아이노드 리스트 (파일들에 대한 속성정보)


속성 

설명 

i-node number 

파일 고유의 식별자 

파일 타입 

일반파일, 디렉토리, 장치파일 등의 속성 

접근권한

 

link count 

해당 i-node를 참조하는 링크 갯수 (하드링크 카운트) 

소유자 

파일 소유자 UID 

소유그룹 

파일 소유그룹 GID 

파일크기 

 

MAC Time  

1. last Modification time

마지막 수정시간

2. last Access time

마지막 접근시간

3. last Change time

마지막 파일속성(소유자, 접근권한 등)을 변경한 시간 

Block index

파일내용에 대한 색인 정보 


Data blocks

실제 파일의 내용을 저장

입출력 재지정

입출력 대상으로 표준입력, 표준출력, 표준에러를 사용하지 않고 파일로 재지정하는것

입력재지정 : command [0] < file_name

출력재지정 : command [1 or 2] > file_name ( > : 새로만들기, >> : 추가하기)

ex) 

who 의 결과가 who.txt 파일에 저장됨

who > who.txt



파이프

둘 이상의 명령을 묶어 왼쪽의 출력결과를 오른쪽의 입력으로 전환

command1 | command2 [| command3]

ex)

ls -l 의 결과를 끊어서 보여줌

ls -l | more

ps -ef 의 결과에서 test 문자열을 포함하는 행만 출력

ps -ef | gref test



특수문자

쉘 명령에서 사전에 정의된 특별한 기능이 있는 문자


특수문자 

사전정의

특수문자 

사전정의 

~ 

홈디렉토리 

* 

문자열 와일드 카드 

. 

현재 디렉토리 

? 

한문자 와일드 카드 

.. 

상위 디렉토리 

; 

쉘 명령 구분자 

# 

주석 

| 

파이프 

$ 

쉘변수 

< 

입력 재지정 

& 

백그라운드 작업 

> 

출력 재지정 


그룹 정보


/etc/group 파일

현재 시스템에 있는 모든 그룹의 정보를 저장

[group_name]:[unvariable]:[group_id]:[user_account_entry_in_group]

group_name : 그룹명

unvariable : 그룹의 암호화된 패스워드 (사용안함)

group_id : 기본 그룹 ID

user_account_entry_in_group : 소속된 모든 사용자 계정들

ex) ghjgroup:x:1:root,bin,ghj


+ Recent posts