← 문제 라이브러리
Linux 중급 LINUX-005 · 20분

새 서버에서 systemd 서비스가 200/CHDIR로 재시작을 반복

트래픽 증가에 대비해 Ansible로 API 서버를 한 대 새로 만들었습니다.

검수된 문제무료
시나리오

트래픽 증가에 대비해 Ansible로 API 서버를 한 대 새로 만들었습니다. 프로비저닝은 오류 없이 끝났는데, 서버를 로드밸런서에 붙이기 직전에 확인해 보니 api 서비스가 몇 초마다 재시작을 반복하고 있습니다. 같은 역할로 만든 기존 서버들은 정상입니다. 이 팀은 배포 도구가 /srv/api/releases 아래에 버전별 디렉터리를 만들고 current 심볼릭 링크를 바꾸는 방식으로 배포합니다. 담당자는 실행 파일이 깨졌다며 패키지를 다시 설치하려고 합니다.

단서
systemctl status api
● api.service - API server
     Active: activating (auto-restart) (Result: exit-code)
    Process: 4410 ExecStart=/srv/api/current/bin/api (code=exited, status=200/CHDIR)
journalctl -u api -n 2
api.service: Changing to the requested working directory failed: No such file or directory
api.service: Failed at step CHDIR spawning /srv/api/current/bin/api: No such file or directory
unit 파일 · 디렉터리
[Service]
User=api
WorkingDirectory=/srv/api/current
ExecStart=/srv/api/current/bin/api
Restart=always

$ ls -la /srv/api
drwxr-xr-x 2 api api 4096 Sep 27 10:02 releases

과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.

먼저 볼 것
  • systemd 종료 코드(200/CHDIR)가 가리키는 단계
  • 프로비저닝과 첫 배포의 경계
점검 체크리스트
  1. systemctl status 의 status=숫자/이름
  2. journalctl -u 로 실패한 단계(step) 확인
  3. unit 파일의 WorkingDirectory·ExecStart 경로가 실제로 있는지