Чи нормальна така поведінка VLC?


11

Я на останніх оновленнях, встановлених ubuntu 16.04 єдності, у мене один з найкращих ігрових ноутбуків Asus на ринку, VLC встановлений, але я ніколи його не використовую.

Останні кілька місяців мені не вдалося вимкнути ПК, кожен раз, коли я намагаюся це зробити, вентилятори починають крутитися так швидко, і він зависає, тому я просто натискаю кнопку вимкнення, ця проблема була лише при відключенні , не перезапускати, я навіть не намагався вирішити проблему.

Сьогодні, працюючи, я помітив, як шанувальники роблять те саме, що вони зазвичай роблять під час вимкнення. Я побіг topпомітив, що 2 моменти vlc запускаються під моїм іменем, використовуючи, як 122% процесор кожного, хоча я знову не використовую vlc, і я не використовую жодної програми, що спирається на vlc.

Я намагався sudo kill <pid>і sudo killall <pid>та , sudo killall vlcале до цих пір вони не були вбиті, що ніколи не траплялося зі мною раніше. Я вбив їх з монітора ресурсів Ubuntu, вони були вбиті, і проблема вимкнення була виправлена, і все повернулося до норми.

Це сталося з ким-небудь раніше?


Привіт, Ліноб, я щойно оновив скрипт у своїй відповіді таким чином, щоб він був сумісний із crontab, що за замовчуванням працює з обмеженою кількістю змінних середовища ... Тепер, згідно з моїми тестами, сценарій працює так, як і очікувалося.
pa4080

2
Якщо вам цікаво дізнатися, чому це відбувається, ви можете запустити ps aux | grep " $(echo -n $(pgrep vlc | xargs ps -o ppid | tail -n +2 | tr -d ' ') | sed 's/ / \\| /g') "наступного разу, коли це станеться. Це дозволить знайти всі запущені екземпляри VLC, отримати батьківські PID-адреси для кожного з них, а потім шукати батьківські PID-адреси у висновку ps aux. Це може допомогти розслідувати проблему.
анонімний

3
Для запису, sudo kill -9 <pid>напевно, працювали б там, де тільки killцього не було. В -9означає «вбити все , що рухається, з крайнім упередженням, в самому огидному можливим способом». Не багато може це пережити. Без -9, це більше схоже на "Будь ласка, помер? Будь ласка, гарненько, будь ласка, з вишнею на вершині?"
трис

1
@trysis: будьте обережні kill -9, небезпечно. Якщо, наприклад, програма створила під тимчасовим файлом /var/lock, він не буде видалений. Так само буфери не будуть видалятися, транзакції з базами даних не здійснюватимуться і т. Д. Ви можете виявити пошкоджені або відсутні дані, якщо щось записували десь. VLC, ймовірно, не робить жодної з цих речей, але я б рекомендував спробувати зрозуміти проблему, перш ніж припускати.
Кевін

1
До речі, 99% проблем, які виникли у вішанні VLC та інших "дивних речей", були через те, що він намагався використовувати апаратне прискорення для декодування відео, або використовуючи "неправильний" (що б це не означав) відеозахід; Я б спробував поспілкуватися з цими речами (вимкніть прискорення HW для кодеків, спробуйте змінити вихідний вихід відео) і побачити, чи не виходить нічого хорошого.
Маттео Італія

Відповіді:


10

У мене є подібні проблеми з програвачем VLC. Але різниця в тому, що я його часто використовую. Ось один з можливих (не повністю перевірених) шляхів вирішення цієї проблеми на Ubuntu 16.04 з Unity.

Відповідно до цієї відповіді, ми можемо перевірити, чи є якийсь запущений файл робочого столу програми з назвою vlcчи так. Якщо нікого немає, ми можемо спробувати знищити всі процеси VLC. Для цього створіть виконуваний файл з назвою ~/bin/vlc-killer.shта додайте наступні рядки як його вміст (ось посилання про експортовані 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

Потім відкрийте Crontab користувача для редагування ( crontab -e) і застосуйте наступне завдання (яке буде виконувати наш сценарій щохвилини) внизу:

* * * * * $HOME/bin/vlc-killer.sh >/dev/null 2>&1

1
Якщо я маю рацію, це працює лише тоді, коли принаймні один екземпляр vlcзапущений через GUI. Якщо ви звикли запускатися vlc movie.mpgвиключно з командного рядка (як я), це знищить vlcпроцес через хвилину. Однак приємне рішення та +1 у будь-якому випадку.
PerlDuck

2
@PerlDuck, хоча є активний "значок" VLC (у запуску Dash ), сценарій працює, незалежно від того, запускається VLC файлом .desktop або CLI.
pa4080

1
О, круто. Я цього не знав.
PerlDuck
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.