서버를 다루다 보면 손에 붙는 명령어들이 있습니다. 자주 쓰는 것들을 주제별로 정리해 뒀어요.
네트워크
ifconfig # 인터페이스 정보 (net-tools 필요)
ifconfig | grep "inet " | awk '{print $2}' # IP만 추출
ss -tln # 리슨 중인 TCP 소켓 (-a 전체, -u UDP)
netstat -nltp # 리슨 상태 포트 + 프로세스
lsof -i :8080 # 특정 포트를 쓰는 프로세스
lsof -c nginx # 특정 프로세스가 여는 파일·포트
트래픽·속도 측정이 필요하면 iftop(실시간 트래픽), speedtest-cli(대역폭)를 설치해 씁니다.
프로세스
ps -ef # 전체 프로세스 (풀 포맷)
ps aux --sort -rss # 메모리(RSS) 사용량 순 정렬
pstree # 트리 형태로 보기
top # 실시간 모니터링 (Shift+M 메모리순, k로 종료)
free -h # 메모리 현황
kill -9 [PID] # 강제 종료
메모리 누수가 의심되면 시간에 따라 프로세스의 VSZ가 계속 커지는지 보면 힌트가 됩니다.
패키지 (apt)
apt-get update # 패키지 인덱스 갱신 (설치/업그레이드 전 필수)
apt-get install -y [패키지] # 설치
apt-get remove [패키지] # 삭제 (설정 파일은 남김)
apt-get purge [패키지] # 설정 파일까지 완전 삭제
apt-get autoremove # 불필요한 의존 패키지 정리
apt-get clean # 받은 패키지 파일 삭제로 공간 확보
압축 (tar)
tar -cvf test.tar test # 묶기
tar -cvzf test.tar.gz test # 묶기 + gzip 압축
tar -tvf test.tar.gz # 내용 확인
tar -xvzf test.tar.gz # 압축 해제 + 추출
옵션은 c(생성) x(추출) v(상세) f(파일명) z(gzip) j(bzip2)로 외워두면 조합이 쉽습니다.
원격 접속
ssh [user]@[host] -p [port] # 원격 접속
sftp -P [port] [user]@[host] # SSH 기반 파일 전송
sftp 세션 안에서는 get(다운로드) put(업로드), 여러 개는 mget mput, 로컬 이동은 lcd 를 씁니다.
터미널 세션 유지 (screen)
SSH가 끊겨도 작업이 이어지게 하려면 screen 을 씁니다.
screen -S work # work 세션 시작
# 작업 중 Ctrl + a, d 로 빠져나오기 (detach)
screen -ls # 세션 목록
screen -r work # 재접속
긴 빌드나 마이그레이션을 돌릴 때 특히 유용합니다. 접속이 끊겨도 세션 안에서 명령이 계속 돌거든요.