kudansul 6d5511fbd0844e0aa7837820dbac8d01
시작하며....
안녕하세요 오랜만에 돌아왔습니다. 이번에는 마크서버가 고장날시 확인하고 수리해야할 부분중 OS단위에서
해결가능한 방법중 하나를 알려드리겟습니다.
PID ? 데몬?
PID는 프로세스 아이디 라는 뜻으로 리눅스나 유닉스 커널등에 프로세스에 붙혀지는 넘버입니다.
쉽게 말해서 저는 구단설 이라는 이름을 가지고 있습니다 그러면 누군가 저를 부를떄 저를 구단설 이라고 부릅니다.
이거처럼 프로세스는 현제 리눅스 서버 에서작동중인 프로그램이고 그 작동중인 프로그램에게 자동으로 부여되는 이름이
바로 PID라는 것입니다. 프로그램들은 이 PID 들을 이용해서 서로를 식별하고 거기에 알맞은 작동을 합니다.
PID 는 실행된 프로그램 순서대로 이름이 부여됩니다. 현세대 리눅스의 대표적인 부팅프로그램중 하나인 systemd 는 PID 가
1번 입니다. 왜 1번 일까요? 이유는 부팅후 먼저 시작하는 작동중인 프로그램이기 때문입니다. 이제 이 systemd 에 의해 실행되는
프로그램들이 순서대로2번3번 이런식으로 PID를 부여받습니다. 제가쓴 강좌중에 이거와 비슷한 내용이 있을껍니다.
그건 바로 screen -list 명령어 부분입니다. screen -list 해서 screen -r 로 서버에 접속하는걸 안다면 제가 먼말 할려는지는 알껍니다.
그 콘솔접속할때 쓰는번호가 마크서버의 PID입니다. 이제 이 리눅스 서버에서 작동중인 프로그램 은 머라고 부를까요?
바로 데몬 입니다. 악마라는 뜻은 아닙니다. 오해 하지 말아주세요. 이 데몬이 바로 PID를 부여받게 되는겁니다.
그러면 우리가 실행한 마크서버들은 데몬일까요? 으음 그게 사실 좀 애매하긴 합니다. 보통 데몬하면 systmed 관련 유틸로 확인하는게
일반적 데몬이긴 하나 PID부여받고 실행되니 데몬같고 이부분에서는 그냥 편의상 데몬이라고 생각하고 넘어가죠.
마크서버 데몬의 PID를 알아내기
마크서버 데몬의 PID를 알아내는 방법은 대표적으로 2 가지가 있습니다.screen -list
하고 netstat
명령어 입니다. 이제 이론 넘어가고 진짜 실습해보겟습니다.
마크서버 키고 screen -list
를 쳐봅시다.
저는 7306 이라는 PID를 부여받았네요. 자 우리 여기서 만일 서버가 터져 접속이 안된다고 가정해봅시다.
상황은 서버의 폭주로 서버가 크래쉬와 함께 비정상적인 종료를 해서 재시작을 하는데 서버가 안켜지고 로그에는 포트가 이미 열려있다 뜹니다.
이제 우리가 할일은 아래 명령어를 쳐보는겁니다.
[root@nadeshiko ~]# netstat -ntlp
아래처럼 여러 정보들이 뜹니다. 여기서 맛이간 데몬은 마크서버 이죠 그러면 마크서버만 볼수있게 해볼까요?
[root@nadeshiko ~]# netstat -ntlp | grep 25565
마크서버는 25565 포트가 기본입니다. 제가 친 명령어를 해석해겟습니다.netstat -ntlp | grep 25565
는 netstat 이라는 명령어를 옵션 -ntlp 를 주어 작동시키고 거기서 25565 라는 글자가 있는 줄만 표시한다. 라는 뜻입니다.grep
명령어는 기본적으로 특정 글자가 있는 줄만 표시합니다.
이제 위 명령어로 25565 포트의 PID를 알아내보았습니다. 이제 PID를 부여받은 데몬을 죽여보겟습니다.
[root@nadeshiko ~]# kill -9 PID
PID에는 netstat -ntlp | grep 25565
또는 netstat -ntlp
명령어로 알아낸 마크서버의 PID 를 입력합니다.
저는7307 을 부여받았습니다.
이게 끝입니다. 이제 screen -list
를 쳐봅시다.
이렇게 뜨면 성공입니다. 실제 서버가 터졌을때는 Dead?? 이런식으로 죽었다?? 로 뜹니다. 그럴떄는 screen -wipe
를 치신후 screen -list
명령어를 쳐주시면 됩니다. 그다음 다시 서버를 켜보시면 정상적으로 서버가 켜질것입니다.
마치며...
이 방법은 진짜 다양하게 써먹을수 있을뿐더러 |grep
조합은 진짜 자신의 입맛대로 써먹을수 있으며 어떨때는 서버 수리시간은 획기적으로
줄이고 당신의정신건강도 보장해줄수 있을것입니다. 오늘 배운 내용은 앞으로 진짜 중요하며 데몬,PID라는 용어는 리눅스 서버에서 알아두면
진짜 좋은 이론중 하나 입니다. 이거만 알아도 서버장애 났을떄 왜 고장났는지도 알수 있거든요.
https://discord.gg/2gxSqWu - 마인크래프트 개발자 디스코드
HELLO!
2020.04.06윈도우는 다시시작하면 되는데 ... 암튼 감사합니다!