क्या वीएलसी का यह व्यवहार सामान्य है?


11

मैं ubuntu 16.04 एकता पर नवीनतम अपडेट स्थापित कर रहा हूं, मेरे पास बाजार में सर्वश्रेष्ठ Asus गेमिंग लैपटॉप में से एक है, VLC स्थापित है लेकिन मैं इसका उपयोग कभी नहीं करता।

पिछले कुछ महीनों से, मैं अपने पीसी को बंद करने में सक्षम नहीं था, हर बार जब मैं ऐसा करने की कोशिश करता हूं, तो प्रशंसक इतनी तेजी से घूमना शुरू कर देते हैं और यह लटका रहता है, इसलिए मैं सिर्फ शट डाउन बटन दबाता हूं, यह समस्या केवल शटडाउन पर थी , पुनः आरंभ नहीं मैंने समस्या को हल करने की कोशिश भी नहीं की।

आज, जब मैं काम कर रहा था, मैंने प्रशंसकों को वही काम करते हुए देखा, जो वे सामान्य रूप से बंद करते समय करते हैं। मैंने topदेखा कि मेरे उपयोगकर्ता नाम के तहत 2 vlc इंस्टेंस चलाए जा रहे हैं, जो कि प्रत्येक 122% सीपीयू की तरह चल रहे हैं, हालांकि फिर से मैं vlc का उपयोग नहीं करता हूं, और मैं किसी भी प्रोग्राम का उपयोग नहीं कर रहा हूं जो vlc पर निर्भर करता है।

मैं करने की कोशिश की sudo kill <pid>और sudo killall <pid>और sudo killall vlc, लेकिन अभी भी वे मारे गए नहीं थे, कि पहले कभी नहीं मुझे क्या हुआ। मैंने उन्हें उबंटू संसाधन मॉनिटर से मार दिया, वे मारे गए और शटडाउन समस्या तय हो गई, और सब कुछ सामान्य हो गया।

क्या पहले भी किसी के साथ ऐसा हुआ था?


हाय, लिनोब, मैंने अपने उत्तर में स्क्रिप्ट को क्रॉस्टैब के साथ संगत करने के लिए अद्यतन किया, कि डिफ़ॉल्ट रूप से पर्यावरण चर की सीमित संख्या के साथ काम करता है ... अब, मेरे परीक्षणों के अनुसार, स्क्रिप्ट काम करती है जैसा कि अपेक्षित है।
पा ०४०80०

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, यह अधिक पसंद है "कृपया मरो? कृपया, कृपया शीर्ष पर एक चेरी के साथ?"
trysis

1
@ क्रिसिस: इससे सावधान रहें kill -9, यह खतरनाक है। यदि उदाहरण के लिए आवेदन के तहत एक अस्थायी फ़ाइल बनाई गई है /var/lock, तो उसे हटाया नहीं जाएगा। इसी तरह, बफ़र्स को फ्लश नहीं किया जाएगा, डेटाबेस लेनदेन प्रतिबद्ध नहीं होंगे, आदि यदि आप कहीं भी लिखे जा रहे हैं तो आप भ्रष्ट या लापता डेटा के साथ समाप्त हो सकते हैं। VLC शायद उन चीजों में से कोई भी नहीं कर रहा है, लेकिन मैं मानने से पहले समस्या को समझने की कोशिश करूंगा।
केविन

1
BTW, 99% समस्याएं जो मुझे वीएलसी के साथ लटकी हुई थीं और अन्य "अजीब सामान" करने के कारण थे, यह वीडियो डिकोडिंग के लिए हार्डवेयर त्वरण का उपयोग करने की कोशिश कर रहा था, या "गलत" (जो भी मतलब हो सकता है) वीडियो बैकएंड का उपयोग कर; मैं उस सामान के साथ फील करने की कोशिश करूंगा (कोडेक्स के लिए एचडब्ल्यू त्वरण अक्षम करें, वीडियो आउटपुट बैकएंड को बदलने की कोशिश करें) और देखें कि क्या इससे कुछ भी अच्छा आता है।
माटेओ इटालिया

जवाबों:


10

मैं VLC खिलाड़ी के साथ समान समस्या का सामना कर रहा हूं। लेकिन अंतर यह है कि मैं इसे अक्सर उपयोग कर रहा हूं। इस समस्या के लिए Ubuntu 16.04 पर एकता के साथ एक संभव (पूरी तरह से प्रमाणित नहीं) समाधान है।

इस उत्तर के अनुसार हम परीक्षण कर सकते हैं कि वहाँ एक रनिंग एप्लीकेशन डेस्कटॉप फ़ाइल है जिसका नाम vlcया तो है। अगर कोई नहीं है तो हम सभी VLC की प्रक्रियाओं को मारने की कोशिश कर सकते हैं। इस प्रयोजन के लिए, एक निष्पादन योग्य फ़ाइल बनाएं, जिसका नाम है ~/bin/vlc-killer.sh, और निम्न पंक्तियों को इसकी सामग्री के रूप में जोड़ें (यहां निर्यात किए गए दूतों के बारे में एक संदर्भ है ):

#!/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
यदि मैं सही हूं तो यह तभी काम करता है जब कम से कम एक उदाहरण vlcGUI के माध्यम से शुरू किया गया हो। यदि आप vlc movie.mpgकमांड लाइन से पूरी तरह से चलाने के लिए उपयोग किए जाते हैं (जैसे मैं हूं) तो यह vlcएक मिनट के बाद प्रक्रिया को मार देगा । हालांकि, अच्छा समाधान और +1 वैसे भी।
पर्लडक

2
@PerlDuck, जबकि एक सक्रिय VLC "आइकन" ( डैश लॉन्चर में ) स्क्रिप्ट काम करता है, कोई फर्क नहीं पड़ता कि VLC .desktop फ़ाइल या CLI द्वारा शुरू किया गया है।
पा ०४०80०

1
ओह बढ़िया। मुझे इसकी जानकारी नहीं थी।
19
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.