Apakah perilaku VLC ini normal?

11

Saya di ubuntu 16,04 pembaruan terbaru diinstal, saya memiliki salah satu laptop gaming Asus terbaik di pasar, VLC diinstal tetapi saya tidak pernah menggunakannya.

Selama beberapa bulan terakhir, saya tidak dapat mematikan PC saya, setiap kali saya mencoba melakukannya, para penggemar mulai berputar begitu cepat dan itu hang, jadi saya hanya menekan tombol shut down, masalah itu hanya pada saat shutdown , tidak restart saya bahkan tidak repot-repot mencoba menyelesaikan masalah.

Hari ini, ketika saya sedang bekerja, saya melihat para penggemar melakukan hal yang sama seperti yang biasanya mereka lakukan ketika mematikan. Saya berlari topmelihat 2 vlc instance sedang berjalan di bawah nama pengguna saya memakan masing-masing 122% cpu, meskipun sekali lagi saya tidak menggunakan vlc, dan saya tidak menggunakan program apa pun yang bergantung pada vlc.

Saya mencoba sudo kill <pid>dan sudo killall <pid>dan sudo killall vlctetapi mereka tetap tidak terbunuh, itu tidak pernah terjadi pada saya sebelumnya. Saya membunuh mereka dari monitor sumber daya Ubuntu, mereka terbunuh dan masalah penutupan diperbaiki, dan semuanya kembali normal.

Apakah itu terjadi pada seseorang sebelumnya?

Lynob
sumber
Hai, Lynob, saya baru saja memperbarui skrip dalam jawaban saya dengan cara agar kompatibel dengan crontab, yang secara default berfungsi dengan sejumlah variabel lingkungan yang terbatas ... Sekarang, menurut pengujian saya, skrip berfungsi sesuai dengan yang diharapkan.
pa4080
2
Jika Anda tertarik untuk mencari tahu mengapa itu terjadi, Anda bisa menjalankannya ps aux | grep " $(echo -n $(pgrep vlc | xargs ps -o ppid | tail -n +2 | tr -d ' ') | sed 's/ / \\| /g') "lain kali. Ini akan menemukan semua instance VLC yang sedang berjalan, dapatkan PID induk untuk masing-masing, dan kemudian cari PID induk di output ps aux. Mungkin membantu dalam melacak masalah.
anonim memilih
3
Sebagai catatan, sudo kill -9 <pid>mungkin akan bekerja di tempat yang killtidak. The -9berarti "Membunuh apapun yang bergerak, dengan prasangka ekstrem, dengan cara yang paling mengerikan mungkin". Tidak banyak yang bisa bertahan. Tanpa -9, itu lebih seperti "Tolong mati? Tolong, tolong tolong dengan ceri di atasnya?"
trysis
1
@trysis: Hati-hati dengan kill -9, ini berbahaya. Jika misalnya aplikasi telah membuat file sementara di bawahnya /var/lock, itu tidak akan dihapus. Demikian pula, buffer tidak akan disiram, transaksi basis data tidak akan dilakukan, dll. Anda bisa berakhir dengan data yang korup atau hilang jika ada sesuatu yang ditulis di mana saja. VLC mungkin tidak melakukan hal-hal itu, tetapi saya akan merekomendasikan mencoba memahami masalahnya sebelum berasumsi.
Kevin
1
BTW, 99% masalah yang saya miliki dengan VLC menggantung dan melakukan "hal-hal aneh" lainnya adalah karena mencoba menggunakan akselerasi perangkat keras untuk decoding video, atau menggunakan backend video yang "salah" (apa pun artinya); backend video; Saya akan mencoba mengutak-atik hal itu (menonaktifkan akselerasi HW untuk codec, mencoba mengubah backend output video) dan melihat apakah ada hal baik yang berasal darinya.
Matteo Italia

Jawaban:

10

Saya mengalami masalah serupa dengan VLC player. Tetapi bedanya saya sering menggunakannya. Berikut adalah satu kemungkinan (tidak sepenuhnya terbukti) solusi untuk masalah ini di Ubuntu 16.04 dengan Unity.

Menurut jawaban ini kita dapat menguji apakah ada file desktop aplikasi yang berjalan bernama vlcatau lebih. Jika tidak ada, kami dapat mencoba untuk membunuh semua proses VLC. Untuk keperluan ini, buat file yang dapat dieksekusi, beri nama ~/bin/vlc-killer.sh, dan tambahkan baris berikut ini sebagai isinya (berikut ini adalah referensi tentang utusan yang diekspor):

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

Kemudian buka Crontab pengguna untuk diedit ( crontab -e) dan terapkan pekerjaan berikut (yang akan mengeksekusi skrip kami setiap menit) di bagian bawah:

* * * * * $HOME/bin/vlc-killer.sh >/dev/null 2>&1
pa4080
sumber
1
Jika saya benar ini berfungsi hanya ketika setidaknya satu contoh vlcdimulai melalui GUI. Jika Anda terbiasa menjalankan vlc movie.mpghanya dari baris perintah (seperti saya) ini akan mematikan vlcproses setelah satu menit. Namun, solusi yang bagus dan +1 tetap.
PerlDuck
2
@PerlDuck, sementara ada "ikon" VLC aktif (di peluncur Dash ) script berfungsi, tidak peduli apakah VLC dimulai oleh file .desktop atau oleh CLI.
pa4080
1
Oh keren. Saya tidak menyadarinya.
PerlDuck