मैं कुछ स्टार्टअप एप्लिकेशन को स्थगित / विलंब करके लॉगिन करने में लगने वाले समय को कैसे कम कर सकता हूं?


11

मैंने कुछ एप्लिकेशन को प्रत्येक लॉगिन पर स्टार्टअप के लिए सेटअप किया है (उदाहरण के लिए, redshift-gtk, gtg) स्वचालित रूप से लेकिन स्टार्टअप अनुप्रयोगों में इनको जोड़ने के बाद ( System -> Preferences -> Startup Applications) जाहिर है लॉगिन करने में लगने वाला समय बढ़ गया है। यह सब समय के कारण मेरे पैनलों, डेस्कटॉप आदि को प्रदर्शित होने में बहुत लंबा है - जब तक कि मैं प्रतीक्षा करने के लिए मजबूर हूं।

मुझे इन ऐप्स को तुरंत उपलब्ध होने की आवश्यकता नहीं है, लेकिन यह अच्छा होगा यदि वे अंततः स्टार्टअप करते हैं, इस बीच अन्य एप्लिकेशन चलाने के लिए ubuntu मेनू / पैनल उपलब्ध है, जिनकी मुझे आवश्यकता हो सकती है।

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

क्या यह niceकमांड किसके लिए उपयोग किया जाता है? कोई अन्य विचार कि मैं इसे कैसे पूरा कर सकता हूं? यदि संभव हो तो, मैं स्टार्टअप एप्लिकेशन कमांड को संपादित करने से बचना चाहूंगा, क्योंकि इसका मतलब होगा कि मैं जिन अन्य मशीनों का उपयोग करता हूं, उन्हें दोहराने के लिए बहुत प्रयास करना होगा।


@ ऋचा मुरारी - आप सही कह रहे हैं। मैंने अपने इरादे को बेहतर बनाने के लिए अब अपना प्रश्न शीर्षक संपादित किया है।
k:47 बजे

यदि आप पहले से ही नहीं हैं, तो मैं स्टार्टअप कार्यक्रमों और सेवाओं को भी ट्रिम करना सुनिश्चित करूँगा।
एपर्सन

जवाबों:


11

आपके डेस्कटॉप को लोड करने के लिए प्रतीक्षा करने के लिए आवश्यक सेकंड की संख्या मनमानी है और स्थिति के आधार पर बदल सकती है। इसके बजाय sleep, ही स्टार्टअप अनुप्रयोगों को चलाने के रूप में प्रणाली लोड मना कर दिया है निम्नलिखित का उपयोग करके देखें:

(संपादित करें: जोड़ा गया कौशिक का सुझाव।)

#!/bin/bash
# 
# Delays running an application until the system load has declined.
# 
# Usage:
#   run-when-load-low 'your command here'

echo "export DISPLAY=$DISPLAY; $1 &" | batch

exit 0

इसे सहेजें ~/bin/run-when-load-lowऔर run-when-load-low 'COMMAND'स्टार्टअप अनुप्रयोग प्राथमिकता में जोड़ें ।

इस विधि पर नोट्स:

  • ऊपर की स्क्रिप्ट मेरे लिए काम की है। यह केवल DISPLAYआवेदन करने के लिए पर्यावरण चर गुजरता है । के लिए सबसे डेस्कटॉप अनुप्रयोग इस सभी की जरूरत होगी। उस के साथ, किसी भी विशेष मामलों पर विचार करना सुनिश्चित करें और किसी भी समस्या का निवारण करते समय इस तथ्य को ध्यान में रखें जो सही व्यवहार नहीं कर रहा है। शुरू करने के लिए एक अच्छी जगह अगर आपको लगता है कि एक आवेदन को अन्य पर्यावरण चर की आवश्यकता हो सकती है printenvऔर आवेदन के दस्तावेज हैं, हालांकि मैं व्यक्तिगत रूप से अभी तक इस समस्या में नहीं आया हूं।
  • सिस्टम "लोड" मान के बारे में मेरी समझ यह है कि इसे IO प्रतीक्षा में ध्यान में रखा जाता है, इसलिए विलंबित एप्लिकेशन को CPU प्रक्रियाओं के दौरान बहुत जल्द शुरू नहीं करना चाहिए क्योंकि डेस्कटॉप प्रक्रियाएं IO की प्रतीक्षा कर रही हैं। यह एक ऐसा क्षेत्र नहीं है जिसके बारे में मैं बहुत कुछ जानता हूं, लेकिन अगर मैं यहां गलत हूं तो कृपया मुझे सुधारें।
  • batchकेवल तभी प्रभावित होता है जब अनुप्रयोग चलाए जाते हैं; यह उनकी प्राथमिकता / निष्पक्षता में परिवर्तन नहीं करता है।
  • यह कहे बिना जाना चाहिए, लेकिन यदि आपके सिस्टम में हमेशा अधिक लोड होता है, तो इस पद्धति का उपयोग करके निर्धारित एप्लिकेशन कभी भी नहीं चल सकते हैं।
  • यदि आपको किसी ऐसे पैरामीटर वाले एप्लिकेशन को चलाने की आवश्यकता है जिसमें रिक्त स्थान हैं, तो आप बैकस्लैश का उपयोग करके उनसे बच सकते हैं run-when-load-low 'gedit My\ Notes.txt':। यदि आपको वास्तव में अपने आवेदन में एकल-उद्धृत मापदंडों को पारित करने की आवश्यकता है, तो आपको स्टार्टअप कमांड में दोहरे उद्धरण चिह्नों का उपयोग करना होगा run-when-load-low "gedit 'My Notes.txt'":। इससे अधिक जटिल किसी भी चीज के लिए, आप शायद अपने कमांड की हार्ड-कोडेड स्क्रिप्ट की एक प्रति को संशोधित करने के लिए सबसे अच्छा कर रहे हैं।

