Recent Posts
Tags
- DB
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 코딩테스트
- 인공지능기초다지기
- 네이버부스트캠프
- python
- SQL
- 기초다지기
- 부스트코스
- 정보처리기사
- 데이터베이스
- 코딩테스트 python
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 빅분기
- unsub
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- r
- 이기적
- PY4E
- 프로그래머스
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- 파이썬
- 빅데이터분석기사
- boostcoures
- Django
- 오라클
- Ai
- boostcourse
- Oracle
- AI 플랫폼을 활용한 데이터 분석
- Today
- Total
매일공부
[Linux] SSH 연결이 끊겨도 계속 도는 모니터링 — nohup / screen 본문
배경
메모리 이슈를 추적하려고 서버에 모니터링 스크립트를 띄워두려는데, 그날따라 SSH 연결이 계속 끊겼다. 그냥 터미널에 명령어를 띄워두면 되는 건지 궁금해서 물어봤다.
Q. SSH에 연결해서 오늘 계속 띄워두면 되는 건가?
맞는 방향이지만, SSH 연결이 자주 끊기는 상황이라면 그냥 터미널에 띄워두면 안 된다. SSH 세션이 끊기는 순간 그 안에서 돌던 프로세스도 같이 죽는다. nohup이나 screen/tmux로 백그라운드에 분리해서 돌려야 안전하다.
방법 1 — nohup
nohup bash -c 'while true; do
echo "=== $(date "+%Y-%m-%d %H:%M:%S") ===" >> /tmp/mem_track.log
free -h >> /tmp/mem_track.log
docker stats --no-stream >> /tmp/mem_track.log
echo "" >> /tmp/mem_track.log
sleep 1800
done' > /dev/null 2>&1 &
이렇게 하면:
- SSH 세션이 끊겨도 nohup 덕분에 백그라운드에서 계속 실행된다
- 30분(1800초)마다 전체 메모리 상태 + 컨테이너별 메모리 사용량을 로그 파일에 기록한다
- 나중에 아무 때나 SSH로 다시 들어가서 로그 파일을 확인하면 시간대별 추이를 볼 수 있다
실행 후 확인:
# 잘 돌고 있는지 확인
ps aux | grep "while true" | grep -v grep
# 로그 실시간으로 보기
tail -f /tmp/mem_track.log
중지하고 싶을 때:
ps aux | grep "while true"
kill [해당 PID]
방법 2 — screen (설치되어 있으면 더 편함)
나중에 다시 접속해서 화면을 그대로 들여다보고 싶으면 screen이 더 편하다.
screen -S memcheck
# 화면 안에서
while true; do echo "=== $(date) ==="; free -h; docker stats --no-stream; sleep 1800; done >> /tmp/mem_track.log
# Ctrl+A 누르고 D 눌러서 detach (세션은 백그라운드에서 계속 돔)
# 나중에 다시 보려면:
screen -r memcheck
Q. 이거 어디에 띄우는 건데, 터미널이 아니야?
SSH 터미널 맞다. 다른 어딘가에 새로 띄우는 게 아니다.
- 지금처럼 SSH로 서버에 접속한 그 터미널 창에 그대로 명령어를 입력하는 것
- 다만 명령어 앞에 nohup ... &를 붙이면, 그 작업이 터미널 창(SSH 세션)과 연결이 끊겨도 서버 안에서 계속 돌아가도록 **분리(백그라운드)**시키는 것
비유하면:
- 그냥 명령어만 치면 → SSH 연결(전화 통화)이 끊기는 순간 그 안에서 하던 작업도 같이 끊긴다
- nohup ... &를 붙이면 → 전화(SSH)는 끊겨도, 서버 안에서는 그 작업이 계속 혼자 돌아간다
정리하면 순서는 이렇다:
- 지금 쓰는 SSH 터미널(ssh 계정@서버주소로 접속한 그 창)에
- nohup bash -c '...' & 명령어를 그대로 붙여넣고 엔터
- 그다음엔 터미널 창을 닫아도, SSH 연결이 또 끊겨도 상관없이 서버 안에서 계속 기록이 쌓인다
- 나중에 다시 SSH로 접속해서 로그 파일을 확인하면 그동안 쌓인 기록을 볼 수 있다
즉 새로운 프로그램이나 다른 화면을 여는 게 아니라, 지금 쓰던 그 SSH 터미널에 명령어 하나 입력하는 것으로 끝난다.
'IT > 작업기록' 카테고리의 다른 글
| [장애 대응 기록] Synology NAS 공유폴더 접속 불가 사태 — 원인 분석과 재발 방지 (2026.07.30) (0) | 2026.07.30 |
|---|---|
| [NAS] SSH 접속 → 컨테이너 진입 → 안 쓰는 프로세스 정리, 명령어 모음 (0) | 2026.07.30 |
| [Git] NAS에서 GitHub 조직 저장소로 push하기 — Deploy Key로 저장소별 분리 (0) | 2026.07.30 |
| [메일 서버] POP3로 해야 하나 SMTP로 해야 하나 — Mailplug 자동 차단 대응기 (0) | 2026.07.30 |
| [Claude Code] VS Code에서 "credit balance" 에러 — 원인은 로그인 방식이었다 (0) | 2026.07.28 |
Comments