Hành vi này của VLC có bình thường không?


11

Tôi đang cài đặt bản cập nhật mới nhất trên Ubuntu 16.04, tôi có một trong những máy tính xách tay chơi game tốt nhất của Asus trên thị trường, VLC đã được cài đặt nhưng tôi không bao giờ sử dụng nó.

Trong vài tháng qua, tôi không thể tắt PC của mình, mỗi lần tôi cố gắng làm vậy, quạt bắt đầu quay rất nhanh và bị treo, vì vậy tôi chỉ cần nhấn nút tắt, vấn đề đó chỉ là tắt máy , không khởi động lại tôi thậm chí không buồn cố gắng giải quyết vấn đề.

Hôm nay, khi tôi đang làm việc, tôi nhận thấy những người hâm mộ làm điều tương tự mà họ thường làm trong khi tắt máy. Tôi đã topnhận thấy 2 trường hợp vlc đang chạy dưới tên người dùng của tôi tiêu thụ như 122% cpu mỗi lần, mặc dù một lần nữa tôi không sử dụng vlc và tôi không sử dụng bất kỳ chương trình nào dựa trên vlc.

Tôi cố gắng để sudo kill <pid>sudo killall <pid>sudo killall vlcnhưng vẫn họ không bị giết, mà không bao giờ xảy ra với tôi trước đó. Tôi đã giết họ từ trình giám sát tài nguyên Ubuntu, họ đã bị giết và vấn đề tắt máy đã được khắc phục và mọi thứ trở lại bình thường.

Điều đó đã xảy ra với bất cứ ai trước đây?


Xin chào, Lynob, tôi vừa cập nhật tập lệnh trong câu trả lời của mình theo cách tương thích với crontab, theo mặc định hoạt động với số lượng biến môi trường hạn chế ... Bây giờ, theo thử nghiệm của tôi, tập lệnh hoạt động như mong đợi.
pa4080

2
Nếu bạn quan tâm đến việc tìm hiểu lý do tại sao nó xảy ra, bạn có thể chạy ps aux | grep " $(echo -n $(pgrep vlc | xargs ps -o ppid | tail -n +2 | tr -d ' ') | sed 's/ / \\| /g') "lần sau khi nó xảy ra. Điều này sẽ tìm thấy tất cả các phiên bản đang chạy của VLC, lấy các bộ cha mẹ cho từng bộ và sau đó tìm kiếm các bộ gốc cha mẹ trong đầu ra của ps aux. Nó có thể giúp theo dõi vấn đề.
nặc danh

3
Đối với hồ sơ, sudo kill -9 <pid>có lẽ sẽ làm việc ở nơi killkhông. Có -9nghĩa là "Giết bất cứ thứ gì di chuyển, với định kiến ​​cực đoan, theo cách khủng khiếp nhất có thể". Không nhiều có thể tồn tại nó. Không -9, nó giống như "Làm ơn chết đi? Làm ơn, làm ơn với một quả anh đào trên đỉnh?"
phân tích

1
@trysis: Cẩn thận với kill -9, nó nguy hiểm. Ví dụ, nếu ứng dụng đã tạo một tệp tạm thời bên dưới /var/lock, nó sẽ không bị xóa. Tương tự, bộ đệm sẽ không bị xóa, giao dịch cơ sở dữ liệu sẽ không được thực hiện, v.v. Bạn có thể kết thúc với dữ liệu bị hỏng hoặc bị thiếu nếu có bất cứ điều gì được ghi ở bất cứ đâu. VLC có lẽ không làm bất cứ điều gì trong số đó, nhưng tôi khuyên bạn nên cố gắng hiểu vấn đề trước khi giả định.
Kevin

1
BTW, 99% sự cố tôi gặp phải khi treo VLC và thực hiện các "nội dung lạ" khác là do nó cố gắng sử dụng tăng tốc phần cứng để giải mã video hoặc sử dụng phụ trợ video "sai" (bất cứ điều gì có thể có nghĩa); Tôi sẽ cố gắng sử dụng công cụ đó (vô hiệu hóa khả năng tăng tốc CTNH cho codec, thử thay đổi phụ trợ đầu ra video) và xem liệu có gì hay từ nó không.
Matteo Italia

Câu trả lời:


10

Tôi đang gặp vấn đề tương tự với trình phát VLC. Nhưng sự khác biệt là tôi đang sử dụng nó thường xuyên. Đây là một cách giải quyết có thể (chưa được chứng minh đầy đủ) cho vấn đề này trên Ubuntu 16.04 với Unity.

Theo câu trả lời này, chúng tôi có thể kiểm tra xem có một tệp ứng dụng máy tính để bàn đang chạy có tên vlchay không. Nếu không có ai, chúng tôi có thể cố gắng tiêu diệt tất cả các quy trình của VLC. Với mục đích này, hãy tạo một tệp thực thi, được đặt tên ~/bin/vlc-killer.shvà thêm các dòng sau làm nội dung của nó (đây là một tài liệu tham khảo về các envvars đã xuất):

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

Sau đó mở Crontab của người dùng để chỉnh sửa ( crontab -e) và áp dụng công việc sau (sẽ thực thi tập lệnh của chúng tôi mỗi phút) ở phía dưới:

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

1
Nếu tôi đúng, điều này chỉ hoạt động khi có ít nhất một phiên bản vlcđược bắt đầu thông qua GUI. Nếu bạn được sử dụng để vlc movie.mpgchỉ chạy từ dòng lệnh (như tôi), điều này sẽ giết vlcquá trình sau một phút. Tuy nhiên, giải pháp tốt và +1 nào.
PerlDuck

2
@PerlDuck, trong khi có một "biểu tượng" VLC hoạt động (trong trình khởi chạy Dash ) thì tập lệnh hoạt động, bất kể VLC được khởi động bởi tệp .desktop hay bởi CLI.
pa4080

1
Ồ tuyệt. Tôi đã không nhận thức được điều đó.
PerlDuck
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.