쉘 스크립트로 가상환경 자동 실행

정예슬·2022년 1월 25일
0

침착한 일상

목록 보기
15/17
post-thumbnail

파이썬 파일을 정해진 기간마다 자동으로 실행하는 것이 필요할 때가 있다. 모델을 자동으로 학습한다던지..하는?
그럴 때는 shellscript로 자동 실행문을 만들어서 crontab에 등록해 놓으면 편리하다 😊

📄 python_auto_launcher.sh

#!/bin/sh

BASE_DIR="/파일이 있는 경로를 입력"
RESULT="/실행 결과를 출력할 경로를 입력"

StartTime=$(date +%s)

get_time() {
	TIME=`date '+%Y/%m/%d %H:%M:%S'`
}

msg() {
	get_time
	echo "[$TIME] $*" | tee -a $RESULT
}

conda_act() {
	source /home/사용자 계정/anaconda3/etc/profile.d/conda.sh
	source /home/사용자 계정/anaconda3/bin/activate `가상환경 이름`
}

msg "[START   ] Script Started!"

conda_act

cd $BASE_DIR

~/anaconda3/envs/가상환경 이름/bin/python `파일명(~.py)`

EndTime=$(date +%s)

msg "[END     ] Script End!"
msg "[RUN-TIME] Total Spent time : $(($EndTime - $StartTime)) Second"

이렇게 스크립트를 생성하면 파일 실행 경과 시간을 로그에서 확인할 수 있다.
생성한 스크립트는

$ crontab -e         # crontab 수정 명령어

상단의 명령어로 크론탭을 등록해서 원하는 시간에 자동 실행을 시키면 된다.(vi 모드와 같이 수정하면 됨)
나같은 경우에는 아래처럼 등록해서 사용하고 있다.

######################################################
# Service Sample
00      12      *       *       *       /sh 파일 경로/~.sh

다음과 같이 작성하면 매일 12시 정각마다 sh 파일이 자동 실행된다.
각 탭은 분 / 시 / 일 / 월 / 요일로 구성되어 있는데, * 표기를 하면 모든 일,월,요일에 실행한다는 의미이다. (즉, 매일 실행한다는 뜻)
크론탭 작성법과 관련해서는 "크론탭 작업 스케줄러"라고 검색하면 관련 자료가 많이 나온다.

작성을 완료한 크론탭 리스트는

$ crontab -l  

상단의 명령어로 전부 확인이 가능하다.

profile
춘식이랑 함께하는 개발일지.. 그런데 이제 먼작귀를 곁들인

0개의 댓글