[Server] Linux - 프로세스와 실행

seonjeong·2023년 11월 28일

Server

목록 보기
10/15
post-thumbnail

❤️ 컴퓨터의 구조

하드웨어의 구성요소

하드웨어는 아래 3가지 구성요소로 이루어져 있다


중앙처리장치 - Processor

  • 컴퓨터에서 연산을 수행하는 핵심 부품
  • 주요 기능은 명령어를 해석하고 실행하여 프로그램이나 작업을 처리하는 것이다.

주기억장치 - Memory

  • 현재 실행되는 프로그램의 명령어와 데이터를 저장하는 부품
  • 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 한다.
  • RAM은 보조기억장치에 비해 값이 비싸고, 전원이 꺼지면 저장된 내용을 잃는다 (휘발성)

보조기억장치 - Storage

  • 데이터를 장기적으로 저장하는 데 사용되는 부품
  • 전원이 꺼져도 데이터를 보존할 수 있다 (비휘발성)
  • 예시 : SSD, HDD

하드웨어 구성요소 참고


프로그램(Program), 프로세스(Process)

프로그램(Program)

  • 실행 가능한 명령어들의 집합이며 주로 보조기억장치에 저장된다.
  • 프로그램이 실행되면 프로세스가 된다.

프로세스(Process)

  • 실행 중인 프로그램을 나타낸다.
  • 즉 , 프로그램이 메모리에 로드되고 CPU에 의해 실행 중일 때 프로세스라고 한다.
  • 여러 프로세스가 동시에 실행될 수 있으며, 각각 독립적으로 실행된다.

❤️ 프로세스 모니터링(ps, top, htop)

ps (Process Status)

: 현재 실행 중인 프로세스의 리스트를 보여주는 명령어

사용 예시

ps aux                // 모든 사용자의 프로세스를 자세히 보여줌
ps aux | grep apache  // apache가 들어간 프로세스만 출력
  • PID : Process ID
  • sudo kill [PID]을 통해 강제로 종료시킬 수 있다

top (Table Of Processes)

: 실시간으로 시스템 상태와 프로세스 목록을 업데이트 해서 보여주는 명령어 (실시간 모니터링)

  • top을 실행시키면 다음과 같은 화면을 보여준다
  • q를 누르면 종료할 수 있다

htop

: top명령어와 유사하지만 사용자 친화적이며 좀 더 직관적인 인터페이스를 제공하는 명령어

  • htop을 실행시키면 다음과 같은 화면을 보여준다
  • q를 누르면 종료할 수 있다

❤️ 백그라운드 실행

한 번에 두 가지 이상의 작업을 하는 것을 멀티태스킹이라고 한다.
리눅스에서도 이러한 멀티태스킹이 가능하다

포그라운드(Foreground)와 백그라운드(Background)

포그라운드(Foreground)

: 입력한 명령어 실행이 결과가 나올 때까지 기다리는 방식

  • 한 동작을 수행하는 동안 다른 동작은 할 수 없는 상태

백그라운드(Background)

: 하나의 쉘에서 여러 개의 프로세스를 동시에 실행할 수 있는 방식

  • 한 동작을 수행하는 동안에도 다른 동작을 할 수 있는 상태
  • 백그라운드를 이용하면 여러 작업을 동시에 수행할 수 있음

백그라운드 실행하기

포그라운드 프로세스 → 프로세스 정지 → 백그라운드 프로세스로 전환

  • ctrl + z : 실행중인 프로그램을 백그라운드로 보내는 단축키. 명령어가 일시 정지됨

  • bg %[작업번호] : 백그라운드로 전환 (작업 번호는 생략 가능)
  • fg %[작업번호] : 포그라운드로 전환 (작업 번호는 생략 가능)

  • jobs : 백그라운드에 실행중인 프로그램을 보여줌
  • kill %[작업번호] : 정상적으로 종료시킴 (강제로 종료할 경우, 사이에 -9를 붙이면 됨)
// 1. 포그라운드로 실행
# vi

// 2. 프로세스 정지 : Ctrl + z
[2]+  Stopped       vi hello.txt

# jobs
[2]+  Stopped       vi hello.txt
[1]-  Stopped       vi test.txt

// 3. 백그라운드로 전환
# bg %2

# jobs
[1]+ Stopped       vi test.txt
[2]- Running       vi hello.txt

리눅스 프로세스 작업 전환 참고


❤️ 항상 실행

ls, rm, mkdir와 같은 프로그램은 필요할 때마다 껐다 키는 반면에 server와 같은 데몬 프로그램은 항상 실행 되고 있다.

데몬(Daemon)이란?

서버 프로세스로 시스템이 살아 있는 동안 항상 실행되는 백그라운드 프로세스 상태로 존재한다.

시스템에서 네트워크를 통해 특정한 서비스를 제공하기 위해 톡정 포트를 열어두고 연결 요청이 들어오길 기다르는 프로그램 또 한 데몬이다.

데몬의 시작과 종료

  • 리눅스에서는 시작과 종료를 위한 스크립트를 /etc/init.d 디렉토리(또는 etc/rc.d/init.d) 아래 제공하고 있다.

  • 이 디렉토리의 파일들은 각 런레벨에 대한 스크립트를 포함하는 디렉토리에 [K 또는 S][번호][스크립트명] 이름으로 링크된다.

  • 이 디렉토리는 /etc/rc[런레벨번호].d의 형식으로 존재한다.

  • 이 스크립트는 직접 실행 또는 service명령으로 실행할 수 있다

    • 명령 : start, restart, stop
    /etc/init.d/[서비스 데몬명]/[명령]
    
    service [서비스 데몬명] [명령]
    • 스크립트 시작
    service [서비스 데몬명] start
    • 스크립트 종료
    service [서비스 데몬명] stop

데몬(daemon)의 개념 및 역할 참고


❤️ 정기적 실행

크론(Cron)이란?

정기적으로 프로그램을 실행시켜주는 것을 cron이라고 한다
특정한 시간에 또는 특정 시간 마다 어떤 작업을 자동으로 수행하고 싶을 때 사용한다
crontab을 사용하여 일정 항목을 읽고 작업을 시작한다.

즉, 특정한 시간에 득정한 작업을 수행하도록 하는 스케줄링 역할을 한다

크론탭(Crontab)이란?

cron 작업을 설정하는 파일을 crontab 파일이라고 한다.
실행주기 혹은 실행시간이 지정된 작업의 모음이다.

기본 명령어

  • cron 스케줄 등록 : crontab -e
  • cron 목록 보기 : crontab -l
  • cron 삭제 : crontab -r

특정 편집기로 cron 실행하기

  • nano로 cron 실행 : export VISUAL=nano; crontab -e
  • vim으로 cron 실행 : export VISUAL=vim; crontab -e
  • vi로 cron 실행 : export VISUAL=vi; crontab -e

crontab expression

예시

  • 1분 간격으로 날짜를 date.log에 저장해주는 스크립트
    */1 * * * * date >> date.log 2>&1
  • 해당 스크립트를 crontab -e를 통해 크론 설정에서 등록해준다
  • crontab : installing new crontab이라는 문구가 나오면 잘 설정된 것이다
  • 실행 중인 cron의 활동을 모니터링 하고싶으면 tail -f date.log를 입력하면 된다.

Cron, Crond, Crontab 참고
cron 설정 연습 사이트



Reference

생활코딩-리눅스 강좌

profile
🦋개발 공부 기록🦋

0개의 댓글