귀찮음이 만들어낸 도구 1
AI 프로젝트를 할일이 있었는데, GPU 서버가 VPN이 있어야 접속되더라
VPN 툴 자체도 윈도우만 있음 ㅋㅋ 맥북 애물단지 ㅠ (하지만 이쁘죠?)
아무튼 문제는 VPN 때문에 외부접속이 안 된다는 것
원래 같으면 서버에 포트 열어두고 스마트폰으로 간간히 원격접속해서 확인할텐데 그게 불가능
매번 컴키고 VPN 키고 들어가서 종료됐는지 확인하는게 너무 귀찮다
AI 학습이 새벽에 완료됐는지 언제 완료됐는지도 어떻게 알것이며...
그래서 PID를 체크하고 있다가, 해당 프로세스가 종료되는 즉시 텔레그램 알림을 보내는 기능을 추가해뒀다
간단한데 아주 요긴했음
사용법
이 툴의 목적부터 설명해드려야할 것 같다
일단 이 툴(?!)은 백그라운드에서 실행되다가 내가 미리 알려준 PID의 프로세스가 종료되면 알림이 울린다
1. 실행 순서
# 1) 아래 명령어 입력
./telegram_script.sh
# 2) nvidia-smi 해서 내가 할당한 GPU에 걸린 PID 확인하고 아래 명령어 입력
# 알림명은 띄어쓰기 없어야 함
512312,GPU_모델학습_알림;
# 여러개인 경우는 아래처럼 쓰면 됨
124141,GPU_Test1;210492,GPU_Test2;
# 여기까지 입력하고 엔터치면 동작함
# 작업 입력 다했으면 ctrl + c로 나오면 백그라운드에서 동작함
2. 실행 예시
보다시피 '백단에서 모니터링 되고 있다'고 뜨면 완료!
주의할 점은 Ctrl + c로 cmd 창에서 해당 작업에서 나오거나, cmd창을 그대로 꺼야한다는 것!
ctrl + z로 나오면 스크립트를 종료해버리는 것이라서 그렇게 꺼버리면 안됨!
그러고 나면 아래와 같이 알림을 받을 수 있다!
(내용과 형식은 셋팅해주기 나름)
[+ TIP] : 백그라운드 실행법
사실 명령어 맽 끝줄에 & 붙여주면 백그라운드에서 실행된다
python test.py &
응용하면 아래처럼 사용할 수 있다
python test.py > test.txt 2>&1 &
한줄씩 설명하자면
'>' 의 기능
test.py의 실행 결과를 test.txt 파일에 저장하는 명령어
'2>&1'의 기능
표준 오류 출력(2번)을 표준 출력(1번)으로 리디렉션 하겠다는 의미
이렇게 하면 오류 메시지도 같은 텍스트 파일에 기록된다
'&'의 기능
명령어를 백 그라운드에서 실행
코드 설명
1. 알림 발송 부분 (telegram_script.sh)
import telepot
import sys
# 텔레그램 봇의 API Token을 여기에 입력
TELEGRAM_BOT_TOKEN = '{봇 토큰}'
# 받는 사람의 Chat ID를 여기에 입력
CHAT_ID = '{CHAT ID 입력}'
def send_telegram_message(message):
bot = telepot.Bot(TELEGRAM_BOT_TOKEN)
bot.sendMessage(CHAT_ID, message)
# OS가 리눅스일 떄만 동작할 것임
# 입력받은 인자의 길이가 1 이하이면, 전달 받은 파라미터가 없다고 출력 후 종료
# if len(sys.argv) <= 1:
# print("# need more parameter")
# sys.exit(1)
# 명령행 인자로 전달된 메시지를 가져옴
message_content = ' '.join(sys.argv[1:])
# 메시지 전송
send_telegram_message(message_content)
2. 리눅스에서 실행
./telegram_script.sh
코드 링크 (Github)
https://github.com/Ratatou2/Simple_Tool
'Linux' 카테고리의 다른 글
알면 편하다! 라따뚜이의 리눅스(Linux) 명령어 모음 (0) | 2024.12.11 |
---|---|
일정 시간마다 서버 정보 텔레그램으로 알림 받기 (feat. nvidia-smi) (0) | 2024.12.11 |
우분투 인터넷 연결 안될 때 해결방법 (이더넷 연결방법) (0) | 2024.12.11 |
Ubuntu 터미널 색상 싹 날아갔을 때 복구하는 방법 (0) | 2024.11.26 |
Ubuntu 기본 언어 변경 방법 (feat. 영어 vs 한글) (1) | 2024.11.26 |