메뉴 닫기

서버에 있는 좀비프로세스(defunct) 확인 및 제거

[개요]
– 서버에 있는 좀비프로세스(defunct) 확인 및 제거를 할 수 있다.

[내용]
1. 좀비 수 확인 명령어
top -b -n 1 | grep zombie
ps -ef | grep defunct | grep -v grep | wc -l

2. 좀비 프로세스 제거
ps -ef | grep defunct | awk ‘{print $3}’ | xargs kill -9

========================================================

[개요]
– 리눅스, Windows 시스템 하드웨어 정보를 알 수 있다.

[내용]
리눅스 서버
리눅스 전체 코어(프로세스)개수
grep -c processor /proc/cpuinfo
물리cpu 수
grep “physical id” /proc/cpuinfo | sort -u | wc -l
cpu당 물리코어(프로세스) 수
grep “cpu cores” /proc/cpuinfo | tail -1

top 명령어에서 Swap 사용량 출력
top 입력 -> f키 입력 –> p 스페이바

윈도우 서버
방법1. 시작 > programs >Accessories > systemp Tools > System Information
방법2. 실행 > dxidag 입력
방법3. CPUZ 프로그램을 옮겨서 실행시킨다.(가독성이 있어서 추천)

=============================================================

포트 접속가능 여부를 체크할 때 telnet을 사용하곤 했는데 telnet이 없는 서버가 있어서 방법을 찾다가 발견한 툴.
이게 훨씬 킹왕짱임.

netcat은 Linux에서 네트워크 관련 많은 것을 할 수 있게 해주는 가볍지만 강력한 프로그램임.

[포트 접속가능 여부 확인]
// google.com의 443 포트가 접속가능한 지 체크
[root@localhost]# nc -z google.com 443
Connection to google.com 443 port [tcp/https] succeeded!

// google.com의 440~450 포트 사이에 접속가능한 포트 스캔

[root@localhost]# nc -z -w 1 -v google.com 440-450 2>&1 | grep succeeded

[listening server]
// netcat은 listening 서버로도 사용가능.

// 서버에서 2222 포트로 listen
[root@server.com]# nc -l localhost 2222

// 클라이언트에서 서버의 2222 포트로 접속해서 hello 문자열 전송
[root@client.com]# nc server.com 2222
hello

// 서버에서 띄운 shell에 보면 클라이언트에서 보낸 hello 문자열이 찍혀 있음
[root@server.com]# nc -l localhost 2222
hello

[파일전송]
// 서버에서 2222 포트로 listen. 넘어온 데이터는 ./recv.dat 로 저장
[root@server.com]# nc -l localhost 2222 > ./recv.dat

// 클라이언트에서 파일을 읽어 서버로 전송
[root@client.com]# cat ./test.txt | nc server.com 2222

// 서버에서 전송받은 데이터를 recv.dat 에 기록하고 nc 프로세스는 종료됨
// recv.dat 파일을 열어보면 클라이언트에서 전송한 test.txt 파일의 내용이 들어있음을 확인 가능

-l 옵션으로 listening 하는 서버로 실행했을 때, 클라이언트가 접속해서 데이터를 보내고 종료되면 서버도 함께 종료됨.
종료되지 않고 계속 떠 있게 하려면 -k 옵션을 붙여주면 됨.
// 서버에서 2222 포트로 listen. -k 옵션이 함께 있으므로 클라이언트가 접속을 종료해도 서버는 안죽음.
[root@server.com]# nc -k -l localhost 2222

// 클라이언트에서 접속해서 hello 문자열을 보내고 ctrl + C로 종료
[root@client.com]# nc server.com 2222
hello
^C

// 그래도 서버는 살아있음
[root@server.com]# nc -k -l localhost 2222
hello

timeout 설정은 -w 옵션.
// connection timeout 1초 설정
[root@client.com]# nc -w 1 server.com 2222

아래는 nc의 옵션 리스트

-4: IPv4
-6: IPv6
-D: socket 디버깅 가능
-d: STDIN 입력을 읽어들이지 않음
-h: help
-i: send/recv, multiple port 연결 사이의 interval 지정.
-k: listening 모드로 실행되었을 때 연결이 완료되더라도 프로세스가 종료되지 않도록 하는 옵션. -l 옵션과 함께 사용되지 않으면 에러.
-l: listening 모드로 실행. -p, -s, -z 옵션과 함께 사용되면 에러. -w 옵션은 무시됨.
-n: hostname을 ip로만 지정.
-p: source port 지정. -l 옵션과 함께 사용되면 에러.
-r: source/destination port를 범위로 지정했을 때 랜덤한 순서로 연결시도.
-S: RFC 2385 TCP MD5 signature 옵션.
-s: 패킷을 전송할 IP 지정. -l 옵션과 함께 사용되면 에러.
-T: 연결에 ToS 지정.
-C: CRLF line-ending 전송.
-t: netcat을 telnet session으로 사용가능 하게.
-U: Unix Domain Socket을 사용하도록 지정.
-u: UDP 사용.
-v: verbose output.
-w: connection/stdin timeout 지정. -l 옵션과 함께 사용하면 무시됨.
-X: proxy version 지정.
-x: proxy server의 hostname, port 지정.

-z: 아무 데이터도 전송하지 않고 listening daemong만 스캔. -l 옵션과 함께 사용하면 에러.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다