기본적으로 사용하는 Linux 계열의 서버를 사용하지 않고, 특수한 상황이기 때문에 우리는 Windows를 통해서 서비스를 운영하게 되었다.
내가 해결한 방법은 아래와 같다.
작업 스케줄러의 상태가 종료된 상태로 판단하지 않고, 재부팅시 작업 스케줄러의 트리거가 되는 OnStart 이벤트를 발생시키지 않는다.빠른시작 에 대한 설정을 해제한다.[PowerShell] 관리자 모드로 시작
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Power" -Name HiberbootEnabled -Value 0
빠른 시작 설정을 해제한 후 부팅시 자동으로 wsl을 시작할 수 있도록 작업 스케줄러를 등록해줘야 한다.[PowerShell] 관리자 모드로 시작
$taskName = "WSL Ubuntu Boot"
$user = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
Unregister-ScheduledTask `
-TaskName $taskName `
-Confirm:$false `
-ErrorAction SilentlyContinue
$action = New-ScheduledTaskAction `
-Execute "C:\Windows\System32\wsl.exe" `
-Argument '-d Ubuntu --exec /bin/sleep infinity'
$trigger = New-ScheduledTaskTrigger -AtStartup
$trigger.Delay = "PT30S"
$principal = New-ScheduledTaskPrincipal `
-UserId $user `
-LogonType S4U `
-RunLevel Highest
$settings = New-ScheduledTaskSettingsSet `
-StartWhenAvailable `
-AllowStartIfOnBatteries `
-DontStopIfGoingOnBatteries `
-ExecutionTimeLimit ([TimeSpan]::Zero) `
-RestartCount 3 `
-RestartInterval (New-TimeSpan -Minutes 1)
Register-ScheduledTask `
-TaskName $taskName `
-Action $action `
-Trigger $trigger `
-Principal $principal `
-Settings $settings `
-Force
Win+R 실행후 taskschd.msc 명령을 넣고 실행하라.코드 상단에
-Argument '-d Ubuntu --exec /bin/sleep infinity'의 경우Ubuntu대신 본인의 wsl 이름을 써야한다.
확인 방법은wsl -l -v명령을 cmd에서 실행.


wsl -l -v 명령을 실행하면 아래와 같이 상태가 Running이락 되어있다면 올바르게 동작하고 있는것이다.
재시작이 아니라 전원 끄기 후 수동으로 전원을 키는 방식으로 테스트를 진행해야한다.