Ist dieses Verhalten von VLC normal?

11

Ich bin auf Ubuntu 16.04 Unity neuesten Updates installiert, ich habe eines der besten Asus Gaming-Laptops auf dem Markt, VLC ist installiert, aber ich benutze es nie.

In den letzten Monaten konnte ich meinen PC nicht herunterfahren. Jedes Mal, wenn ich es versuche, drehen sich die Lüfter so schnell und es hängt, also drücke ich einfach den Shutdown-Knopf. Dieses Problem trat nur beim Herunterfahren auf , nicht neu starten Ich habe nicht einmal versucht, das Problem zu lösen.

Während ich heute arbeitete, bemerkte ich, dass die Fans dasselbe taten, was sie normalerweise beim Herunterfahren taten. Ich habe topfestgestellt, dass 2 vlc-Instanzen unter meinem Benutzernamen ausgeführt werden, die jeweils 122% CPU verbrauchen, obwohl ich wieder kein vlc verwende und kein Programm verwende, das auf vlc basiert.

Ich habe versucht, sudo kill <pid>und sudo killall <pid>und , sudo killall vlcaber noch waren sie nicht getötet, dass ich noch nie passiert ist . Ich habe sie vom Ubuntu-Ressourcenmonitor getötet, sie wurden getötet und das Problem beim Herunterfahren wurde behoben, und alles wurde wieder normal.

Ist das schon mal jemandem passiert?

Lynob
quelle
Hallo Lynob, ich habe gerade das Skript in meiner Antwort so aktualisiert, dass es mit crontab kompatibel ist. Standardmäßig funktioniert es mit einer begrenzten Anzahl von Umgebungsvariablen ... Nach meinen Tests funktioniert das Skript nun wie erwartet.
pa4080
2
Wenn Sie herausfinden möchten, warum es passiert, können Sie es beim ps aux | grep " $(echo -n $(pgrep vlc | xargs ps -o ppid | tail -n +2 | tr -d ' ') | sed 's/ / \\| /g') "nächsten Mal ausführen . Dies würde alle laufenden Instanzen von VLC finden, die übergeordneten PIDs für jede von ihnen abrufen und dann nach den übergeordneten PIDs in der Ausgabe von suchen ps aux. Dies kann bei der Suche nach dem Problem hilfreich sein.
anonymoose
3
Für die Aufzeichnung sudo kill -9 <pid>hätte wahrscheinlich funktioniert, wo gerade killnicht. Das -9bedeutet "Töte alles, was sich bewegt, mit extremen Vorurteilen auf die grausamste Art und Weise, die möglich ist". Nicht viel kann es überleben. Ohne -9ist es eher wie "Bitte stirb? Bitte, bitte schön mit einer Kirsche oben drauf?"
Trysis
1
@trysis: Sei vorsichtig mit kill -9, es ist gefährlich. Wenn die Anwendung beispielsweise eine temporäre Datei unter erstellt hat /var/lock, wird diese nicht entfernt. Ebenso werden Puffer nicht geleert, Datenbanktransaktionen werden nicht festgeschrieben usw. Sie könnten beschädigte oder fehlende Daten erhalten, wenn irgendwo etwas geschrieben wird. VLC macht wahrscheinlich nichts davon, aber ich würde empfehlen, das Problem zu verstehen, bevor ich davon ausgehe.
Kevin
1
Übrigens, 99% der Probleme, die ich mit dem Hängen von VLC und anderen "seltsamen Dingen" hatte, waren darauf zurückzuführen, dass versucht wurde, die Hardwarebeschleunigung für die Videodekodierung zu verwenden oder das "falsche" (was auch immer das bedeuten mag) Video-Backend zu verwenden. Ich würde versuchen, mit diesem Zeug herumzuspielen (HW-Beschleunigung für Codecs deaktivieren, versuchen, das Videoausgabe-Backend zu ändern) und zu sehen, ob etwas Gutes daraus wird.
Matteo Italia

Antworten:

10

Ich habe ein ähnliches Problem mit dem VLC-Player. Aber der Unterschied ist, dass ich es oft benutze. Hier ist eine mögliche (nicht vollständig geprüfte) Problemumgehung für dieses Problem unter Ubuntu 16.04 mit Unity.

Nach dieser Antwort können wir testen, ob eine laufende Anwendungsdesktopdatei mit dem Namen vlcoder so ausgeführt wird. Wenn es niemanden gibt, können wir versuchen, alle VLC-Prozesse zu beenden. Erstellen Sie zu diesem Zweck eine ausführbare Datei mit dem Namen ~/bin/vlc-killer.shund fügen Sie die folgenden Zeilen als Inhalt hinzu (hier finden Sie eine Referenz zu den exportierten Envvars):

#!/bin/bash

# Check whether the user is logged-in: if not then exit
if [[ -z "$(pgrep gnome-session -n -U $UID)" ]]; then exit; fi

# Export the current desktop session environment variables
export $(xargs -0 -a "/proc/$(pgrep gnome-session -n -U $UID)/environ")

# Test whether there is any VLC RunningApplicationsDesktopFile
/usr/bin/qdbus org.ayatana.bamf /org/ayatana/bamf/matcher \
org.ayatana.bamf.matcher.RunningApplicationsDesktopFiles | grep -q 'vlc'

# If not killall VLC processes
if [[ $? -ne 0 ]]; then /usr/bin/killall vlc; fi

Öffnen Sie dann die Crontab des Benutzers zum Bearbeiten ( crontab -e) und wenden Sie unten den folgenden Job an (der unser Skript jede Minute ausführt):

* * * * * $HOME/bin/vlc-killer.sh >/dev/null 2>&1
pa4080
quelle
1
Wenn ich recht habe, funktioniert dies nur, wenn mindestens eine Instanz von vlcüber die GUI gestartet wurde. Wenn Sie es gewohnt sind, vlc movie.mpgnur über die Befehlszeile zu laufen (wie ich), wird der vlcProzess nach einer Minute abgebrochen. Allerdings schöne Lösung und +1 trotzdem.
PerlDuck
2
@PerlDuck Während es ein aktives VLC- "Symbol" (im Dash Launcher ) gibt, funktioniert das Skript, unabhängig davon, ob VLC von einer .desktop-Datei oder von einer CLI gestartet wird.
pa4080
1
Oh cool. Das war mir nicht bewusst.
PerlDuck