จะรีสตาร์ท Gnome-shell ได้อย่างไรหลังจากที่มันไม่ตอบสนอง / หยุดทำงาน?


123

บางครั้ง gnome-shell ของฉันค้าง ฉันสามารถเห็น (ฟัง) กระบวนการพื้นหลังทำงาน (เล่นดนตรี) แต่ฉันไม่สามารถทำอะไรได้ในคำพังเพย ไม่มีAlt+ +F2R

ฉันสามารถสลับไปใช้ปลอบใจ: Ctrl+ Alt+ F1เข้าสู่ระบบเป็นผู้ใช้เดียวกันและดำเนินการ:

gnome-shell --replace

แล้วย้อนกลับCtrl+ F7แต่ฉันก็มีพฤติกรรมที่แปลก ตัวอย่างเช่นฉันไม่สามารถแก้ไขการเชื่อมต่อเครือข่าย ฉันไม่สามารถออกจากระบบได้เช่นกัน วิธีที่เหมาะสมในการรีสตาร์ท gnome-shell คืออะไร?


gnome-shell ค้างในขณะที่ใช้ฟังก์ชั่นการค้นหาgnome-shell overviewหรือในโอกาสพิเศษที่คุณสามารถบอกได้หรือไม่?
v2r

1
ไม่มันค้างหลังจากเข้าสู่ระบบ (ส่วนใหญ่) โดยปกติหลังจากเลิกทำการเชื่อมต่อ
jk_

2
จนถึงตอนนี้ฉันยังไม่พบวิธีแก้ปัญหาที่ใช้งานได้ ในที่สุดฉันก็จบลงด้วยวิธีแก้ปัญหานี้
jk_

หากคุณใช้ส่วนขยายของเชลล์จาก: extensions.gnome.orgปิดใช้งานทั้งหมดและรีบูตเพื่อดูว่าหนึ่งในนั้นเกิดปัญหาหรือไม่ ฉันใช้ gnome-shell รุ่นเก่ากว่าและมีปัญหามากมายเนื่องจากสาเหตุที่แน่นอน! (อาจจะง่ายเหมือนกัน?!)
v2r

