ตั้งค่าให้ WSL รัน background และ Auto Run

เราต้องทำให้ WSL ทำงานตลอดเวลา ( background ) และ systemd ทำงานเอง ( Auto Run ) เมื่อ Windows เริ่มต้นใหม่

เทคนิคพิเศษ ! ตั้งค่าให้ Linux รันตลอดเวลา ( bandground ) แม้จะปิดหน้าต่าง Linux Terminal

ปัญหาสำคัญในการรัน systemd บน WSL คือ  เมื่อลูกค้าปิดหน้าต่าง Linux Terminal แล้วซักพัก Linux ตัวนั้นก็จะหยุดทำงาน ( Stopped )

นั่นทำให้ systemd หยุดทำงานไปด้วย

ลูกค้าลองปิดหน้าต่าง Linux แล้วรอซักครู่นะพบว่า Linux หยุด Stopped เอง

2024-04-07_12-43-50.jpg


Trick พิเศษ !

แอดมินค้นหาวิธีแก้ไม่ให้ Linux ( WSL ) หยุดการทำงาน ( Stopped ) เอง  ได้โดยใช้เทคนิคการสั่งรัน tmux ค้างไว้ ดังนี้

เปิดหน้าต่าง Linux ที่ลูกค้าใช้งานขึ้นมาซักตัว

1. ติดตั้ง tmux ก่อน โดยพิมพ์คำสั่งนี้

$ sudo apt install tmux

2. สร้าง tmux ไว้ 1 session ( เพื่อให้ tmux ทำงาน background ) โดยพิมพ์คำสั่งนี้

$ nano ~/.bashrc

แล้วพิมพ์ 3 บรรทัดนี้ต่อท้ายล่างสุดของไฟล์ .bashrc

if ! tmux ls > /dev/null 2>&1; then
        tmux new -d > /dev/null 2>&1
fi

2024-04-07_14-25-20.jpg

แล้วกดปุ่ม Ctrl+X และ Y และ Enter เพื่อ save ไฟล์

3. เปิดหน้าต่าง Linux เพิ่มขึ้นมาใหม่  แล้วพิมพ์ดูว่า tmux ถูกสร้าง session ไว้แล้วยัง

$ tmux ls

2024-04-07_14-29-53.jpg

จะพบว่า tmux ถูกสร้างให้รัน background อย่างน้อย 1 session ทุกครั้งที่เราเปิดรัน Linux

วิธีนี้จะช่วยให้ Linux ไม่หยุดทำงาน ( Stopped ) เมื่อเราปิดหน้าต่าง Linux Terminal

4. ลูกค้าลองปิดหน้าต่าง Linux Terminal แล้วรอซักพัก  แล้วพิมพ์คำสั่งนี้ใน Windowns Terminal

2024-04-07_14-32-13.jpg

ก็จะพบว่า Linux จะ Running ตลอดไป  แม้เราจะปิดหน้าต่าง Linux Terminal แล้วก็ตาม

นั่นคือ application & service ทุกๆตัวที่รันบน systemd ก็จะทำงาน background ตลอดไปด้วยเช่นกัน

 

 

 

ฝากสนับสนุนบริการ www.Limitrack.com เพื่อให้พวกเราได้นำสิ่งดีๆมามอบให้ลูกค้าครับ

เทคนิคพิเศษ ! ตั้งค่าให้ wsl รันเองอัตโนมัติ ( auto start ) เมื่อ Windows เริ่มต้นใหม่


[ ก่อนจะทำตามหน้านี้ ]

ลูกค้าต้องทำขั้นตอนนี้ก่อน > เทคนิคพิเศษ ! ตั้งค่าให้ Linux รันตลอดเวลา ( bandground ) แม้จะปิดหน้าต่าง Linux Terminal


ตั้งค่าให้ wsl รันเองอัตโนมัติ ( auto start ) เมื่อ Windows เริ่มต้นใหม่

หากเราต้องการให้ systemd ( ใน WSL ) รันพร้อมๆกันกับ Windows ก็ทำได้เช่นกัน  โดยสร้าง Task Schedule เพื่อให้รัน Linux ตอนที่ Windows เริ่มใหม่ ดังนี้

1. เปิดโปรแกรม Task Schedule

2024-04-07_12-50-08.jpg

2. กด Create Task เพื่อสร้าง Job ใหม่

2024-04-07_15-22-39.jpg

3. แถบ General ทำตามภาพนี้

2024-04-07_15-24-14.jpg

4. แถบ Triggers กดปุ่ม New

2024-04-07_15-28-05.jpg

5. แถบ Action กดปุ่ม New แล้วพิมพ์คำสั่งรัน Linux distro ที่ต้องการนี้ลงไป

C:\Windows\system32\wsl.exe -d Ubuntu-22.04

ต้องแยกระหว่าง wsl.exe และ -d Ubuntu-22.04 ไว้คนละช่อง ดังภาพ

2024-04-07_15-29-44.jpg

6. หน้า Conditions เอาติ๊กถูกออกให้หมด

2024-04-07_15-31-08.jpg

7. หน้า Settings ตั้งค่าตามภาพนี้

2024-04-07_15-32-36.jpg

แล้วกดปุ่ม OK

8. หลังจากลูกค้า restart Windows  เมื่อเข้า Windows มาใหม่แล้วจะพบว่า Linux Ubuntu-22.04 รันเอง Auto แล้ว

2024-04-07_12-45-59.jpg

และ application & service ที่เรารันใน systemd ก็จะทำงานด้วยเช่นกัน

 

 

ฝากสนับสนุนบริการ www.Limitrack.com เพื่อให้พวกเราได้นำสิ่งดีๆมามอบให้ลูกค้าครับ