오늘은 ssh 연결이 끊겨도 프로그램이 돌아갈 수 있도록 백그라운드에서 동작시키는 법을 알아볼 것이다.
(이 글을 작성할 때는 screen이니 tmux니 몰랐음..)
우선 하기 전에 검색을 통해서 다양하게 찾아봤는데 `py` 파일을 실행시키는 것은 매우 단순해서 많이 나와있었는데 `ipynb` 파일을 실행시키는 방법이 없었고, 나처럼 이런 서버에 무지한 사람이 이해하기 어려운 것들이 많아서 그냥 내가 이해한 대로 설명해 보겠다.
0. Putty 설치
기존에는 vscode를 이용하여 ssh 접속을 해서 쉽게 코드를 작성하고 실행시켰는데 백그라운드로 파일을 넘겨서 실행시키려면 vscode 같은 것이 아니라 putty, 터미널, mobaxterm을 이용해야 했다.
우선 아래 링크에서 서버 접속을 위한 putty를 설치한다.
1. 서버 인증 키 변환
서버 접속 시 인증키가 아닌 패스워드로 접속하는 분들은 해당 과정을 건너뛰어도 된다.
음 이건 우선 각자 다를 텐데 기존에 서버에 접속할 때 매번 패스워드를 이용해서 접속하는 사람도 있고 인증키로 입력하는 분들도 있을 거다.
나 같은 경우에는 대회 측에서 제공하는 `pem`확장자로 되어있는 인증키를 이용해서 접속했기 때문에 이를 사용해야 했다.
putty로 접속하기 위해서는 이 인증키의 형식이 달랐기 때문에 해당 `pem`인증키를 `ppk`형식으로 바꿔줄 것이다. \
putty를 설치하면 자동으로 putty gen이 pc에 설치된다.
- Load 클릭
- 오른쪽 아래 파일 확장자를 모든 파일로 변경
- 기존 pem 파일을 선택
- Save Private key를 누르고 원하는 경로에 저장
2. 서버 동시 접속
대회 주최측에서 개인서버를 제공해 줬는데, 동시접속이 막혀있어서 동시 제한 횟수를 늘려놨다.
1. 서버접속
2. `etc/security/limits.cof` 파일 열기
3. `maxlogins` 설정
3. 서버 접속
- putty 실행 후 좌측 메뉴에서 `Connection`->`SSH`->`Auth`->`Credential`->`Private key load` 클릭 후 1번에서 저장한 ppk파일 Browse (이 과정 역시 인증키를 입력하지 않고 패스워드를 입력하는 분은 건너뛰기)
- 좌측 메뉴에서 `Session`->`host name`에 해당 서버 접속 ip주소 (root@아이피주소 같은 형식) 입력하고 port 에는 포트번호 입력
- 해당 설정 정보를 저장하고 싶으면 오른쪽 아래의 Session에 이름을 지정하고 save 하면 나중에 putty를 켜서 해당 설정 Load 가능
4. 서버 백그라운드에서 ipynb 실행
- putty를 이용하여 서버 접속
- 실행 파일이 있는 곳으로 이동하기
- 아래의 코드 실행하면 백그라운드에서 해당 파일이 실행됨.
파일이 종료되면 저장파일명. 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파일말고 다른 것을 돌릴 때는 더 간단하다.!!!
감사합니다.
그냥 screen, tmux씁시다 예
참고 블로그
'알쓸신잡' 카테고리의 다른 글
아이폰으로 서버 SSH 접속 (0) | 2024.02.25 |
---|---|
Putty 설정 및 꾸미기 (0) | 2024.02.20 |
연구실 안전교육 스킵 (0) | 2024.02.14 |
리눅스 구글드라이브 파일 다운 (0) | 2024.02.09 |
wandb 사용법 (0) | 2024.02.08 |