Notice
Recent Posts
Archives
Today
Total
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Recent Comments
관리 메뉴

우당탕탕 개발일지

서버에서 c# 프로그램 실행하기(2) 본문

Server

서버에서 c# 프로그램 실행하기(2)

devchop 2023. 8. 13. 02:36

git에서 빌드되어잇는 파일을 받았으므로, 이제 백그라운드에서 실행을 하면된다.  dll 파일을 linux에서 실행하기 위해서는 다음처럼 해야한다.


## builds 폴더, 빌드한 결과물이 들어있는 폴더의 상위폴더에 들어가서
## builds 폴더 안에 있는 모든 파일의 권한을 755로 설정

##dotnet [파일이름].dll 형식으로 사용.

chmod -R 755 builds #실행하기 위한 권한 부여
# .dll 을 실행하는데 로그는 log.out 파일에, 에러는 err.out 파일에 저장한다. 백그라운드 실행
nohup dotnet builds/chopsFirstServer.dll "실행할때 arg값" > log.out 2> err.out &

ps -ef #현재 작동중인 프로세스 검색

 

정상적으로 Listener 로그가 찍히는것을 확인하였다! 그런데 while문 뒤에껀 실행하지 않고 종료되는것이다..ㅜㅜ

 

 

#이슈1

두번째로 실행할때 "Address already in use" 에러가 발생하였다. 

netstat -lnpt #실행중인 프로세스 검색

#다음과 같이 출력됨. 8080 포트에 해당하는 프로그램을 kill해준다.
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      12697/dotnet        
tcp        0      0 127.0.0.54:53           0.0.0.0:*               LISTEN      -               

sudo kill -9 12697

 

빌드를 하고 다시 실행할때 일련의 작업들을 한꺼번에 하기 위해 starter.sh를 작성하였다.

##8080 포트를 사용하는 프로세스의id를 검색하여 PID변수에 넣는다.
##만약 PID 가 0 이 아니라면 해당 프로세스를 죽인다 ( address aleady used 에러 피하기 위함)
##log.out 파일과 err.out파일을 깨끗하게 지운뒤, 다시 .dll을 백그라운드 실행한다.

PID=`ps -elf |grep chopsFirstServer | grep -v 'grep' | awk '{print $4}'` 
echo pid: $PID
if [ $PID -ne 0 ];then
        kill $PID
fi

cat /dev/null > log.out
cat /dev/null > err.out
nohup dotnet builds/chopsFirstServer.dll >log.out 2>err.out &
cat err.out

리스너가 작동하는것 확인하였으나 그 뒤에 while문 로그가 찍히지않음. 왜인지는 잘 모르겠으나,, 우선 유니티로 Connect를 해볼까한다. 다음시간에..!