오늘은 서버 ssh 연결이 끊겨도 파일을 실행시키는 방법에 대하여 작성할 예정이다.
우선 이걸 하게 된 계기는 컴퓨터 비전 프로젝트를 진행하면서 모델을 돌리는 시간이 많았는데, 대회 측에서 제공받은 서버를 이용하여 진행하였는데 이 서버가 있더라도 내 PC에서 SSH연결을 통해서 접속을 해놔야만 해당 코드가 실행되었다.
즉 단순 컴퓨팅 자원을 빌릴 뿐 내 PC가 꺼지면 코드가 실행되지 않아 내 PC를 계속 켜놔야 했다..
컴퓨터 전기세 얼마나 하겠냐만은 맨날 컴퓨터 하지도 않는데 켜놓기도 뭐 하고, 밤에 잘 때 본체의 레인보우 빛이 너무 많이 나와서 답답해서 방법을 알아보았다.
잡담이 길었는데 이제 시작해보겠다.
우선 하기 전에 검색을 통해서 다양하게 찾아봤는데 `py` 파일을 실행시키는 것은 매우 단순해서 많이 나와있었는데 `ipynb` 파일을 실행시키는 방법이 없었고, 나처럼 이런 서버에 무지한 사람이 이해하기 어려운 것들이 많아서 그냥 내가 이해한 대로 설명해 보겠다.
0. Putty 설치
기존에는 vscode를 이용하여 ssh 접속을 해서 쉽게 코드를 작성하고 실행시켰는데 백그라운드로 파일을 넘겨서 실행시키려면 vscode 같은 것이 아니라 putty를 이용해야 했다.( nohup이라는 명령어를 이용할 건데 이게 서버 vsc에서 작동이 안 하는 걸로 알고 있음)
우선 아래 링크에서 서버 접속을 위한 putty를 설치한다.
1. 서버 인증 키 변환
음 이건 우선 각자 다를 텐데 기존에 서버에 접속할 때 매번 패스워드를 이용해서 접속하는 사람도 있고 인증키로 입력하는 분들도 있을 거다.
나 같은 경우에는 대회 측에서 제공하는 `pem`확장자로 되어있는 인증키를 이용해서 접속했기 때문에 이를 사용해야 했다.
putty로 접속하기 위해서는 이 인증키의 형식이 달랐기 때문에 해당 `pem`인증키를 `ppk`형식으로 바꿔줄 것이다.
즉 인증키가 아니라 패스워드로 접속하는 분들은 해당 과정을 건너뛰어도 된다.
putty를 설치하면 자동으로 putty gen이 pc에 설치된다.
- Load 클릭
- 오른쪽 아래 파일 확장자를 모든 파일로 변경
- 기존 pem 파일을 선택
- Save Private key를 누르고 원하는 경로에 저장
2. 서버 동시 접속
사실 이 과정은 필수적이지 않은데, 나의 경우에는 vscode를 이용하여 다른 파일들을 수정하면서 putty를 이용해 특정 파일을 실행하거나 다른 작업을 위해 서버 동시 접속 수를 늘리고자 했다. 이것도 `vi`나 `vim` `nano`같은 에디터를 이용해서 터미널에서 보통 하는 것 같은데 나는 어려워서 그냥 vscode에서 해당 config파일을 수정하였다.
- vscode로 서버 ssh 접속
- vscode의 open file 클릭하여 `etc/security/limits.cof` 파일 열기
- 해당 파일의 maxlogins를 설정하는 부분의 주석을 해제하고 숫자 작성하고 저장
3. putty로 서버 접속
- putty 실행 후 좌측 메뉴에서 `Connection`->`SSH`->`Auth`->`Credential`->`Private key load` 클릭 후 1번에서 저장한 ppk파일 Browse (이 과정 역시 인증키를 입력하지 않고 패스워드를 입력하는 분은 건너뛰기)
- 좌측 메뉴에서 `Session`->`host name`에 해당 서버 접속 ip주소 (root@아이피주소 같은 형식) 입력하고 port 에는 포트번호 입력
- 해당 설정 정보를 저장하고 싶으면 오른쪽 아래의 Session에 이름을 지정하고 save 하면 나중에 putty를 켜서 해당 설정 Load 가능
4. 서버 백그라운드에서 ipynb 실행
- putty를 이용하여 서버 접속
- 실행 파일이 있는 곳으로 이동하기 ( `pwd`: 현재 경로 확인, `cd`: 경로 이동, `../`: 이전 dir
- 아래의 코드 실행하면 백그라운드에서 해당 파일이 실행됨.
파일이 종료되면 저장파일명. ipynb에 output이 찍힌 채로 저장됨.nohup jupyter nbconvert --execute --to notebook 파일명.ipynb --output 저장파일명.ipynb &
- 해당 putty에서 `jobs`명령어를 이용하여 파일이 정상적으로 실행중인지 확인 가능
- putty를 끄고 재접속 했을 경우 `jobs`로 파일이 돌아가고있는지 확인불가, `ps aux | grep jupyter`명령어로 방금 위에서 실행한 명령어가 정상적으로 작동하고 있는지 확인 가능
- 해당 실행을 종료하고 싶은경우 `kill 실행번호` 혹은 `kill -9 실행번호`로 종료 가능( 실행번호란 아래 명령어를 실행하거나 ps aux 로 확인했을 떄 젤 앞에 나오는 숫자. 아래 스크린샷에서는 1017293을 의미)
5. 후기
우선 위처럼 ipynb 파일이 아니라 py파일이나 sh 파일을 이용하는 경우 더 쉬운 명령어를 이용해서 코드를 실행시킬 수 있을 것이다.
유용하거나 뭔가 오류가 있다면 댓글 달아주세요!!!
+) 다음글에서는 putty 꾸미기로 찾아오겠습니다 ~~
감사합니다.
참고 블로그
'알쓸신잡' 카테고리의 다른 글
아이폰으로 서버 SSH 접속 (0) | 2024.02.25 |
---|---|
Putty 설정 및 꾸미기 (0) | 2024.02.20 |
연구실 안전교육 스킵 (0) | 2024.02.14 |
리눅스 구글드라이브 파일 다운 (0) | 2024.02.09 |
wandb 사용법 (0) | 2024.02.08 |