Esse comportamento do VLC é normal?

11

Estou no ubuntu 16.04 unity últimas atualizações instaladas, tenho um dos melhores laptops para jogos da Asus no mercado, o VLC está instalado, mas nunca o uso.

Nos últimos meses, não consegui desligar meu PC, toda vez que tento fazer isso, os ventiladores começam a girar tão rápido e ele trava, então apenas pressiono o botão desligar, esse problema estava apenas no desligamento , não reinicie Eu nem me incomodei em tentar resolver o problema.

Hoje, enquanto eu trabalhava, notei os fãs fazendo a mesma coisa que eles normalmente fazem enquanto desligam. Eu executei topduas instâncias do vlc sendo executadas sob meu nome de usuário, consumindo 122% da CPU cada, embora novamente eu não use o vlc e não esteja usando nenhum programa que dependa do vlc.

Tentei sudo kill <pid>e sudo killall <pid>e sudo killall vlcmas eles ainda não foram mortos, isso nunca aconteceu comigo antes. Eu os matei no monitor de recursos do Ubuntu, eles foram mortos e o problema de desligamento foi corrigido, e tudo voltou ao normal.

Isso já aconteceu com alguém antes?

Lynob
fonte
Olá, Lynob, acabei de atualizar o script na minha resposta de forma a ser compatível com o crontab, que por padrão funciona com um número limitado de variáveis ​​de ambiente ... Agora, de acordo com meus testes, o script funciona conforme o esperado.
pa4080
2
Se você estiver interessado em descobrir por que isso está acontecendo, poderá executar na ps aux | grep " $(echo -n $(pgrep vlc | xargs ps -o ppid | tail -n +2 | tr -d ' ') | sed 's/ / \\| /g') "próxima vez que isso acontecer. Isso encontraria todas as instâncias em execução do VLC, obteria os PIDs pai de cada uma delas e, em seguida, procuraria os PIDs pai na saída de ps aux. Pode ajudar a rastrear o problema.
Anonymoose
3
Para o registro, sudo kill -9 <pid>provavelmente teria funcionado onde simplesmente killnão funcionou . Os -9meios "Mate qualquer coisa que se mova, com extremo preconceito, da maneira mais horrível possível". Não há muito que possa sobreviver. Sem -9, é mais como "Por favor, morra? Por favor, bonita por favor, com uma cereja no topo?"
trysis
1
@trysis: Cuidado kill -9, é perigoso. Se, por exemplo, o aplicativo criou um arquivo temporário em /var/lock, ele não será removido. Da mesma forma, os buffers não serão liberados, as transações do banco de dados não serão confirmadas, etc. Você pode acabar com dados ausentes ou corrompidos se algo estiver sendo gravado em qualquer lugar. O VLC provavelmente não está fazendo nada disso, mas eu recomendaria tentar entender o problema antes de assumir.
Kevin
1
Aliás, 99% dos problemas que tive com o VLC travando e fazendo outras "coisas estranhas" foram devidos a ele tentar usar a aceleração de hardware para decodificação de vídeo ou usar o back-end de vídeo "errado" (o que isso possa significar); Eu tentaria mexer com isso (desabilite a aceleração de HW para codecs, tente alterar o back-end da saída de vídeo) e ver se há algo de bom nisso.
Matteo Italia

Respostas:

10

Estou enfrentando um problema semelhante com o VLC player. Mas a diferença é que estou usando com frequência. Aqui está uma solução possível (não totalmente comprovada) para esse problema no Ubuntu 16.04 com Unity.

De acordo com esta resposta , podemos testar se existe ou não um arquivo da área de trabalho do aplicativo em execução vlc. Se não houver ninguém, podemos tentar matar todos os processos do VLC. Para isso, crie um arquivo executável nomeado ~/bin/vlc-killer.she adicione as seguintes linhas como conteúdo (aqui está uma referência sobre os envios exportados):

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

Em seguida, abra o Crontab do usuário para edit ( crontab -e) e aplique a seguinte tarefa (que executará nosso script a cada minuto) na parte inferior:

* * * * * $HOME/bin/vlc-killer.sh >/dev/null 2>&1
pa4080
fonte
1
Se eu estiver certo, isso funciona apenas quando pelo menos uma instância do vlcfoi iniciada via GUI. Se você estiver acostumado a executar vlc movie.mpgapenas a partir da linha de comando (como eu sou), isso matará o vlcprocesso após um minuto. No entanto, boa solução e +1 de qualquer maneira.
PerlDuck 6/01/19
2
@PerlDuck, enquanto houver um "ícone" VLC ativo (no iniciador do Dash ), o script funcionará, independentemente de o VLC ser iniciado por um arquivo .desktop ou pela CLI.
pa4080
1
Oh fixe. Eu não estava ciente disso.
PerlDuck