[Linux] 프로세스, 관리 명령, 포그라운드/백그라운드 프로세스의 작업제어, crontab

2024. 12. 2. 21:37·Linux
목차
  1. 프로세스 번호 (PID)
  2. 프로세스의 개념
  3. 데몬 프로세스
  4. 고아 프로세스
  5. 좀비 프로세스
  6. 프로세스 종료
  7. 시그널 signal
  8. kill vs pkill
  9. 프로세스 관리 명령
  10. 프로세스 관리 도구 : top 명령 = 윈도우의 작업 관리자
  11. fore-ground 작업
  12. back-ground 작업
  13. 작업 제어
  14. 작업 목록 보기
  15. 작업 전환하기
  16. 작업 종료하기
  17. crontab 파일 형식

프로세스란

  • 현재 시스템에서 실행중인 프로그램을 의미한다
  • 리눅스는 한번에 여러 프로세스 실행 가능(다중 프로세스 시스템)
  • 리눅스의 모든 프로세스는 부모 - 자식 관계 성립

프로세스 번호 (PID)

  • 각 프로세스는 고유한 번호를 가진다 (PID)
  • 1번부터 시작하여 프로세스가 실행되면서 하나씩 증가한다

프로세스의 개념

  • 사용자가 실행하는 일반적인 프로세스는 잠깐 실행되고 종료

데몬 프로세스

  • 특정 서비스를 제공하기 위해 존재하는 프로세스
  • 평소 대기 상태로 있다가 요청이 들어오면 서비스를 제공한다
  • 리눅스에서 다양한 서비스를 제공하기 위해 데몬이 동작

고아 프로세스

  • 자식 프로세스가 아직 실행중인데, 부모 프로세스가 먼저종료 되면 자식 프로세는 고아 프로세스가 된다
  • 이런 경우에 1번 프로세스가 고아 프로세스의 부모 프로세스가 된다
  • 1번 프로세스는 고아 프로세스가 작업을 마치고 종료될 수 있도록 한다

좀비 프로세스

  • 자식 프로세스는 종료될 때 종료 정보 exit status 를 부모 프로세스에게 보내고, 이 정보를 받은 부모 프로세스는 프로세스 테이블 목록에서 자식 프로세스 삭제
  • 가끔 자식 프로세스의 실행을 종료 했는데 테이블 목록에 남아있는 경우가 있는데 이러한 자식 프로세스를 좀비 프로세스라고 한다
  • 프로세스 목록에서 defunt 프로세스라고 나오기도 한다
  • 좀비프로세스가 증가하면 테이블 용량이 부족해져 정상 프로세스가 실행되지 않을 수 있다

//프로세스 목록을 출력하는 명령어
ps
ps -f : 프로세스 상세 정보 출력
ps a : 터미널에서 실행시킨 프로세스 정보 출력하기
ps au : 터미널에서 실행 시킨 프로세스 상세 정보 출력하기
=====유닉스 옵션=====
ps -e : 전체 프로세스 목록 출력하기
ps -ef: : 전체 프로세스 목록 자세히 출력

=====BSD 옵션=====
ps ax : 시스템에서 실행중인 모든 프로세스 출력
ps aux : 시스템에서 실행중인 모든 프로세스에 대한 자세한 정보 출력

ps -u 사용자명 : 특정 사용자의 프로세스 목록 출력하기 
ps -uf 사용자명 : 특정 사용자의 프로세스 목록 자세히 제공
ps -p 특저 PID : PID에 해당하는 프로세스의 정보 출력

==ps 와 grep 활용 (pgrep)==
ps -ef | grep bash : 특정 프로세스 정보 검색하기

ps 로 목록을 출력하면 나타나는 항목은 아래와 같다

  • PID : 프로세스 번호
  • TTY : 현재 터미널 번호
  • TIME : 프로세스 실행시간
  • CMD : 실행중인 명령어

프로세스 종료

불필요한 프로세스를 종료하기 위해서는 해당 프로세스의 PID를 알아야한다.

  • ps -ef / ps aux 명령어로 확인하여 kill 이나 pkill 명령어로 프로세스를 종료

시그널 signal

  • 프로세스에 무언가 발생했음을 알리는 간단한 메시지
  • 무엇이 발생했는지는 미리 정의된 상수를 사용한다
  • 시그널을 받은 프로세스는 기본적으로 종료되고, kill -l 명령어를 통해 시그널 목록 확인 가능

kill vs pkill

  • kill 명령어는 PID로 프로세스를 종료하는 명령어
  • pkill 명령어는 프로세스의 명령 이름(CMD)으로 프로세스를 찾아 종료
  • killall 명령어는 프로세스의 pkill 처럼 CMD 를 찾아 프로세스를 종료하면서 해당이름으로 시작하는 모든 프로세스를 한번에 종료한다

프로세스 관리 명령

프로세스 관리 도구 : top 명령 = 윈도우의 작업 관리자

  • 현재 실행중인 프로세스 정보를 주기적으로 출력

