본문 바로가기
서버/Linux

[Linux] 프로세스 (2)

by 느링 2017. 10. 16.

/proc 디렉터리

- 시스템에 실행되고 있는 프로세스는 /proc 디렉터리 아래서 확인이 가능합니다.

- /proc 디렉터리는 실제 하드 디스크에 존재하는 파일이 아니라, 메모리(RAM)에 저장되어 있는 내용을 확인할 수 있는 가상의 디렉터리이다.

- 커널이 메모리에 저장된 데이터를 파일로 추상화하여 마운트시킨 디렉터리입니다.

* 마운트 : 물리적인 장치를 특정한 위치(디렉터리)에 연결해주는 과정입니다.

 

/proc/[PID]

해당 PID를 가진 프로세스의 정보를 확인할 수 있는 디렉터리입니다.

 

fd (File Discripter)

- file discripter 를 확인 할 수 있는 디렉토리입니다.

- 프로세스가 생성이되면 커널은 파일 디스크립터를 생성하여 해당 프로세스가 사용하는 파일(장치)과 파일 디스크립터와 연결합니다.

- 기본적으로 사용되는 장치는 미리 예약되어 지정됩니다. (0,1,2)

 

 

◈◈◈

 

서버의 H/W SPEC 조사할 때 자주 사용되는 파일

 

/proc/version - 시스템이 인식하고 있는 커널 버전 정보

 

/proc/cpuinfo - 시스템이 인식한 CPU와 관련된 상세한 정보

                                    /proc/cpuinfo 일부

 

/proc/meminfo - 시스템이 인식한 Memory와 관련된 상세한 정보

                     /proc/meminfo 일부

 

◈◈◈

 

# uptime

[현재 시간] [부팅 시간] [접속자수] [평균 부하 - 최근   5분    10분    15분]

 

※ 부하 해석

CPU코어 개수 1개 → 부하 1.00 → CPU100% 사용 중

CPU코어 개수 1개 → 부하 2.00 → CPU100% 사용 중

프로세스1이 CPU를 모두 사용 중

프로세스2가 CPU자원을 할당 받기 위해 대기 중

CPU코어 개수 4개 → 부하 4.00 → CPU 100% 사용 중

 

※ 평균 부하 해석

CPU코어 1개 → load average : 2.00, 15.00, 20.00

→ 최소 15분전에 시스템이 과부하 상태 였다.

→ 현재 부하가 줄어들고 있다.

→ 현재 CPU100% 사용 중이고, 하나의 프로세스가 대기하고 있다.

※ 반대로 20.00, 15.00, 2.00이면 과부하 상태가 되고 있다는 뜻입니다.

 

# top ★★

현재 시스템의 CPU와 RAM 사용율을 모니터링 할 수 있는 툴입니다.

                                                  # top 명령어 일부

 

# dmidecode

- 시스템의 하드웨어 정보를 종합적으로 확인할 수 있는 입니다.

- DMI table을 decoding 해주는 명령어입니다.

- dmidecode는 DMI 테이블 내용을 읽어와서 사람이 확인할 수 있는 형태로 보여줍니다.

- 실제 서버 컴퓨터에서 사용할 수 있습니다.

- yum -y install dmidecode로 설치하여 사용해야 합니다.

 

SWAP 메모리

메모리 사용율이 100%가 되면 더 이상 프로세스를 생성할 수 없습니다.

이런경우 시스템에 큰 문제가 될 수 있기 때문에 하드 디스크의 저장공간 일부를 메모리 처럼 사용 할 수 있습니다.

 

ex) 가상 머신 생성할 때 설정

 

→ HDD 20GB중에서 512MB만큼은 SWAP 메모리를 사용하겠다

 

# free [옵션]

시스템에 설치된 Memory(RAM), SWAP의 정보를 출력합니다.

→ 옵션

-m Megabyte

-g Gigabyte

 

※ 데몬 : 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램

※ 뒤에 d는 데몬을 의미합니다.

 

데몬 동작 유형

(1) xinetd 데몬 기반

- 다른 데몬을 관리하는 데몬이라하며, 슈퍼 데몬이라고도 불리웁니다.

- 사용자의 요청이 있을 때만 실행되는 형태로 응답속도는 느리지만, 리소스 소모는 적은 형태입니다.

ex) telnet 서비스를 사용하고 싶다. → xinetd 데몬을 실행해야한다.

 

(2) standalone

항상 백그라운드 상태로 메모리에 상주하고 있는 형태로 동작하며 사용자의 요청이 있을 때 빠르게 응답할 수 있지만, 리소스 소모가 많습니다.

ex) httpd, dns(bind), samba, nfs, ftp 등

 

(3) network - 네트워크 관련된 각종 정보를 설정하고 실행, 활성화 시켜주는 데몬

(4) iptables - 패킷 필터링 방화벽 기능을 제공하고 관리하는 데몬

 

※ 참고 리눅스 마스터 1,2급 시험에 출제되는 데몬

ALSA - 사운드 카드 관련 데몬

CUPS - 프린터 설정 관련 데몬

