Ce comportement de VLC est-il normal?

11

Je suis sur les dernières mises à jour Ubuntu 16.04 Unity installées, j'ai l'un des meilleurs ordinateurs portables de jeu Asus sur le marché, VLC est installé mais je ne l'utilise jamais.

Au cours des derniers mois, je n'ai pas pu éteindre mon PC, chaque fois que j'essaie de le faire, les fans commencent à tourner si vite et ça se bloque, donc j'appuie simplement sur le bouton d'arrêt, ce problème était uniquement à l'arrêt , pas redémarré je n'ai même pas pris la peine d'essayer de résoudre le problème.

Aujourd'hui, alors que je travaillais, j'ai remarqué que les fans faisaient la même chose que d'habitude lorsqu'ils arrêtaient. J'ai couru topremarqué que 2 instances vlc étaient exécutées sous mon nom d'utilisateur, consommant comme 122% de processeur chacune, bien que je n'utilise pas encore vlc, et je n'utilise aucun programme qui repose sur vlc.

J'ai essayé de le faire sudo kill <pid>et sudo killall <pid>et sudo killall vlcpourtant ils n'ont pas été tués, cela ne m'est jamais arrivé auparavant. Je les ai tués depuis le moniteur de ressources Ubuntu, ils ont été tués et le problème d'arrêt a été corrigé, et tout est revenu à la normale.

Est-ce que cela est arrivé à quelqu'un avant?

Lynob
la source
Salut, Lynob, je viens de mettre à jour le script dans ma réponse de manière à être compatible avec crontab, qui par défaut fonctionne avec un nombre limité de variables d'environnement ... Maintenant, selon mes tests, le script fonctionne comme prévu.
pa4080
2
Si vous souhaitez savoir pourquoi cela se produit, vous pouvez exécuter la ps aux | grep " $(echo -n $(pgrep vlc | xargs ps -o ppid | tail -n +2 | tr -d ' ') | sed 's/ / \\| /g') "prochaine fois que cela se produit. Cela trouverait toutes les instances en cours d'exécution de VLC, obtiendrait les PID parents pour chacun d'entre eux, puis rechercherait les PID parents dans la sortie de ps aux. Cela pourrait aider à localiser le problème.
anonymoose
3
Pour mémoire, sudo kill -9 <pid>aurait probablement fonctionné là où tout simplement killpas. Les -9moyens « Tuez tout ce qui bouge, avec préjudice extrême, de la manière la plus horrible possible ». Peu de choses peuvent y survivre. Sans -9, c'est plutôt "S'il te plait, meurs?
trysis
1
@trysis: Attention kill -9, c'est dangereux. Si par exemple l'application a créé un fichier temporaire sous /var/lock, il ne sera pas supprimé. De même, les tampons ne seront pas vidés, les transactions de base de données ne seront pas validées, etc. Vous pourriez vous retrouver avec des données corrompues ou manquantes si quelque chose était écrit quelque part. VLC ne fait probablement rien de tout cela, mais je recommanderais d'essayer de comprendre le problème avant de supposer.
Kevin
1
BTW, 99% des problèmes que j'ai rencontrés avec VLC se bloquant et faisant d'autres "trucs étranges" étaient dus au fait qu'il essayait d'utiliser l'accélération matérielle pour le décodage vidéo, ou d'utiliser le "mauvais" (quoi que cela puisse signifier) ​​backend vidéo; J'essaierais de jouer avec ce truc (désactiver l'accélération matérielle pour les codecs, essayer de changer le backend de sortie vidéo) et voir si quelque chose de bon en découle.
Matteo Italia

Réponses:

10

Je rencontre un problème similaire avec le lecteur VLC. Mais la différence est que je l'utilise souvent. Voici une solution de contournement possible (non entièrement vérifiée) pour ce problème sur Ubuntu 16.04 avec Unity.

Selon cette réponse, nous pouvons tester s'il existe un fichier de bureau d'application en cours d'exécution nommé vlcou ainsi. S'il n'y a personne, nous pouvons essayer de tuer tous les processus de VLC. À cette fin, créez un fichier exécutable, nommé ~/bin/vlc-killer.sh, et ajoutez les lignes suivantes en tant que son contenu (voici une référence sur les envvars exportés):

#!/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

Ensuite, ouvrez la Crontab de l'utilisateur pour edit ( crontab -e) et appliquez le travail suivant (qui exécutera notre script chaque minute) en bas:

* * * * * $HOME/bin/vlc-killer.sh >/dev/null 2>&1
pa4080
la source
1
Si j'ai raison, cela ne fonctionne que lorsqu'au moins une instance de a vlcété démarrée via l'interface graphique. Si vous avez l'habitude d'exécuter vlc movie.mpguniquement à partir de la ligne de commande (comme je le suis), cela tuera le vlcprocessus après une minute. Cependant, belle solution et +1 quand même.
PerlDuck
2
@PerlDuck, bien qu'il existe une "icône" VLC active (dans le lanceur de Dash ), le script fonctionne, que VLC soit démarré par un fichier .desktop ou par CLI.
pa4080
1
Oh cool. Je n'étais pas au courant de ça.
PerlDuck