처음에 ec2와 s3를 돌리던 aws 계정이 프리티어 한도를 거의 넘어갈뻔하여, 계정을 새로 파서 다시 환경 세팅을 했다.
환경 세팅을 다 마친 후 파이썬 스크립트를 nohup으로 백그라운드 키고 창을 닫으니 아래와 같은 오류가 발생했다.
nohup python3 main.py &
# 오류
target frame detached
(failed to check if window was closed: disconnected: Unable to receive message from renderer)
처음 ec2에서는 안 떴는데 이상해서 구글링 해보니, 크롬 드라이버 버전 문제라는 stackoverflow를 봤는데 내 상황과 달랐다.
만능 ChatGPT에게 물어보니 이유를 빠르게 알아챌 수 있었다.
읽고 보니, 첫 ec2 돌릴때와 차이점이
1. 새로 추가한 코드가 팝업창을 클릭하는 코드 추가함
2. 크롬 드라이버 버전 업
크게 이 두 가지인데, 정확히 어떤 원인인지는 모르겠지만, 하나 확실한 건 chatGPT 말대로 'SSH 연결을 끊거나 터미널 세션이 종료될 때 발생할 수 있는 ChromeDriver의 오류' 인 듯하다.
이를 해결하기 위해 nohup 대신 screen을 사용해보라 하여 바로 시도해보았다.
그 전에..
Screen이란?
Linux/Unix 시스템에서 사용할 수 있는 터미널 멀티플렉서 프로그램으로, 말 그대로 "터미널 가상화"를 지원해준다.
screen을 통해 하나의 터미널에서 여러개의 터미널 세션을 만들수 있다.
이는 세션을 분리하고 다른 터미널에 다시 연결하고, 사용자와 세션 공유도 가능케 한다.
백그라운드로 돌아가기 때문에, 스크린에서 명령어 입력하고 터미널을 종료해도 작업을 이어갈 수 있다는 장점이 있다.
해결과정 (Screen 설치 및 세션 시작)
1. screen 설치
sudo apt-get install screen
2. screen 세션 시작
screen
3. 실행할 python 스크립트가 있는 곳으로 가서 nohup으로 백그라운드 실행
nohup python3 main.py &
4. screen 세션 종료
Ctrl+A, d 을 눌러 세션 종료 가능하다
이제 ssh연결을 끊거나 터미널 세션이 종료되어도 계속 실행된다.
'ps -ef | grep screen' 명령어 입력 시 백그라운드로 잘 돌아가고 있는 것을 확인가능하다.
만약 세션에 재접속 하려면 다음 명령어를 쓰면 된다.
screen -r
ec2 연결(ssh/terminal)을 끊어도 백그라운드에서 파이썬 스크립트가 잘 돌아가는 것을 확인할 수 있다.
오류 해결 성공...!!!!
'#️⃣ Project 및 개발일지 > 개발일지' 카테고리의 다른 글
[Django] 장고 Logging하기 (0) | 2023.05.03 |
---|---|
[크롤링] beautifulsoup 값 안 가져와짐 - 정적 페이지 판단법 (0) | 2023.05.03 |
[AWS EC2] SSH 연결: Permission denied (publickey) 오류 해결 (0) | 2023.04.26 |
[Docker] Python 크롤러 프로젝트 Docker image로 EC2로 배포하기 (0) | 2023.04.24 |
[Python] 에러 클래스의 메세지를 Slack chat으로 보내기 (0) | 2023.04.24 |