WSL 자동 종료 방지하기 – 또다른 시도

이전에 WSL이 자동종료되는 문제를 방지하기 위해서 여러가지 시도를 했었고 블로그 포스팅도 했었습니다. 이전 방법으로 문제가 해결되었다고 생각했지만 시간이 오래 지나고 나서 동일한 문제가 발생하기 시자했습니다.

또다른 해결책입니다. 아직까지 괜찮지만 또 문제가 생기면 다른 방법도 포스팅하겠습니다.

WSL 자동 종료 문제의 원인

WSL2는 유휴 상태(idle)일 때 자동으로 종료되어 리소스를 절약하도록 설계되어 있습니다. nginx 같은 백그라운드 서비스가 실행 중이라도 인터랙티브 프로세스가 없으면 종료될 수 있습니다.

.wslconfig로 유휴 시간 설정하기

Windows 사용자 프로필 디렉토리(%UserProfile%)에 .wslconfig 파일을 생성하고 다음과 같이 설정합니다.

[wsl2]
vmIdleTimeout=-1

이 설정을 추가하면 VM이 유휴 상태에서 종료되지 않도록 할 수 있습니다. 변경 후에는 PowerShell에서 wsl --shutdown을 실행한 다음 WSL을 재시작해주세요.

참고로 이 설정은 모든 WSL2 배포에 적용되며, 기본값은 60000ms(60초)입니다.

Keep Alive 프로세스 실행하기

WSL 내에서 nohup sleep infinity & 또는 dbus-launch true & 같은 무한 루프 스크립트를 백그라운드로 실행하여 인터랙티브 프로세스로 유지할 수 있습니다.

이를 .bashrc에 추가하거나 systemd 서비스로 등록하면 nginx가 종료 후에도 WSL이 살아있게 됩니다. Docker나 cron 같은 다른 데몬도 유사하게 도움이 될 수 있습니다.

nginx 서비스 자동 시작 설정하기

/etc/wsl.conf의 [boot] 섹션에 다음과 같이 설정해주세요:

[boot]
command=service nginx start

WSL 시작 시 nginx를 자동 실행하게 됩니다.

만약 systemd가 활성화된 경우에는 [boot] 섹션에 systemd=true를 추가하고 systemctl enable nginx로 영구 설정하시면 됩니다. 변경 후에는 wsl --shutdown으로 재시작해주세요.

이러한 방법들을 활용면 WSL 환경에서 nginx를 안정적으로 자동 실행할 수 있습니다.

답글 남기기