포그라운드/백그라운드 프로세스와 작업제어

  • 보통은 한번에 하나의 프로세스만 실행가능하므로, 하나의 명령이 종료되어야만 다시 터미널 사용 가능
  • 한 터미널에서 동시에 여러 프로세스를 실행하고 관리하는 기능

fore-ground 작업

  • 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다리는 방식으로 처리되는 프로세스를 포그라운드 프로세스라고 한다.
  • 일반적인 작업 실행 방식, 프롬프트가 출력되지 않아 다른 명령입력이 불가능하므로 대기가 필요하다
  • 우리가 흔히 아는 동작방식

back-ground 작업

  • 명령의 종료여부와 상관없이 곧바로 프롬프트가 출력되어 다른 작업을 계속할 수 있다
  • 한 터미널에서 여러개의 프로세스를 동시에 실행 가능
  • 명령을 백그라운드로 실행하려면 & 기호를 명령의 마지막에 추가
  • &기호 추가시 프롬프트가 바로 나옴

작업 제어

작업 전환, 작업 일시 중지, 작업 종료를 의미

작업 전환 : 포그라운드 작업 ↔ 백그라운드 작업

작업 일시 중지 : 작업을 잠시 중단

작업 종료 : 프로세스 종료처럼 작업 종료


작업 목록 보기

jobs 명령어 사용


작업 전환하기

ctrl + z 또는 %작업번호 : 포그라운드 작업 중지 (잠시 중지)
bg %작업번호 : 작업번호의 작업을 백그라운드 작업으로 전환
fg %작업번호 : 작업번호의 작업을 포그라운드 작업으로 전환


작업 종료하기

ctrl + c 
kill pid
kill %작업 번호

작업 예약

  • 주기적으로 반복해야하는 작업이 필요할 때, 특정시간 작업을 실행하는 예약방법 2가지 존재
  • 정해진 시간에 한번만 실행 : at
  • 정해진 시간에 반복 실행 : crontab

crontab 파일 형식

  • crontab 명령으로 관리하는 파일은 사용자별 생성
  • crontab 파일에는 여러개의 작업을 저장하고, 한 행에 하나의 작업을 설정한다
  • crontab 파일은 다음과 같이 여섯 항목으로 구성한다
    • 분 (0~59)
    • 시(0~23)
    • 일(1~31)
    • 월(1~12)
    • 요일(0~6)
    • 작업 내용
  • 이때 요일은 0이 일요일, 1일 월요일, 6이 토요일을 의미
  • 각 항목은 공백 문자로 구분하고 *은 해당 항목의 모든 값을 의미한다
  • 예를 들면 다음과 같다 30 23 1 * * sleep 100
  • 위 cron의 해석은 다음과 같다 → 매월 1일 23시 30분에 sleep 명령어 실행
crontab 명령어

crontab -e : 작업 생성 -> crontabs 경로에 사용자 이름으로 생성
crontab -l : 파일 내용 확인하기
crontab -r : 파일 삭제

'Linux' 카테고리의 다른 글

[Linux] Shell , Bash, Alias  (1) 2024.10.16
[Linux] Vi 와 Vi 명령어  (0) 2024.10.13
[Linux] 디렉토리 및 파일 명령어  (1) 2024.10.12
[Linux] Unix와 Linux , GUI 와 CLI, 리눅스 기본 명령어  (0) 2024.10.12
  1. 프로세스 번호 (PID)
  2. 프로세스의 개념
  3. 데몬 프로세스
  4. 고아 프로세스
  5. 좀비 프로세스
  6. 프로세스 종료
  7. 시그널 signal
  8. kill vs pkill
  9. 프로세스 관리 명령
  10. 프로세스 관리 도구 : top 명령 = 윈도우의 작업 관리자
  11. fore-ground 작업
  12. back-ground 작업
  13. 작업 제어
  14. 작업 목록 보기
  15. 작업 전환하기
  16. 작업 종료하기
  17. crontab 파일 형식
'Linux' 카테고리의 다른 글
  • [Linux] Shell , Bash, Alias
  • [Linux] Vi 와 Vi 명령어
  • [Linux] 디렉토리 및 파일 명령어
  • [Linux] Unix와 Linux , GUI 와 CLI, 리눅스 기본 명령어
xub2
xub2
//given //when //then
  • xub2
    xublog
    xub2
  • 전체
    오늘
    어제
    • 전체 글 모아보기 (115)
      • 잡담 (9)
      • 도전 , 자격증 (2)
      • Error (3)
      • Java (22)
        • Java (19)
        • Collections (3)
      • Spring (4)
        • Core (3)
        • MVC (1)
      • DataBase (6)
        • SQL (2)
        • Database Modeling (4)
      • Computer Science (28)
        • Network (22)
        • Software Engineering (3)
        • Operating System (3)
      • Algorithm (14)
        • CT (12)
      • Project (9)
        • Web (0)
        • iOS (8)
        • Python (1)
      • A.I (13)
      • Linux (5)
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
xub2
[Linux] 프로세스, 관리 명령, 포그라운드/백그라운드 프로세스의 작업제어, crontab

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.