Yoon.s

프로세스? 포그라운드/백그라운드, 작업 제어, 예약 본문

인프라/linux

프로세스? 포그라운드/백그라운드, 작업 제어, 예약

yo_onHJ 2020. 7. 13. 21:48

포그라운드 작업

원래 터미널에서 작업할 때 화면에 출력된 결과를 보고 다시 명령을 입력하는 대화식으로 작업 수행

-> 명령이 실행되어 결과가 출력될 때까지 기다리는 방식으로 처리되는 프로세스 

 

백그라운드 작업

포그라운드 프로세스가 실행되는 동안 뒤에서 다른 프로세스를 실행하여 한 터미널에서 여러 개의 프로세스를 동시에 실행 가능

  • 명령의 마지막에 & 기호 추가
  • 현재 터미널에서 무엇을 하고 있는지 상관없이 결과 그대로 화면에 출력 -> 결과가 뒤섞여 제대로 확인 불가능
    (이때는 출력과 오류 방향을 전환하여 실행 결과와 오류 메시지를 파일로 저장)

 

작업 제어

jobs [%작업 번호]

: 현재 실행중인 백그라운드 작업 보는 명령어

 

항목 출력 예 의미
작업 번호 [1] 백그라운드 실행할 때마다 순차적 증가
작업 순서 +  + : 가장 최근에 접근한 작업
 - : +작업보다 바로 전에 접근한 작업
 공백 : 그 외 작업
상태  실행중  실행중 : 현재 실행중
완료 : 작업 정상적으로 종료
종료됨 : 작업이 비정상적으로 종료
정지됨 : 작업이 잠시 중단
명령 sleep 100& 백그라운드로 실행중인 명령

 

 

작업 전환

현재 포그라운드로 실행 중인 작업을 백그라운드로 전환하려면 ? 

Ctrl+z 으로 작업 종료 -> bg %작업 번호 -> 백그라운드로 전환

 

-> 백그라운드 작업 없음

 

-> 포그라운드로 실행중

-> Ctrl+z로 일시 정지

-> 일시 정지 상태

 

-> 백그라운드로 전환

 

 

-> 백그라운드로 실행중

 

 

 

작업 종료

Ctrl+c (포그라운드 종료) : 인터럽트 시그널을 포그라운드 프로세스에 전달, 인터럽트 받으면 프로세스 종료

kill (백그라운드 종료) : 강제 종료 (PID 대신에 '%작업 번호' 지정 가능)

 

포그라운드와 백그라운드 작업 종료

 

로그아웃 후에도 백그라운드 작업 실행 

nohup 명령&

: 로그 아웃 후에도 백그라운드 작업 계속 실행

  • 명령의 실행 결과와 오류 메시지가 현재 디렉터리에 nohup.out 파일로 자동 저장 

 

작업 예약

1. 정해진 시간에 한 번 실행
at [옵션] 시간
: 예약한 명령을 정해진 시간에 실행

옵션
-l : 현재 실행 대기 중인 명령의 전체 목록 출력 (atq 명령과 동일)
-r 작업 번호 : 현재 실행 대기 중인 명령 중 해당 작업 번호를 삭제 (atrm과 동일)
-m : 출력 결과가 없더라도 작업이 완료되면 사용자에게 메일로 알려줌
-f 파일 : 표준 입력 대신 실행할 명령을 파일로 지정

 

이때 시간 설정 방법은 ? 

  • at 4pm + 3 days : 지금부터 3일 후 오후 4시에 작업 수행
  • at 10am Jul 31 : 7월 31일 오전 10시에 작업 수행
  • at 1am tomorrow : 내일 오전 1시에 작업 수행
  • at 10:00am today : 오늘 오전 10시에 작업 수행

atq

: 현재 사용자의 등록된 작업 목록을 보여줌 

 

atrm 작업 번호

: 지정된 작업 번호의 작업을 삭제 (at -r, at -d도 설정 작업 실행 전 삭제됨)


2. 정해진 시간에 반복 실행

crontab [-u 사용자 ID] [옵션] [파일]

: 사용자의 crontab 파일을 관리

옵션
-e : 사용자의 crontab 파일을 편집
-l : crontab 파일의 목록을 출력
-r : crontab 파일을 삭제

- crontab 파일의 형식

분(0~59) 시(0~23) 일(1~31) 월(1~12) 요일(0~6) 작업내용

매번 진행하려한다면 *을 이용함 -> ex.. 15 22 1 * * 작업 내용 (= 매달 1일 22:15에 작업을 실행할 것)

crontab -e를 이용해 crontab 파일 생성하고 편집

편집은 파일이 열리며 설정 내용(구조에 맞춰)을 안에 작성해야 함

 

crontab -l 을 이용해 파일 내용 확인

 

crontab -e 실행하면 나오는 파일에 입력한 내용

crontab -r을 이용하여 파일 삭제

 

 

파일 내용 확인해보면 나오는 것 없음(삭제됨 확인)

Comments