SANE - 스캐너, 비디오 캠 관련 데몬

 

예약 작업

at - 정해진 시간에 설정한 명령어를 한 번 실행

cron - 정해진 시간에 설정한 명령어를 반복 실행

 

at 사용 전 프로그램 설치 확인

# rpm -qa | grep "^at" → at 프로그램 설치 유무 확인

# rpm -qa | grep "mail" → mail프로그램 설치 유무 확인

 

at 설치

# yum -y install at

# yum -y install mail

at 실행

# service atd start   → at 데몬 실행

atd (을)를 시작 중:    [ ok ]

#at [옵션] [시간]

→ 옵션

-l 현재 실행 대기중인 작업 목록을 출력 (# atq)

-d 현재 실행 대기중인 작업 목록을 삭제 (# atrm)

 

→ 시간

yyyy-mm-dd, HH:MM, today, tomorrow, days, now, am, pm 등

자세한 시간 형식정보는 man 명령어를 이용하여 확인

 

<예제 1>

오늘 1분 뒤에 Hello world 출력

 

at> <EOT>    <ctrl + d>저장    *EOT End Of Transmisson 전송완료

→ 해당 프롬프트에 입력한 명령어가 실행된다.

 

1분이 지나고 엔터를 눌러보면 메일이 왔다고 알려줍니다.

 

cat을 이용하여 메일 내용을 확인하면 예약한 명령어의 결과를 볼 수 있습니다.

 

- at 예약 작업은 /var/spool/at 디렉토리에 임시 작업 파일(큐 파일)이 저장이 되며, 작업이 완료되면 자동으로 삭제가 된다.

- at 작업의 결과가 화면에 출력되는 작업일 경우 /var/spool/mail 디렉토리에 사용자 이름으로된 메세지 파일에 결과가 저장된다.

 

cron

# service crond status → 현재 crond데몬의 상태 확인

# ps -ef | grep "1237"

 

# crontab [옵션]

cron을 관리하고, 특정 작업을 주기적으로 반복할 때 사용합니다.

→ 옵션

-l 설정된 crontab 작업을 확인

-r crontab 작업 삭제

-e [계정명] 해당 계정의 crontab 수정

→ 계정명을 사용하지 않으면 현재 로그인 한 계정

-u [계정명] 해당 계정의 crontab 확인

 

- crontab 파일은 사용자 별로 생성되며, 해당 파일에 주기적으로 반복해야하는 작업의 내용을 작성 할 수 있고, 한 라인에 하나의 작업을 설정합니다.

 

crontab 형식

6개의 필드로 구성되어 있으며, 각 필드는 공백 문자로 구별합니다.

 

분          시          일         월         요일      작업내용

[0~59]    [0~23]    [1~31]    [1~12]    [0~6]    [명령어/스크립트 경로]

- 일요일 (0,7), sun, 토요일(6) sat

- " * " 해당 항목의 모든 값을 의미

ex) ***** 작업 내용

→ 매 요일, 매월, 매일, 매시, 매분마다 작업 내용 수행

-" - " 두 숫자 사이의 포함된 범위

ex) 분 필드 → 1-5 → 1분, 2분, 3분, 4분, 5분

- " , " 로 구분하여 나열된 숫자중 일치하는 경우

ex) 분 필드 → 1, 5 → 1분, 5분

- " / " 시간 간격을 지정

ex) 분 필드 → 10/2 → 2, 4, 6, 8, 10    10분까지 2분마다

※ cat /etc/crontab을 이용하여 형식을 볼 수 있습니다.

 

ex) 일주일 내내 매월 매일 23시 53분마다 /practice 디렉터리에 cron_file을 생성해라 ( 스크립트 이용)

 

cron_file을 만들라는 내용을 담은 스크립트 생성 ( 스크립트 파일은 뒤에 .sh를 붙이는 게 관례이다.)

 

 

test.sh 스크립트 파일에 실행 권한을 설정합니다.

다른 프로그램이 해당 스크립트 파일을 실행시키려면 해당 파일의 실행 권한이 필요합니다.

 

 

crontab 예약 설정하기

 

 

crontab 예약 정보 확인하기

 

23시 53분에 결과 확인

crontab 사용 제한

- /etc/cron.allow, /etc/cron.deny 파일로 사용자가 crontab 명령어 사용하는 것을 허용(allow)/거부(deny)할 수 있습니다.

- vi 편집기를 이용하여 해당 파일을 편집할 수 있으며 각 라인에 하나의 계정명만 입력할 수 있습니다.

- /etc/cron.allow 파일은 관리자가 직접 생성해야 하는 파일입니다.

- /etc/cron.deny 파일은 기본적으로 생성되어 있습니다.

'서버 > Linux' 카테고리의 다른 글

[Linux] rpm & yum  (0) 2017.10.16
[Linux] 파일 시스템  (8) 2017.10.16
[Linux] 아카이브 (Archive)  (0) 2017.10.16
[Linux] 압축 ( gzip, bzip2, xz )  (0) 2017.10.11
[Linux] 프로세스 (1)  (0) 2017.10.11