최근에 딥러닝 실험을 돌리는 일이 많아졌다. 조금 오래 걸리는 작업이나 실험은 언제 끝날지 몰라 중간중간 확인하게 되는데, 이 과정이 생각보다 번거롭다. 실험을 돌려놓고 나중에 돌아와서 보니 오류로 종료되었다는 것도 늦게 알게 되기도 하고.. 그래서 작업 종료 시점에 알림을 받을 수 있는 방법을 찾아보았고 실제로 슬랙을 이용해 알림을 받을 수 있는 방법이 있어 정리해보았다.
1) 슬랙 웹훅(Webhook) URL 생성
먼저 슬랙 앱이 메시지를 보낼 수 있는 통로를 만든다.
-
Slack API 페이지(api.slack.com/apps)로 이동하여 ‘Create New App’ 클릭
-
From scratch 선택 → 이름 설정(나는
Exp-Alert로 설정) → 워크스페이스 선택 -
좌측 메뉴에서 Incoming Webhooks를 클릭하고 On으로 활성화
-
하단의 Add New Webhook to Workspace를 클릭하여 알림을 받을 채널 선택
-
생성된 Webhook URL을 복사
2).zshrc에 슬랙 알림 함수 추가
이제 복사한 URL을 사용해서 터미널에서 호출할 함수를 만들면 된다. .zshrc 파일을 열어 아래 함수 내용을 추가
# 슬랙 알림 함수
function alert() {
# 복사한 Webhook URL을 아래 따옴표 안에 넣기
local url="https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
local status=$? # 이전 명령어의 성공(0) 또는 실패(비영) 상태 저장
local message
if [ $status -eq 0 ]; then
message="✅ *실험 종료 (Success)*\n>"
else
message="❌ *실험 종료 (Failed)*\n> 에러 발생 (Exit Code: $status)"
fi
# 슬랙에 JSON 데이터 전송
curl -s -X POST -H 'Content-type: application/json' \
--data "{'text': '$message'}" $url > /dev/null
}
3) 실제 사용법
이제 터미널에서 명령어를 실행할 때 뒤에 ; alert만 붙이면 된다
- 예시:
python main.py; alert