# Linux · systemd — what to reach for first ## 서비스 상태 ```bash systemctl status # 상태 · Main PID · CGroup · 최근 로그 systemctl is-active # 한 단어. 스크립트용 systemctl cat # 유닛 파일에 적힌 것 systemctl show # 기본값까지 합쳐 실제 적용되는 것 ``` `cat` 과 `show` 는 다르다. `Restart=on-failure` 만 적혀 있어도 `show` 는 `RestartUSec`·`StartLimitBurst` 같은 기본값을 함께 보여 준다. ## 로그 ```bash journalctl -u -n 50 # 최근 50줄 journalctl -u -e # 끝으로 (페이저) journalctl -u -f # 실시간 journalctl -u -p err # 에러만 journalctl -u --since '1 hour ago' journalctl -u -o json # 메타데이터까지 ``` 긴 줄이 접히면 `less -S` 로 좌우 스크롤한다. **nginx 에러 로그는 2048바이트에서 잘린다**(`NGX_MAX_ERROR_STR`). 저널 포맷을 바꿔도 안 늘어난다 — 기록 자체가 잘렸기 때문이다. access 로그에는 제한이 없으므로 그쪽을 본다. ## 프로세스 · 포트 · 자원 ```bash ps aux | grep ps -eo pid,ppid,etimes,lstart,args | grep # 얼마나 오래 떠 있나 ss -lntp # 듣고 있는 TCP 포트 + 프로세스 lsof -i :8080 free -m top / htop ``` ## cgroup ```bash systemd-cgls /system.slice/.service cat /sys/fs/cgroup/system.slice/.service/memory.current cat /sys/fs/cgroup/system.slice/.service/pids.current ``` `systemctl status` 의 `Memory:` `Tasks:` `CPU:` 가 여기서 읽은 값이다. ## nginx ```bash nginx -t && systemctl reload nginx # -t 를 통과할 때만 reload ps -eo pid,lstart,args | grep 'nginx: worker' # reload 판정은 워커 PID 로 ``` reload 하면 마스터는 유지되고 워커만 새로 뜬다. 로그 문구가 아니라 이걸 본다.