รีบูต Ubuntu บน Windows โดยไม่ต้องรีบูต Windows หรือไม่


76

เป็นไปได้ไหมที่จะรีบูทระบบย่อย Ubuntu โดยไม่ต้องรีสตาร์ทระบบของฉัน?

ฉันพยายามใช้shutdownคำสั่งหลังจากติดตั้งการอัปเดตบางอย่าง แต่ดูเหมือนจะไม่เป็นตัวเลือกที่นี่

Bash บน Windows  ต้องรีบูต  ปิดระบบ: ไม่สามารถระบบปิด

คำตอบ:


101

ปิดทุกอย่าง: Build 18917+

wsl --shutdown

ยุติ distro เฉพาะ: Windows 1903+

wsl -t <DistroName>

รุ่นเก่ากว่า

# PowerShell (admin)
Restart-Service LxssManager

# CMD (admin)
net stop LxssManager
net start LxssManager

ป้อนคำอธิบายรูปภาพที่นี่


ทำไมnetแทนที่จะscเป็นเช่นในคำตอบของ @ llinfeng
Gaia

netทำงานใน cmd (กับผู้ดูแลระบบ) เพิ่งทดสอบว่าไฟล์ bat ของฉันด้วยscไม่ทำงานใน Windows OS Build 1809
llinfeng

31

ตั้งแต่ Windows 10 เวอร์ชัน 1803 การปิดหน้าต่างเทอร์มินัล WSL ทั้งหมดจะไม่ฆ่ากระบวนการพื้นหลังเป็นค่าเริ่มต้นเว้นแต่ว่าไฟล์/var/run/reboot-requiredนั้นจะปรากฏ ไฟล์นี้จะถูกสร้างขึ้นโดยอัตโนมัติโดย apt บน Ubuntu เมื่อการอัพเดทต้องการการรีบูท แต่ถ้าคุณต้องการรีบูทระบบย่อยด้วยตนเองคุณสามารถสร้างไฟล์ได้ด้วยตัวเอง:

sudo touch /var/run/reboot-required

ฉันยังไม่ได้ทดสอบสิ่งนี้ในดิสทริบิวชันอื่น ๆ ที่มีอยู่ใน Microsoft Store ทางเลือกอื่นคือการฆ่ากระบวนการทั้งหมดด้วยตัวคุณเอง:

sudo killall -r '.*'

คุณรู้หรือไม่ว่าฉันสามารถบังคับให้รีบู๊ตที่ต้องการได้ ฉันต้องการทดสอบคำตอบเพื่อให้สามารถยอมรับได้
Louis

1
สิ่งนี้ใช้ได้สำหรับฉัน ฉันต้องsudo:sudo killall -r '.*'
F21

@Louis ฉันเห็นคุณได้รับการยอมรับแล้วว่า sudo touch /var/run/reboot-requiredแต่คุณสามารถทำ ในความเป็นจริงดูเหมือนว่าการปรากฏตัวของไฟล์ทำให้ WSL ฆ่ากระบวนการพื้นหลังทั้งหมดและปิดระบบย่อยเมื่อปิดหน้าต่างเทอร์มินัลทั้งหมดดังนั้นคุณจึงสามารถใช้วิธีนั้นได้เช่นกัน
nyuszika7h

1
killallทำงานอย่างสมบูรณ์แบบสำหรับฉัน reboot-requiredไม่จำเป็นต้องไปสัมผัส
Giovanni Bassi

23

ที่พรอมต์ PowerShell สำหรับผู้ดูแลระบบ: Restart-Service LxssManager


11
@RajeshS มันอาจจะสั้น แต่ก็ตอบคำถาม
nyuszika7h

ฉันชอบมัน. ง่ายต่อการจดจำการเติมข้อความอัตโนมัติด้วยแท็บก็เพียงพอแล้ว สนุกกับการดูว่า Windows มีรูปแบบการบริการที่ดีเพียงใดตั้งแต่ต้น
หลุยส์

2
ฉันเพิ่งได้รับมันซ้ำ ๆWARNING: Waiting for service 'LxssManager (LxssManager)' to stop...
Chris Snow

มันทำงานได้อย่างสมบูรณ์แบบ เพียงเริ่ม PowerShell ของคุณด้วยสิทธิ์ผู้ดูแลระบบก่อน
Erik Kalkoken

10

เพียงแค่ออกจากเปลือกด้วยexitและเปิดใหม่อีกครั้งดูเหมือนจะทำเคล็ดลับ

Louis@ATHENA:~$ bin/rcheck.sh
Reboot not necessary.

Louis@ATHENA:~$ bin/update.sh
[sudo] password for Louis:
The following packages will be upgraded:
  libssl1.0.0 openssl
