मैं एक आवेदन की प्रक्रिया का नाम कैसे निर्धारित करूं?


13

यह स्थिति है:

यूनिटी क्विक लिस्ट के संपादक के अगले संस्करण पर काम करते हुए, मैं लॉन्चर आइकन "रीस्टार्टिंग" का एक विश्वसनीय तरीका जोड़ना चाहूंगा। ऐसा करने के लिए, मुझे आइकन (gsettings संपादन) को हटाने और इसे उसी स्थिति पर प्रतिस्थापित करने की आवश्यकता है। अब तक कोई समस्या नहीं। हालाँकि, यदि एप्लिकेशन विचाराधीन है, तो उपयोगकर्ता संभवतः डेटा खो देगा, क्योंकि लॉन्चर से आइकन हटाए जाने पर एप्लिकेशन छोड़ देगा। क्या मैं जरूरत है एक विश्वसनीय तरीका एक आवेदन की प्रक्रिया नाम खोजने के लिए, प्रक्रियाओं यदि आवेदन चल रहा है चल रहा है की सूची में संपादक की जांच करते हैं, और उपयोगकर्ता के लिए एक चेतावनी संदेश भेज कि आइकन को पुन: प्रारंभ नहीं किया जा सकता है , तो अनुप्रयोग है चल रहा है।

मैंने अब तक क्या किया है कि एडिटर को डेस्कटॉप फाइल में देखें, कमांड को पढ़ने के लिए, कमांड को पढ़ने के लिए, डायरेक्ट्री सेक्शन को छीनने के साथ-साथ संभव है कि डेस्कटॉप फाइल कमांड को देखें, जो स्टार्टिंग स्ट्रिंग्स की तलाश कर रहा है। साथ में "।/"

यद्यपि यह विधि उन सभी अनुप्रयोगों के साथ अच्छी तरह से काम करती है, जिन पर मैंने इसका परीक्षण किया, मुझे लगता है कि समस्या को "सभी में एक" तरीके से कवर करने का एक आसान तरीका होना चाहिए ...

है?

इसके अलावा अधिक असाधारण स्थितियों को पकड़ने के लिए सुझावों का स्वागत है!


लॉन्चर से उसका आइकन हटाए जाने पर कोई एप्लिकेशन क्यों छोड़ देगा? लॉन्चर में पिन नहीं किए जाने वाले एप्लिकेशन को छोड़ने से उसका आइकन हटा दिया जाता है, लेकिन आइकन को हटाने से एप्लिकेशन को क्यों हटाया जाएगा?
एलियाह कगन

@ एलियाह: छोड़ने शायद सही अभिव्यक्ति नहीं है, आवेदन बस दुर्घटनाओं ....
याकूब Vlijm

@JacobVlijm तो, यह एकता विशिष्ट अधिकार है? एकता में पहले से ही इसके लिए तंत्र है। क्या आवश्यकताएं हैं? केवल प्रक्रिया नाम को ही psऔर xpropआउटपुट में जानना है ?
सेर्गेई कोलोडियाज़नी

@Serg .desktopफ़ाइल से प्रक्रिया का नाम, "गणना" , जो जरूरी नहीं कि WM_CLASS हो। WM_CLASS को एप्लिकेशन के भीतर से सेट किया जा सकता है।
बजे जैकब व्लिजम

@JacobVlijm आह, तो मान लीजिए आपने शुरू किया firefox.desktop, यह पीआईडी ​​1234 के साथ फ़ायरफ़ॉक्स लॉन्च करता है, लेकिन WM_CLASS'टोटली नॉट फ़ायरफ़ॉक्स' जैसी चीज़ में बदल गया। .desktopफ़ाइल लेकिन नहीं बदलता है। आप बिना परवाह किए पीआईडी ​​1234 से जुड़ा नाम प्राप्त करना चाहते हैं WM_CLASS। मुझे लगता है कि मुझे वही देखना है जो करने की जरूरत है। लेकिन आपने मेरे पहले सवाल का जवाब नहीं दिया - क्या यह केवल एकता के लिए ठीक है?
सर्गी कोलोडियाज़नी

