Linux 시스템 관리 - 서비스, 메모리, 로그 관리
Linux 시스템 관리
Linux 서버 운영에 필요한 핵심적인 시스템 관리 내용을 정리했습니다.
Linux 배포판 종류
- RHEL 기반: Amazon Linux, CentOS, Fedora
- Debian 기반: Ubuntu, Debian
서비스 등록 및 관리
서비스로 등록하기
JAR 파일을 시스템 서비스로 등록하는 방법입니다:
# 심볼릭 링크 생성 (전체 경로 필수)
sudo ln -s /var/myapp/myapp.jar /etc/init.d/myapp
# 서비스 시작
service myapp start
# 서비스 상태 확인
service myapp status
부팅 시 자동 시작
재부팅 후 앱이 시작되지 않는 경우:
# 서비스 목록 확인
chkconfig --list
# 자동 시작 활성화
sudo chkconfig nginx on
Run Level
0 Halt
1 Single-User mode
2 Multi-user mode console logins only (without networking)
3 Multi-User mode, console logins only
4 Not used/User-definable
5 Multi-User mode, with display manager as well as console logins (X11)
6 Reboot
JAR VM 옵션 설정
- JAR 파일과 같은 폴더에
<app-name>.conf파일 생성 - VM 옵션 입력:
export JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
Systemctl 서비스 관리
서비스 파일 생성
sudo vi /etc/systemd/system/jupyter.service
jupyter.service:
[Unit]
Description=Jupyter Notebook Server
[Service]
Type=simple
User=ec2-user
ExecStart=/usr/bin/sudo ~/miniconda3/bin/jupyter notebook
[Install]
WantedBy=multi-user.target
서비스 관리 명령어
# 설정 변경 후 reload
sudo systemctl daemon-reload
# 서비스 활성화 (부팅 시 자동 시작)
sudo systemctl enable jupyter
# 서비스 시작
sudo systemctl start jupyter
# 상태 확인
sudo systemctl status jupyter
# 서비스 목록
systemctl --type=service
로그 확인
# 서비스 로그 보기
journalctl -u service-name
# 마지막 100줄만 보기
journalctl --unit=my.service -n 100 --no-pager
가상 메모리 (Swap) 설정
현재 Swap 확인
swapon -s
swapon --show
free -m
디스크 용량 확인
df -h
Swap 끄기
sudo swapoff -a
Amazon Linux에서 4GB Swap 생성
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=4048
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1
# 재부팅 후에도 유지
sudo echo "/var/swap.1 swap swap defaults 0 0" >> /etc/fstab
일반 Linux에서 Swap 생성
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Note:
fallocate는 Amazon Linux에서 작동하지 않을 수 있습니다.
프로세스별 메모리 확인
ps -o pid,user,%mem,command ax | sort -b -k3 -r
로그 로테이션 (logrotate)
logrotate는 하루에 한 번 cron으로 실행되어 로그 파일을 관리합니다.
설정 파일 위치
/etc/logrotate.conf
/etc/logrotate.d/*.conf <- 여기에 설정 추가
설정 예시
/var/log/apache2/* {
weekly
rotate 3
size 10M
compress
delaycompress
}
주요 옵션
| 옵션 | 설명 |
|---|---|
weekly |
주간 로테이션 |
daily |
일간 로테이션 |
monthly |
월간 로테이션 |
rotate 3 |
3개의 로테이션 로그만 유지 |
size=10M |
10MB 이상일 때만 로테이션 |
compress |
gzip 압축 |
delaycompress |
다음 로테이션까지 압축 지연 |
참고: logrotate 가이드
패키지 설치
EPEL Repository 추가 (CentOS)
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Java 8 설치
sudo yum install java-1.8.0-openjdk-devel
# 또는
sudo yum remove java-1.7.0-openjdk.x86_64 -y
sudo yum install java-1.8.0-openjdk-devel.x86_64 -y
# Java 버전 선택
alternatives --config java
java -version
MySQL 설치
Amazon Linux에서 설치
sudo yum install mysql-server
sudo /sbin/chkconfig --levels 235 mysqld on
sudo service mysqld start
sudo mysql_secure_installation # 초기 비밀번호 없음
MySQL 제거
# 패키지 제거
sudo yum remove mysql mysql-server mysql-common mysql-client
# 설치된 패키지 확인
rpm -qa | grep -i mysql
# 패키지 제거
rpm -e mysql libmysqlclient15-5.0.94-0.2.4.1
# 데이터 디렉토리 완전 삭제
cd /var/lib
sudo rm -rf mysql
MD5 체크섬 확인
파일 무결성 확인:
md5sum mysql57-community-release-el7-9.noarch.rpm
Comments