리눅스

 

WSL2 자체를 백그라운드로 자동 실행하는 방법

개요

WSL2(Ubuntu 등)는 기본적으로 터미널이 열릴 때만 활성화됩니다. 그러나 Redis, PostgreSQL, Nginx 등 서버를 항상 켜 두려면 WSL을 백그라운드에서 자동으로 실행시키는 설정이 필요합니다.

 

 

✅ 1️⃣ Windows 부팅 시 WSL 자동 실행 (작업 스케줄러 이용)

 

 

자동화 전에 수동으로 한 번 확인해보세요:

$wslName = "Ubuntu" Start-Process wsl.exe -ArgumentList "-d $wslName -u root bash -c 'service redis-server start'" -WindowStyle Hidden

 

그다음 상태 확인:

wsl -d Ubuntu -u root bash -c "service redis-server status" 

→ active (running)이면 완벽히 성공입니

 

Windows에서 PowerShell 실행 정책 허용
관리자 권한으로 실행:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

 

또는 스케줄러에서 실행할 때 아래 옵션을 넣어야 합니다:

-ExecutionPolicy Bypass

 

 

PowerShell 스크립트 파일 만들기

파일 경로 예시

C:\Scripts\wsl_redis_autostart.ps1

파일 내용 예시

# WSL 내부에서 Redis 서버를 자동 실행
$wslName = "Ubuntu"
Start-Process wsl.exe -ArgumentList "-d $wslName -u root bash -c 'service redis-server start'" -WindowStyle Hidden

bash -c '...' 구문에서는 **작은따옴표(')**를 사용해야 PowerShell과 WSL 간 인용 오류를 방지할 수 있습니다.

 

3️⃣ 여러 서비스 자동 실행 예시

$wslName = "Ubuntu"
Start-Process wsl.exe -ArgumentList "-d $wslName -u root bash -c 'service redis-server start'" -WindowStyle Hidden
Start-Process wsl.exe -ArgumentList "-d $wslName -u root bash -c 'service postgresql start'" -WindowStyle Hidden
Start-Process wsl.exe -ArgumentList "-d $wslName -u root bash -c 'service nginx start'" -WindowStyle Hidden

 

 

 

 

 

① 작업 스케줄러 열기

  • Win + R → taskschd.msc 입력 → Enter

② 새 작업 만들기

  • 오른쪽 메뉴 → “작업 만들기(Create Task)” 클릭

③ [일반] 탭 설정

  • 이름: WSL Auto Start

  • 가장 높은 권한으로 실행 체크

④ [트리거] 탭 설정

  • “시스템 시작 시” 선택 → 확인

⑤ [동작] 탭 설정

  • 새 동작 추가 → 프로그램/스크립트에 다음 입력:

    wsl -d Ubuntu -u root bash -c "service redis-server start"
    

    또는 systemd가 켜져 있다면:

    wsl -d Ubuntu -u root bash -c "systemctl start redis-server"
    

⑥ [조건] 탭에서

  • “전원이 연결되어 있을 때만 실행” 옵션 해제 (선택)

⑦ 확인 후 저장

→ Windows 부팅 시 WSL이 자동으로 실행되며 Redis가 백그라운드에서 구동됩니다.

 

 

✅ 2️⃣ WSL을 콘솔 없이 백그라운드 실행시키기

터미널 창 없이 조용히 WSL을 띄우려면 PowerShell에서:

Start-Process wsl.exe -ArgumentList "-d Ubuntu" -WindowStyle Hidden

이를 작업 스케줄러에 등록하면 콘솔 없이 완전한 백그라운드로 실행됩니다.

 

 

✅ 3️⃣ systemd로 자동 실행 명령 추가

Ubuntu 내부 설정 파일(/etc/wsl.conf) 수정:

sudo nano /etc/wsl.conf

내용 추가:

[boot]
systemd=true
command="service redis-server start"

이후 WSL 재시작:

wsl --shutdown
wsl

이제 WSL이 실행될 때마다 Redis도 자동으로 시작됩니다.

 

 

✅ 4️⃣ PowerShell 스크립트 방식

C:\Scripts\wsl_redis_autostart.ps1 파일을 생성:

$wslName = "Ubuntu"
Start-Process wsl.exe -ArgumentList "-d $wslName -u root bash -c 'service redis-server start'" -WindowStyle Hidden

작업 스케줄러에서 Windows 시작 시 이 스크립트를 실행하도록 설정하면 자동 구동됩니다.

 

 

✅ 5️⃣ 상태 확인

WSL 실행 중인지 확인:

wsl --list --running

Redis 상태 확인:

wsl -d Ubuntu redis-cli ping

PONG이면 정상 작동 ✅

 

정리

목적방법

Redis만 자동 실행service redis-server start 작업 스케줄러 등록

WSL 전체 자동 실행Start-Process wsl.exe -WindowStyle Hidden 등록

완전 자동 (Redis 포함)PowerShell + 작업 스케줄러 조합

 

 

 

추천 조합: 운영 환경이라면 systemd 활성화 + 작업 스케줄러 자동 실행을 함께 설정하는 것이 가장 안정적입니다.

 

about author

PHRASE

Level 60  라이트

어린이는 어른의 아버지 -윌리엄 워즈워스

댓글 ( 0)

댓글 남기기

작성
  •    
  •    
  •  

리눅스 목록    more