aendruk, धन्यवाद। यह इष्टतम दृष्टिकोण की तरह लगता है। 2 संदेह बना रहता है, क्या मेरे वर्तमान परिवेश के उन अनुप्रयोगों के लिए केवल वही परिवर्तन है जो मेरे द्वारा पारित नहीं किया गया है batch? इसके अलावा, क्या यह संभव है कि डेस्कटॉप के पूरी तरह से लोड होने से पहले सीपीयू लोड कम हो जाए (जैसे, कुछ आइकन लोड होने के लिए डिस्क की प्रतीक्षा कर रहे हैं) और इन ऐप्स को पहले जैसी ही स्थिति में परिणाम मिलना शुरू हो जाता है? दूसरे शब्दों में, क्या बैच के साथ चलने वाले कमांड स्वाभाविक रूप से कम प्राथमिकता वाले होते हैं, जब अन्य ऐप चलाना चाहते हैं?
कौशिक

@koushik इन बिंदुओं को लाने के लिए धन्यवाद। मैंने उन्हें संबोधित करने के लिए अपना उत्तर अपडेट कर दिया है।
ændrük

भयानक, मैं थोड़ी देर के लिए इस समस्या का हल ढूंढ रहा था।
13

1
यह अब वास्तव में मुझे लॉगिन करने के लिए समय कम करने में मदद कर रहा है। बस इन ऐप्स के बराबर बने रहने के लिए, अंततः शुरू होने के बाद, जब मैंने ये ऐप वास्तव में चलाए, तो मुझे सूचित करने के लिए मैंने आपकी स्क्रिप्ट को थोड़ा संशोधित किया। साथ ही जब तक प्रक्रिया पृष्ठभूमि की ओर अग्रसर नहीं होती है, तब भी यह batchकतार में बनी रहती है क्योंकि अभी भी चल रही है, इसलिए मैंने पृष्ठभूमि में भी प्रक्रिया को स्टार्टअप बना दिया। संशोधित पंक्ति इस प्रकार है:echo "export DISPLAY=$DISPLAY; notify-send 'Running on Load low' '$1' && $1 &" | batch
koushik

1
@ andndrük मैं हमेशा ग्रीकाट के विकी का उल्लेख करता हूं जब मैं उद्धरण और अन्य 'सर्वोत्तम प्रथाओं' के बारे में अनिश्चित होता हूं।
एपर्सन

5

मैंने पाया कि sleep 10 && COMMANDकमांड नाम के रूप में बस काम नहीं किया। मेरे पास शंकु और xchat दोनों लोड करने के मुद्दे बहुत जल्दी थे और किसी तरह भ्रष्ट हो गए थे। मुझे एक छोटी सी स्क्रिप्ट लिखनी थी ~/bin/startupऔर उसमें यह लिखा था :

#!/bin/bash
sleep 10
xchat &
conky &

आपको इसकी अनुमतियों को बदलने की आवश्यकता है जिसके साथ निष्पादित होने की अनुमति है chmod +x ~/bin/startupऔर फिर बस स्टार्ट-अप एप्लिकेशन प्रविष्टि को कमांड के साथ बदलें startupऔर यह स्क्रिप्ट में सब कुछ बंद कर देगा।

यदि आप इस तरह से इच्छुक थे तो आपके पास प्रत्येक एप्लिकेशन के लिए एक फ़ाइल हो सकती है।


इसके अतिरिक्त आप फ़ाइल या फ़ोल्डर को एक अवधि (जैसे ~ / .bin / स्टार्टअप) के साथ उपसर्ग कर सकते हैं, इसलिए यह छिपा हुआ है, दूसरे शब्दों में आप इसे तब नहीं देखते हैं जब आप अपने फ़ोल्डर में nautilus, आदि में देखते हैं (अच्छी तरह से ctrl + h टॉगल दिखा रहा है)
8128

मुझे इस तरह के समाधान से परेशानी हुई है, कभी-कभी यह काम करेगा, कभी-कभी यह काम नहीं करेगा। इसके अलावा, नींद निश्चित रूप से आपके डेस्कटॉप बूटिंग में देरी करेगी।
लेवेस्क

1
sleepहोगा नहीं बूटिंग देरी। स्टार्ट-अप एप्लिकेशन गैर-अवरोधक हैं जिसका अर्थ है कि एक से अधिक चीजों को एक ही बार में लोड किया जा सकता है। sleepआईएनजी शेष सूक्ति को लोड करने और फिर कम-आवश्यक चीजों को लोड करने की अनुमति देता है ।
ओली

2

'स्लीप' कमांड का उपयोग करें।

सिस्टम में - वरीयताएँ -> स्टार्टअप अनुप्रयोग, उन कार्यक्रमों के लिए कमांड को संपादित करें जिन्हें आप देरी करना चाहते हैं:

sleep 10 && COMMAND

मूल रूप से कमांड बॉक्स में जो कुछ था, उसे प्रतीक्षा करने के लिए 10 सेकंड के साथ प्रतिस्थापित करें।


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

मुझे यह पता नहीं था कि प्रत्येक प्रक्रिया समाप्त होने के लिए लॉगिन प्रक्रिया का इंतजार किया जाता है। शायद बस COMMAND &(पृष्ठभूमि में रन) का उपयोग करना काम करेगा।
DV3500ea

1
क्षमा करें, मेरा गलत: लॉगिन प्रक्रिया लौटने के लिए प्रत्येक और प्रत्येक स्टार्टअप कमांड की प्रतीक्षा नहीं करता है। जब तक आप प्रश्न पाठ को संपादित नहीं करते हैं, तब तक मैं अपना पदावनति नहीं निकाल सकता ...
रिकार्डो मुरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.