배포판이 달라도 같은 방식으로 다루는 운영 항목을 모았다. 커널 · systemd · 셸 · 파일시스템 · NetworkManager · chrony · PAM 은 RHEL 계열과 Ubuntu 가 같은 구현을 쓴다. 패키지 설치 명령(dnf / apt)과 설정 파일의 세부 위치만 다르므로, 각 문서에서 그 차이만 따로 적는다.
배포판 고유 항목은 Redhat Linux · Ubuntu 에 있다.
- 파일 · 프로세스 · 검색에 쓰는 기본 명령.
- 운영 중 반복해 찾게 되는 짧은 명령과 판단 기준을 주제별로 모았다.
- 마지막 재부팅 시각, system CPU 비율, 강제 재부팅, 네트워크 재시작처럼 한 줄로 끝나는 확인을 모았다.
- 후행 슬래시 하나로 원본 디렉터리를 건드리게 되는 경우와 끊어진 링크를 찾는 방법이다.
- 기본값 · 옵션 · 순서 무관 인자를 받는 방법.
- 실패하면 멈추게 만들고 실패해도 되는 줄만 따로 표시한다.
date 포맷과 find 시간 조건으로 보존 기간을 관리한다.
- shebang 이 가리키는 인터프리터나 줄 끝 문자가 원인인 경우.
- UID 를 바꾸고 기존 파일의 소유자까지 함께 옮긴다.
- 새로 만들어지는 파일과 디렉터리의 권한을 정한다.
- 실행 비트 자리에 s · t 가 보일 때의 의미와 세 특수 비트를 걸고 푸는 방법이다.
- shadow 의 만료 속성과 pam_faillock 의 실패 잠금을 갈라 보고 각각 확인·변경한다.
- passwd -l · passwd -d · PermitRootLogin 세 가지가 서로 다른 일을 한다는 점을 정리한다.
- 리졸버 · 동적 DNS · 서비스 디스커버리 · AD 전용 옵션.
hostnamectl 과 /etc/hosts.
- 시간 동기화. RHEL 8 · Ubuntu 이후 기본.
- 지난 버전.
ntpd 를 쓰던 RHEL 7 이하 기록.
- 기동 직후 step 을 허용하고 질의 간격을 좁혀 큰 시각 차이를 빨리 좁히는 설정이다.
- UDP 123 이라 TCP 확인 방법이 통하지 않는다.
- systemd target 으로 부팅 모드를 바꾼다.
- 단일 사용자 · 응급 모드 진입과 root 암호 초기화.
- THP 를 끈다. 데이터베이스 · 하둡 계열 요구사항.
nofile · nproc 한도 조정. 데이터 플랫폼 설치 전 필수.
- ulimit 을 올려도 풀리지 않는 이유와 inotify watch · instance 한계를 조정하는 방법이다.
- 빅데이터·컨테이너 요구사항에 자주 나오는 threads-max 와 max_map_count 를 영구 적용한다.
- Initialization Failed 로 rngd 가 뜨지 않을 때 난수원을 확인하고 유닛을 고치는 순서다.
- 파일은 있는데 cannot open shared object file 로 죽을 때 탐색 경로를 등록하고 캐시를 갱신한다.
- 배포판 패키지와 소스 빌드로 Python 을 올린다.
- tarball 로 설치한 도구를 systemd 에 맡긴다.
- systemd 가 재시작 시도조차 하지 않을 때의 잠금 해제와 한계값·재시작 정책 조정이다.
fdisk · parted 로 파티션을 나눈다.
- PV · VG · LV 세 단계로 볼륨을 만들고 파일시스템을 올린 뒤 나중에 늘리는 절차다.
- 부팅 가능한 디스크 통째 복제와 파일 단위 복사를 목적에 따라 가르고 속도에 영향을 주는 것을 짚는다.
- 커널 인식 · 파티션 · LVM · 파일시스템 순으로 늘린다.
- 부팅 후 LV 를 찾지 못해 서비스가 뜨지 않을 때.
- 여섯 칸의 뜻과
umount 가 busy 로 막힐 때.
- 복제한 디스크나 바인드 마운트로 UUID 가 겹치는 경우.
- 데이터 디스크 하나가 빠져
local-fs.target 이 깨졌을 때.
- 지워졌지만 열려 있는 파일과 systemd 저널처럼 du 가 세지 않는 자리를 찾아낸다.
- 무엇이 쌓이고 있는지 먼저 찾고, 당장 비운 뒤 다시 차지 않게 보존 정책을 잡는다.
- 셸과 마운트 옵션 파서 두 곳에서 깨지는 이유와 자격 증명 파일로 넘기는 방법이다.
- 서버 설정과 마운트는 스토리지 트리로 옮겼다.
- 널 구분자를 기본으로 조건에 맞는 파일만 모으거나 디렉터리 구조를 유지해 옮기는 형태다.
- 무해한 오류와 실제로 전송되지 않는 파일을 가른다.
- 비밀번호 없이 배치로 올리고 실패를 종료 코드로 받는다.
- -np 가 형제 디렉터리를 막지 못하는 이유와 경로를 직접 제한해 받는 방법이다.
split 으로 나누고 cat 으로 이어 붙인다.
- 리눅스와 윈도우 양쪽에서 해시를 뽑아 대조하는 방법과 알고리즘 선택 기준이다.
- RHEL 계열
nmcli 고정 IP. Ubuntu 는 Netplan.
- 클라이언트 쪽
http_proxy 환경 변수와 패키지 관리자 프록시.
- Squid · microsocks 프록시 서버.
virtual_server 의 역할, 우선순위, 장애 전환 동작.
- 서비스가 죽어도 VIP 가 넘어가지 않는 문제와, 넘어갔는데 접속이 안 되는 ARP 문제를 나눠 본다.
- 손으로 고친 네임서버가 되돌아갈 때 손댈 세 자리와 그 확인 방법이다.
- nameserver 127.0.0.53 이 보일 때 실제 상위 DNS 를 확인하고 바꾸는 방법이다.
- 커널이 임시 포트로 서비스 포트를 잡아 데몬이 뜨지 않는 문제를 예약 목록으로 막는다.
- 호스트 키를 읽지 못해 sshd 가 뜨지 않을 때의 생성·권한·반영과 클론 VM 에서의 주의다.
~/.ssh/config 의 IdentityFile.
- 인증 전 배너 · 로그인 후 MOTD 를 가른다.
- GUI 설치 마법사를 작업용 PC 화면으로 끌어온다.
- 윈도우 원격 데스크톱 클라이언트로 리눅스에 붙는다.
- 무엇이 세션을 끊는지 가르고 클라이언트·서버 양쪽에서 keepalive 를 거는 방법이다.
- 클라이언트 메시지로 네트워크 · 서버 · 장비 정책을 가른다.
- 사설 CA 나 가로채는 프록시 뒤에서 Curl error (60) 이 날 때 CA 를 신뢰시키는 방법과 검증을 끄는 옵션이다.
- OpenSSL 로 CA 와 서버 인증서를 만든다.
lscpu · dmidecode · lsblk.
- 컨트롤러를 먼저 알아내고 제조사 도구로 볼륨·디스크 상태를 읽어 감시에 붙인다.
- BBU relearn 알림이 왔을 때 무엇을 하고, 성능 저하가 재학습 때문인지 가르는 방법이다.
cpulimit · cgroup 으로 CPU 사용을 묶는다.
- NVIDIA 드라이버 설치 전 오픈소스 드라이버를 막는다.
- 드라이버 · 툴킷 · 런타임 세 버전을 구분하고 nvidia-smi 의 CUDA Version 을 잘못 읽지 않게 한다.
- 패키지가 없는 RHEL 9 계열에서 VA-API 스택을 소스로 빌드해 내장 GPU 트랜스코딩을 켠다.
ss · lsof 로 수신 대기 포트를 찾는다.
- 도구를 설치할 수 없는 서버에서 누적값을 두 번 읽어 네트워크·디스크 사용량을 재는 방법이다.
- 좀비가 자원을 먹지 않는 이유와 수가 늘 때의 신호, top 의 wa 값을 읽는 법이다.
- core_pattern 으로 덤프 위치를 찾고 gdb 로 열어 어느 실행 파일이 죽었는지 확인한다.
- 사고 뒤에 확인하려면 미리 기록하도록 설정해 둬야 한다.