เป็นไปได้ไหมที่จะรีบูทระบบย่อย Ubuntu โดยไม่ต้องรีสตาร์ทระบบของฉัน?
ฉันพยายามใช้shutdown
คำสั่งหลังจากติดตั้งการอัปเดตบางอย่าง แต่ดูเหมือนจะไม่เป็นตัวเลือกที่นี่
เป็นไปได้ไหมที่จะรีบูทระบบย่อย Ubuntu โดยไม่ต้องรีสตาร์ทระบบของฉัน?
ฉันพยายามใช้shutdown
คำสั่งหลังจากติดตั้งการอัปเดตบางอย่าง แต่ดูเหมือนจะไม่เป็นตัวเลือกที่นี่
คำตอบ:
ปิดทุกอย่าง: Build 18917+
wsl --shutdown
ยุติ distro เฉพาะ: Windows 1903+
wsl -t <DistroName>
# PowerShell (admin)
Restart-Service LxssManager
# CMD (admin)
net stop LxssManager
net start LxssManager
net
ทำงานใน cmd (กับผู้ดูแลระบบ) เพิ่งทดสอบว่าไฟล์ bat ของฉันด้วยsc
ไม่ทำงานใน Windows OS Build 1809
ตั้งแต่ Windows 10 เวอร์ชัน 1803 การปิดหน้าต่างเทอร์มินัล WSL ทั้งหมดจะไม่ฆ่ากระบวนการพื้นหลังเป็นค่าเริ่มต้นเว้นแต่ว่าไฟล์/var/run/reboot-required
นั้นจะปรากฏ ไฟล์นี้จะถูกสร้างขึ้นโดยอัตโนมัติโดย apt บน Ubuntu เมื่อการอัพเดทต้องการการรีบูท แต่ถ้าคุณต้องการรีบูทระบบย่อยด้วยตนเองคุณสามารถสร้างไฟล์ได้ด้วยตัวเอง:
sudo touch /var/run/reboot-required
ฉันยังไม่ได้ทดสอบสิ่งนี้ในดิสทริบิวชันอื่น ๆ ที่มีอยู่ใน Microsoft Store ทางเลือกอื่นคือการฆ่ากระบวนการทั้งหมดด้วยตัวคุณเอง:
sudo killall -r '.*'
sudo
:sudo killall -r '.*'
sudo touch /var/run/reboot-required
แต่คุณสามารถทำ ในความเป็นจริงดูเหมือนว่าการปรากฏตัวของไฟล์ทำให้ WSL ฆ่ากระบวนการพื้นหลังทั้งหมดและปิดระบบย่อยเมื่อปิดหน้าต่างเทอร์มินัลทั้งหมดดังนั้นคุณจึงสามารถใช้วิธีนั้นได้เช่นกัน
killall
ทำงานอย่างสมบูรณ์แบบสำหรับฉัน reboot-required
ไม่จำเป็นต้องไปสัมผัส
ที่พรอมต์ PowerShell สำหรับผู้ดูแลระบบ: Restart-Service LxssManager
WARNING: Waiting for service 'LxssManager (LxssManager)' to stop...
เพียงแค่ออกจากเปลือกด้วย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:~$
Windows 10 Build 17046
โดยเฉพาะมันไม่ทำงานตั้งแต่ @Louis คุณต้องการแก้ไขสิ่งนี้เป็นคำตอบของคุณหรือไม่
เพียงเปิดหน้าต่าง cmd ในฐานะผู้ดูแลระบบและเรียกใช้คำสั่งเหล่านี้เพื่อเริ่มต้นใหม่
net stop LxssManager
net start LxssManager
timeout /t 3
คำสั่ง (เพิ่ม 3 วินาที)
ฉันได้สร้าง*.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
net
ว่าไม่ได้ทำงานกับ Windows 10 ในขณะนั้น sc
ต้องทำงานกลับมาแล้ว ฉันควรระบุหมายเลขบิลด์ของ windows
net
แทนที่จะsc
เป็นเช่นในคำตอบของ @ llinfeng