1
ฉันพยายามที่จะปิดการใช้งานพวกเขาทั้งหมดยังคงมีปัญหา :(
jk_

คำตอบ:


173

วิธีที่ง่ายที่สุดคือเพียงแค่กดAlt+ F2พิมพ์แล้วr Enterสิ่งนี้จะใช้งานได้นานเชลล์ใช้งานได้

คุณสามารถส่งSIGQUITไปยังgnome-shellกระบวนการที่จะยุติเชลล์เท่านั้น:

killall -3 gnome-shell

วิธีอื่นใช้วิธีทำลายมากกว่าซึ่งปิดแอปพลิเคชันทั้งหมดซึ่งไม่ควร


3
+1 สำหรับส่วนSIGHUPปลายอย่างไรก็ตามคำสั่งที่ถูกต้องจะkillall -1 gnome-shellไม่เป็นเช่นนั้นหรือ อย่างน้อยตามman 7 signalค่าสำหรับSIGHUPเป็น 1. ค่า 3 SIGQUITสอดคล้องกับ ฉันส่งค่า 1 ไปยัง Gnome Shell แล้วและเริ่มใหม่ได้ตามปกติ
Chriki

@Chriki ใช่มันเป็น sigquit ผ่านสัญญาณส่วนใหญ่จะทำให้กระบวนการ gnome-shell สิ้นสุด
Braiam

ฉันลองสิ่งนี้ใน Fedora 25 และkillall -3 gnome-shellส่งผลให้แอปพลิเคชันทั้งหมดฆ่าฉัน
comfreak

6
ฉันหวังว่าเราจะสามารถใช้คำสั่งเทอร์มินัลซึ่งมีเอฟเฟกต์เหมือนกันAlt+F2และrนั่นคือโดยไม่ทำให้หน้าจอว่างเปล่า ...
Sadi

ฉันพบปัญหา gnome crashing มากมายบน Ubuntu vm ของฉันฉันต้องรีสตาร์ท VM ทุกครั้งที่มันเกิดขึ้น ความสามารถในการใช้งานและใช้คำสั่งนี้แก้ปัญหานั้นขอบคุณหนึ่งล้าน
นาธานเอฟ

32
  • หากคุณต้องการขอให้ "อย่างดี" กับ gnome-shell เพื่อรีสตาร์ทตัวเองคุณสามารถเรียกมันว่าเป็นฟังก์ชั่นการรีสตาร์ทภายในผ่าน dbus ด้วยคำสั่งต่อไปนี้ (สมมติว่าคุณDBUS_SESSION_BUS_ADDRESSตั้ง env var เป็นค่าที่ถูกต้องและเรียกใช้ในฐานะผู้ใช้เดียวกัน):

    dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
    
  • หากคุณต้องการเรียกใช้อินสแตนซ์ใหม่gnome-shell --replaceควรทำเช่นนั้น บนคอนโซลคุณจำเป็นต้องกำหนดตัวแปรสภาพแวดล้อมที่จำเป็นเช่นDISPLAY, DBUS*และอื่น ๆ อ้างถึง/proc/$gnome_shell_pid/environ

  • หากคุณต้องการเริ่มต้นใหม่ที่มีอยู่แล้วkillall -HUP gnome-shellจะทำมัน หากคุณทำเช่นนั้นบ่อยเกินไป gnome-shell อาจปิดการใช้งานส่วนขยายทั้งหมดให้ออกจากระบบอย่างแรงหรือทำพฤติกรรมที่ไม่เป็นมิตรกับผู้ใช้

ฉันสร้างฟังก์ชันเชลล์ที่ตั้งค่า DBUS_SESSION_BUS_ADDRESS จากสภาพแวดล้อมกระบวนการ gnome-shell (เพื่อให้คุณสามารถทำได้logout otheruser1 otheruser2) askubuntu.com/a/874504/17941
sehe

3
มีข้อผิดพลาดError org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell was not provided by any .service filesโดยไม่มี sudo และFailed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11ด้วย sudo
Seanny123

7

นี่เป็นวิธีแก้ไขปัญหาอื่น:

  1. เข้าสู่ระบบขั้วในท้องถิ่นโดยการกดCTRL+ +ALTF1
  2. เรียกใช้คำสั่ง:

    sudo kill -HUP $(pidof gnome-shell)
    
  3. กลับไปที่อินเตอร์เฟซแบบกราฟิกโดยการกดCTRL+ +ALTF7

PS: ฉันใช้ lightdm แทน gdm3


1
เรียบง่ายและทำงานเหมือนจับใจ! (อย่างน้อยสำหรับฉัน)
Katai

6

หากคุณติดตั้ง Ubuntu gnome ซึ่งคุณควรมีอยู่คุณอาจใช้ gnome display manager ในกรณีนี้คุณควรเปลี่ยนเป็น TTY อื่นเช่น Ctrl + Alt + F4 แล้ว

sudo service gdm restart

ฉันยังเขียนบทความเกี่ยวกับสถานการณ์เช่นนี้เมื่อเร็ว ๆ นี้:

ช่วยด้วย Linux Desktop ของฉันแฮงค์!

ขอให้โชคดี!


6
ระวังฉันทำมันใน TTY เดียวกันและนี่เป็นการฆ่าเซสชันปัจจุบันของฉัน ..
RousseauAlexandre

สิ่งนี้เกิดขึ้นอย่างสมบูรณ์ในเซสชันปัจจุบัน: มันเริ่มกระพริบตาแล้วก็ไปที่นิพพาน .. ต้องรีบูต
Nik O'Lai

5

เนื่องจากคุณไม่พอใจgnome-shell --replaceคุณอาจต้องลองรีสตาร์ทตัวจัดการจอแสดงผลเอง

sudo service lightdm restart

ฉันคิดว่ามันจะฆ่ากระบวนการอื่น ๆ ที่คุณใช้อยู่ นอกจากนี้โปรดดูhttp://worldofgnome.org/how-to-restart-gnome-shell-when-freezes-if-ever/

หากคุณจริงจังในบางสิ่งที่ทำให้คุณหยุดทุกครั้งให้เปิดใช้งาน SysRq ตามที่ระบุไว้ในhttps://www.kernel.org/doc/Documentation/admin-guide/sysrq.rstจากนั้นให้<alt><sysrq/print_screen_key><k>ฆ่าสิ่งที่อยู่ในนั้น จอภาพ


3
การรีสตาร์ท lighdm ใช้งานได้ แต่ฉันต้องการหลีกเลี่ยงเพราะฉันต้องเปิดใหม่ทุกอย่างตั้งแต่เริ่มต้น โดยเฉพาะถ้าฉันรู้ว่ามันเป็นปัญหาของ Gnome-shell และการรีสตาร์ทมันใช้งานได้เกือบ
jk_

ฉันไม่รู้วิธีการอื่นที่จะหยุดยั้งเปลือก gnome คุณลองว่าDISPLAY=:7 gnome-shell --replaceใช้ได้ไหม
Jay Aurabind

1
ไม่มีก็ไม่ได้ผมใช้จอแสดงผลเมื่อwแสดงหน้าจอที่แตกต่าง: 0 หากฉันใช้จอแสดงผลผิดฉันได้รับข้อผิดพลาด
jk_

ขออภัยฉันไม่มีตัวเลือก คุณควรถามในรายชื่อผู้รับจดหมายผู้ใช้ / นักพัฒนาของ gnome ก่อนอื่นให้หาสาเหตุว่าทำไมคุณถึงมีความผิดปกติด้วยalt-f2-rหรือgnome-shell --replaceเมื่อมันเป็นวิธีที่แนะนำโดย gnome
Jay Aurabind

ดังนั้นฉันฉันได้ตามลิงค์นี้เพื่อตั้งค่าตัวแปร ENV เพิ่มเติม แต่ฉันยังไม่สามารถแก้ไขการเชื่อมต่อเครือข่ายเมื่อรีสตาร์ท gnome-shell จากเทอร์มินัลอื่น ในท้ายที่สุดฉันท้ายด้วยเคล็ดลับนี้
jk_

2

บางครั้งฉันมีปัญหาเช่นเดียวกับที่คุณอธิบายและวิธีการแก้ปัญหาของฉันคือ:

Ctrl+ Alt+ F1, เข้าสู่ระบบด้วยผู้ใช้เดียวกันและดำเนินการ:

sudo pkill -9 ^gnome-shell

และส่งคืนด้วยCtrl+ Alt+F7

ถ้านี่เป็นวิธีที่เหมาะสมฉันก็ไม่รู้ สำหรับฉันมันใช้งานได้ทุกครั้ง


3
นี่จะฆ่าอินสแตนซ์ผู้ใช้ทั้งหมดของ gnome-shell ซึ่งอาจไม่ใช่สิ่งที่คุณต้องการทำในสถานการณ์ที่มีผู้ใช้หลายคน โดยปกติคุณจะต้องฆ่าตัวเอง (pkill -HUP gnome-shell)
Steeve McCauley

3
ฆ่า -9 เป็นเล็กน้อยทำลายผมคิดว่า: robertwe.github.io/2015/03/19/why-you-shoudnt-use-kill--9
โรเบิร์ต

มันใช้งานได้ดีสำหรับฉัน ... ! คุณบันทึกวันของฉัน ชื่นชม
NomanJaved

2

รีสตาร์ท X

  • ก่อนอื่นให้หาเครื่องมือจัดการหน้าจอที่ Ubuntu ของคุณใช้ด้วยคำสั่งต่อไปนี้

    cat /etc/X11/default-display-manager
    

    ในกรณีของฉันมัน /usr/sbin/gdm3

    จาก Inside X หรือนอก X

  • สำหรับวิธีที่ 1 ถึง 4 ค้นหาว่าคุณใช้จอแสดงผลใดโดยใช้wคำสั่ง

    w
    

    คำตอบอาจเป็นเช่นtty3นั้น (ดังนั้น ("ack ของฉัน)" ปุ่ม "กลับไปที่จอแสดงผลของฉัน" คือ Ctrl + Alt + F3

วิธีการ

  1. Ctrl + Alt + F1 เพื่อออกและ Ctrl + Alt + F3 เพื่อนำกลับมาหนึ่งรายการ
  2. sudo /etc/init.d/gdm3 restart
  3. systemctl restart gdm.service
  4. sudo service gdm3 restart
  5. dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
  6. วิธีง่ายๆคือกด Alt + F2 rแล้วพิมพ์จากนั้นกด Enter วิธีนี้จะใช้งานได้นานเชลล์ไม่สามารถใช้งานได้

วิธีที่ 5 ยกคำต่อคำจากคำตอบของ korcและ 6 จากคำตอบของ Braiam การคัดลอกผลงานไม่ได้ขัดกับกฎที่นี่ แต่ก็ไม่ได้เด็ด สิ่งที่คุณต้องทำจริงๆก็คือระบุว่างานไม่ใช่ของคุณเองโดยใส่ไว้ในเครื่องหมายคำพูดและให้การระบุแหล่งที่มาโดยรวมลิงก์ไปยังโพสต์ต้นฉบับและลิงก์ไปยังหน้าโปรไฟล์ของผู้เขียน สำหรับรายละเอียดเพิ่มเติมดูโพสต์บล็อกนี้: ต้องมี Attribution
wjandrea

1
  1. กด Ctrl + Alt + F2 เพื่อสลับไปที่หน้าต่างเทอร์มินัล บางครั้งมันเป็นไปไม่ได้

  2. กด Alt + SysRq + R เพื่อรับแป้นพิมพ์

  3. หากกด Ctrl + Alt + F2 ก่อนที่จะล้มเหลวลองอีกครั้งทันที

  4. กด Alt + SysRq + E เพื่อยุติกระบวนการทั้งหมด

  5. กด Alt + SysRq + I เพื่อฆ่ากระบวนการทั้งหมด

  6. กด Alt + SysRq + S เพื่อซิงค์ดิสก์ของคุณ

  7. รอข้อความ OK หรือ Done หากคุณไม่เห็นข้อความให้ดูไฟ HDD ของคุณเพื่อดูว่าการซิงค์สร้างความแตกต่างหรือไม่

  8. กด Alt + SysRq + U เพื่อยกเลิกการต่อเชื่อมดิสก์ไดรฟ์ทั้งหมด

  9. รอข้อความ OK หรือ Done หากคุณไม่เห็นข้อความภายใน 15-30 วินาทีสมมติว่าดิสก์ถูกถอดออก (หรือไม่สามารถยกเลิกการต่อเชื่อมได้) และดำเนินการต่อ

  10. กด Alt + SysRq + B เพื่อรีบูต


0

kill -15 gnome-shellใช้งานไม่ได้สำหรับฉัน แต่kill -9ทำไม่ได้ ฉันคิดว่าเป็นเพราะkill -9ทริกเกอร์ segfault ซึ่งเรียกใช้ gnome-shell เพื่อรีสตาร์ทตัวเองในขณะที่kill -15ทำไม่ได้


2
kill -9ไม่เรียกใช้ segfault ส่ง SIGKILL ซึ่งเป็นสัญญาณที่ไม่สามารถจับตาดูได้ซึ่งการกระทำเพียงอย่างเดียวคือการออกจากทันที ควรใช้เฉพาะเมื่อแอปพลิเคชันไม่ตอบสนองต่อ SIGTERM ซึ่งก็คือ 15
muru

pkill -11 gnome-shellจะเรียกใช้ segfault เพราะนั่นคือสิ่งที่สัญญาณ 11 ทำ BTW killต้องการ ID กระบวนการไม่ใช่ชื่อกระบวนการ คุณหมายถึงpkillหรือkillall?
TSJNachos117
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.