[Linux] 작업 스케줄러 - Crontab

2024. 5. 28. 23:19CS/운영체제 &

 

개발 및 운영을 하다보면, 특정 모듈이 잘 작동하는지 확인을 하거나 특정 작업을 주기적으로 실행해야 할 때가 있더라구요. 그 때 필요한 것이 작업 스케줄러!!

 

크론탭이란 리눅스(Linux) 운영체제 환경에서, 스케줄링을 관리하는 프로그램입니다.

 

다음과 같은 명령어를 통해, 해당 프로세스가 실행중인지 확인할 수 있는데요!

ps -ef | grep -v grep | grep (processName)

 

이를 응용해서, 주기적으로 해당 프로세스가 실행되어 있는지 확인해보려고 합니다.


 

write_apple.sh작성

apple.pid 프로그램이 있다면 오늘 날짜의 log에 해당 내용을 기록을 하려고 합니다.

반대로 프로그램이 실행중이지 않다면, 멈춰 있음을 로그에 남겨두려고 하는데요!

#!/bin/bash

DIR="/app/fruit/apple"
DAY=$(date +"%Y-%m-%d")
TIME=$(date +"%Y-%m-%d %H%M%S")

if ps -ef | grep -v grep | grep apple.pid > /dev/nul 2>&1
then
	echo "$TIME program is running" > $DIR/$DAY.log
else
	echo "$TIME programi is stopped" > $DIR/$DAY.log
fi

 

crontab 작성

해당 sh을 주기적으로 실행하는 크론탭을 작성하려고 합니다.

해당 크론탭은 같은 모듈 안에서 1시간마다 감시한다고 가정을 하겠습니다~!

0 1 * * * /bin/bash /app/fruit/apple/write_apple.sh

 

이렇게 작성할 수 있을 것 같아요!!

 

먼저, 크론탭을 작성하는 명령어는 crontab -e 이구요! 반대로 크론탭을 삭제하는 명령어는 crontab -r 입니다.

 

크론탭에 작성되어 있는 작업 스케줄러, 기본적인 구성은 다음과 같습니다.

* * * * * (경로)/(sh이름).sh

 

*의 순서대로 설명하자면

 

첫 번째 * : 분 (0~59)

두 번째 * : 시 (0~23)

세 번째 * : 일 (1~31)

네 번째 * : 월 (1~12)

다섯 번째 * : 요일 (0~7, 0과 7은 일요일)입니다.

 

 

'CS > 운영체제 &' 카테고리의 다른 글

[CS] 페이징(paging)  (0) 2024.02.27
[Linux] 리눅스와 친해지려고 노력중  (0) 2024.02.15
[Linux] 리눅스 사용을 위한 VM  (2) 2024.02.09