2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libssl1.0.0 amd64 1.0.1f-1ubuntu2.21 [830 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ trusty-updates/main openssl amd64 1.0.1f-1ubuntu2.21 [489 kB]
Setting up libssl1.0.0:amd64 (1.0.1f-1ubuntu2.21) ...
Setting up openssl (1.0.1f-1ubuntu2.21) ...
Del libssl1.0.0 1.0.1f-1ubuntu2.20 [830 kB]
Del openssl 1.0.1f-1ubuntu2.20 [489 kB]

Louis@ATHENA:~$ bin/rcheck.sh
Reboot required.

Louis@ATHENA:~$ exec bash -l
Louis@ATHENA:~$ bin/rcheck.sh
Reboot required.

Louis@ATHENA:~$ exit

Louis@ATHENA:~$ bin/rcheck.sh
Reboot not necessary.
Louis@ATHENA:~$

5
สิ่งนี้ไม่ทำงานอีกต่อไป
Dakkaron

@Dakkaron - มันทำเมื่อมีการส่งคำถาม
Ramhound

1
นั่นเป็นเหตุผลที่ฉันพูดว่า "อีกต่อไป" ข้อมูลที่โพสต์นี้ล้าสมัยเป็นสิ่งสำคัญดังนั้นคนอื่น ๆ ที่มีปัญหาในตอนนี้ไม่จำเป็นต้องลองเพื่อค้นหาว่ามันใช้งานไม่ได้ ฉันไม่แน่ใจว่าวิธีการจัดการสิ่งต่าง ๆ ที่นี่ แต่ใน Stackoverflow คำตอบไม่เพียง แต่ควรช่วยผู้ที่ถามคำถามเท่านั้น แต่ยังรวมถึงผู้อื่นทั้งหมดที่กำลังมองหาวิธีแก้ไขปัญหาเดียวกัน
Dakkaron

Windows 10 Build 17046โดยเฉพาะมันไม่ทำงานตั้งแต่ @Louis คุณต้องการแก้ไขสิ่งนี้เป็นคำตอบของคุณหรือไม่
Dakkaron

ใช้งานได้สำหรับฉันในการสร้าง 17,134.
Ian Kemp

7

เพียงเปิดหน้าต่าง cmd ในฐานะผู้ดูแลระบบและเรียกใช้คำสั่งเหล่านี้เพื่อเริ่มต้นใหม่

net stop LxssManager
net start LxssManager

1
เพิ่มบางวินาทีระหว่างสองคำสั่ง เช่นtimeout /t 3คำสั่ง (เพิ่ม 3 วินาที)
Biswapriyo

2
คำตอบนี้ซ้ำกับ samdd ตั้งแต่เดือนสิงหาคม
fixer1234

ไม่ทำงาน ... อยู่ในสถานะ "หยุด" เมื่อฉันพยายามเรียกใช้อีกครั้งฉันจะได้รับ "บริการกำลังเริ่มหรือหยุดโปรดลองอีกครั้งในภายหลัง" ... ไม่เคยเสร็จสิ้น แฮงค์เสมอหลังจากที่ฉันเรียกใช้คำสั่ง rsync จากชุดเช่น "bash -c 'rsync .... '" นี่คือฝันร้าย
gunslingor

"บริการ LxssManager หยุดทำงาน ............................................ ............................. ไม่สามารถหยุดบริการ LxssManager ได้ " : - /
Alex Jansen

4

ฉันได้สร้าง*.batไฟล์ขึ้นมาแล้วและมันก็ทำการรีบูทภายใน 10 วินาที (ฉันประหลาดใจกับความรวดเร็วในการรีโหลดสิ่งต่าง ๆ และโปรดแนะนำว่าวิธีการของฉันจะทำให้เกิดปัญหาร้ายแรงในระยะยาวหรือไม่)

วางสองบรรทัดต่อไปนี้ในWSL_reboot.batไฟล์และเรียกใช้ทุกครั้งที่คุณต้องการรีบูต WSL บน Windows 10

net stop LxssManager
net start LxssManager 

อัปเดตหมายเหตุ : ตาม "อัปเกรด" ล่าสุดของ Windows OS ของฉัน Build 1809 ไม่ชอบscคำสั่งอีกต่อไป

หมายเหตุด้านข้าง: หนึ่งต้องรีบูต "เคอร์เนล" WSL เมื่อเขา / เธอจัดรูปแบบไดรฟ์ตัวอักษรผ่าน Windows Explorer ยังไม่ได้แก้ผลพลอยได้ค่อนข้างที่lsคำสั่งจะได้รับข้อผิดพลาดดังต่อไปนี้ ที่เกี่ยวข้องโพสต์จาก WSL @ Github ; โพสต์ที่เกี่ยวข้องจากที่กอง จะวางลิงค์ถ้าฉันจัดการเพื่อแก้ไขข้อผิดพลาดโดยผลิตภัณฑ์

ls: 'System Volume Information': Permission denied
...
d--x--x--x 1 llinfeng llinfeng       512 Jan 15 11:00 'System Volume Information'/
...

ทำไมscแทนที่จะnetเป็นเช่นเดียวกับในคำตอบของ @ samdd
Gaia

1
ฉันเดาnetว่าไม่ได้ทำงานกับ Windows 10 ในขณะนั้น scต้องทำงานกลับมาแล้ว ฉันควรระบุหมายเลขบิลด์ของ windows
llinfeng
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.