nohup java -jar your_application.jar &

 

nohup 이라는 명령어를 앞에 붙여주고 마지막에는 &를 붙여주면 된다.

nohup = no hang up

 

단, nohup 명령어를 붙였을 때 실행하려는 파일이 755 permission을 가지고 있어야 한다.

permission없으면 실행 안 됨.

 

 

chmod를 사용한 권한 부여방법

모든 권한 읽기, 쓰기, 실행을 부여

sudo -s // root 권한 얻기
chmod -R 777 filename

 

 

nohup과 &(백그라운드)의 차이

nohup

프로그램의 데몬의 형태로 실행시키므로 로그아웃으로 세션이 종료되더라도 프로그램 유지.

&(백그라운드)

단지 프로그램을 사용자의 눈에 보이지 않는 백그라운드 형태로 돌리고 있기 때문에 로그아웃으로 세션과 연결이 끊어지면 실행되고 있던 프로그램도 함께 종료.

어떤 프로그램을 종료없이 백그라운드에서 실행하고 싶으면 "nohup + &" 조합으로 실행하는 것이 가장 안전.

 

 

프로세스 종료

ps 명령어로 프로세스 아이디를 알아내고, kill 명령어로 프로세스 종료

 

 

🚫 문제 상황

웹소켓 서버를 파이썬 서버로 해서 스프링 기반의 클라리언트에서 파이썬 서버로 동영상을 전달하려고 함.

그런데 파이썬 서버측 웹소켓이 open connection하자마자 close하는 문제가 발생.

골치 아팠던건 open이 유지될 때도 있고, open하자마자 close되는 경우도 있고 랜덤으로 상황이 나타나는 것.

 

❗️ 문제 원인 & 💊 해결

파이썬 웹소켓 서버 코드에 있었다...

import asyncio
import base64
import cv2
import numpy as np
import websockets 
import AI_function_img


async def handler(websocket):
    while True:
        data = await websocket.recv()
        img = cv2.imdecode(np.frombuffer(base64.b64decode(data.split(',')[1]), np.uint8), cv2.IMREAD_COLOR)
        result = AI_function_img.handle(img)
        if result != None and len(result) > 0:
          await websocket.send(result)


async def main():
    async with websockets.serve(handler, "172.31.11.131", 9999):
      await asyncio.Future()  # run forever


if __name__ == "__main__":
    asyncio.run(main())

웹소켓이 연결되어서 이미지 자료를 전달받고 우리가 만든 인공지능이 이미지 classification하는 동안 return이 None인 찰라의 시간이 발생하는데, 이때 websocket.send(result)를 해버리면 error가 발생해서 웹소켓이 자동으로 close된 것.

그래서 웹소켓이 클라이언트로 result를 전달하기 전에 null check를 해주는 코드를 추가했더니 문제가 해결됐다.

🚫 문제 상황

JS에서 video태그를 사용해서 webcam을 실행하고 이를 파이썬 서버로 보내는 기능을 구현하려고 함.

그런데 localhose에서는 카메라가 잘 작동했는데 프로젝트를 NCP에 올리고 public ip로 접속하니 제목에 명시한 에러 발생.

 

❗️ 문제 원인

localhost 는 http 도 보안 출처로 간주하지만, 출처가 다른 곳에서 접속할때는 SSL/TLS 인증서가 필요함.

내 PC의 카메라/마이크에 접근을 하려고 할 때, 이때 이 서버에 인증서가 있는지 확인을 하게 되는데,

이 서버의 URL이 https 가 아니면 

이렇게 표시가 되고, Media 에 접근 할 수 없음.

 

💊 해결 방법 1 : 서버에 인증서 설치

비용 발생. 실제 서비스를 해야 할 일이 있다면 ssl 인증서를 발급 받아 서버에 설치해야 함.

 

💊 해결 방법 2 : 일시적

테스트가 목적이므로 url에 접속할 pc에서 진행해주면 됨.

 

1 ) 크롬 브라우저에서 아래 주소 입력

chrome://flags

 

2) 상단 search 입력란에 Insecure origins treated as secure 입력. 

    그리고 아래와 같이 접속 할 서버 ip 를 입력  Enable 시키고 브라우저를 다시 시작.

 

3) 그리고 다시 서버 주소로 접속하면, 카메라에 권한이 있는 것을 확인 가능.

 

 

📌 출처

https://hello-bryan.tistory.com/467

 

[Javascript] cannot read properties of undefined (reading 'getUserMedia') 해결하기

cannot read properties of undefined (reading 'getUserMedia') WebRTC 로 클라이언트와 서버 간 영상 전송을 하고 있었습니다. 처음에는 같은 PC 에서 서버와 클라언트를 실행해서 잘 됐지만, 서버를 따로 두고 다

hello-bryan.tistory.com

 

+ Recent posts