जवाबों:


3

सामान्य मामले में इसे हल करने का कोई तरीका नहीं है। आप जिस भी तंत्र के साथ आते हैं, मेरा मानना ​​है कि यह हमेशा एक ऐसी प्रक्रिया को लिखना संभव होगा जो आपको निरस्त कर देगा, जब तक कि आप उस तरीके को संशोधित नहीं करते हैं कि प्रक्रियाएं पहले से ही उस तरह से ट्रैक करने के लिए लॉन्च की जाती हैं।

अगर डेमॉन अभी भी चल रहे हैं तो अपस्टार्ट को उसी समस्या से निपटना होगा, और अपस्टार्ट जॉब लेखकों को ट्रैक करने के लिए अपटार्ट के लिए विवरण (कांटे की संख्या) निर्दिष्ट करना होगा। यह देखते हुए कि ऊपरवाला मदद के बिना इसे प्रबंधित नहीं कर सकता, मुझे नहीं लगता कि आप या तो कर सकते हैं। और अपस्टार्ट यहां तक ​​कि नियंत्रण में है कि प्रक्रियाएं लॉन्च की जाती हैं, जो मुझे नहीं लगता कि आप यहां हैं।

मुझे लगता है कि आप वही कर सकते हैं जो आप पहले से कर रहे हैं। देख रहे हैं /proc/<pid>/statऔर /proc/<pid>/cmdlineएक सामान्य तरीका है, लेकिन फिर भी हर मामले को नहीं पकड़ेंगे। pgrepआदेश इस गिर्द घूमती है। यदि आप पहले से उपयोग नहीं कर रहे हैं pgrep, तो उन चीज़ों के विकल्पों के लिए pgrep मैनपेज पर एक नज़र डालें जिनके खिलाफ आप मिलान कर सकते हैं।

यह सब कहने के बाद, मुझे विश्वास नहीं हो रहा है कि आपको वास्तव में ऐसा करने की आवश्यकता है। यदि आप इस प्रक्रिया को ट्रैक नहीं कर सकते, तो मैं नहीं देखता कि एकता यह कैसे कर सकती है। क्या पहले स्थान पर एप्लिकेशन क्रैश को समाप्त करने के लिए बेहतर तरीका नहीं होगा? मैं इस बात पर गौर करूंगा कि आपके एप्लिकेशन क्रैश क्यों हो रहे हैं (निश्चित रूप से यह एक बग कहीं है?), बजाय इसके चारों ओर काम करने की कोशिश करने के जैसा कि आपने वर्णन किया है। मुझे आश्चर्य है कि अगर यह केवल एकता-जागरूक अनुप्रयोगों को प्रभावित करता है जो DBus के माध्यम से अतिरिक्त कार्यक्षमता के लिए एकता को वापस बुला रहे हैं ?


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

1

xpropआदेश (प्रासंगिक एप्लिकेशन विंडो के लिए आल्ट-टैब के बाद, तो विंडो में एक बार क्लिक करें) मेरे लिए चाल कर रहा है।


WM_CLASSअक्सर प्रक्रिया के नाम से मेल खाता है, लेकिन निश्चित रूप से हमेशा नहीं। एक विंडो को परिभाषित करना (कोडिंग), मैं इसे वह दे सकता WM_CLASSहूं जो मैं चाहता हूं। यहां तक ​​कि यह खुद को एक लॉन्चर आइकन में विभिन्न प्रक्रियाओं, समूह से चलने वाली खिड़कियां बनाने के लिए किया था।
याकूब Vlijm

ओह। कि एक शर्म की बात है। यह मेरे अस्वीकरण को जोड़ने के लायक था "... अंत में मेरे लिए चाल करने के लिए लगता है"। यह एक ऐसा कार्य है जो मुझे वास्तव में ऑपरेटिंग सिस्टम में निर्मित होने की उम्मीद है, और मुझे लगा कि मुझे नहीं पता कि यह कैसे करना है। बहुत कम से कम, मैं "के बारे में" जानकारी की उम्मीद करूंगा।
el_gallo_azul
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.