Bazı başlangıç ​​uygulamalarını erteleyerek / geciktirerek oturum açma süresini nasıl azaltabilirim?


11

Ben her oturum açma (örneğin, redshift-gtk, gtg) otomatik olarak başlatmak için bazı uygulamalar ayarladım ama bu başlangıç ​​uygulamaları ( System -> Preferences -> Startup Applications) ekledikten sonra açık oturum açma için zaman arttı. Tüm bunlardan dolayı, panellerimin, masaüstü vb.'nin görünmesi için geçen süre çok uzun - beklemeye zorlandım.

Bu uygulamaların hemen kullanılabilir olmasına gerek yok, ancak sonunda başlayacaklarsa iyi olur, bu arada ubuntu menüsü / paneli ihtiyacım olabilecek diğer uygulamaları çalıştırmak için kullanılabilir.

Komutları sıraya koymak için tüm başlangıç ​​uygulamalarını düzenlemek amacıyla komutta kullanmayı denedim, ancak uygulamalar gerekli ortam değişkenlerini (DISPLAY gibi) almadığı için bu işe yaramadı.

Bu hangi nicekomut için kullanılır? Bunu nasıl başarabileceğim konusunda başka bir fikrim var mı? Mümkünse, başlangıç ​​uygulamaları komutlarını düzenlemekten kaçınmak istiyorum, çünkü bu, kullandığım diğer makinelerde çoğaltma yapmak için çok çaba gerektirecektir.


@Riccardo Murri - Haklısın. Şimdi niyetimi daha iyi ifade etmek için soru başlığımı düzenledim.
koushik

Henüz yapmadıysanız, başlangıç ​​programlarını ve hizmetleri de kestiğinizden emin olurum.
aperson

Yanıtlar:


11

Masaüstünüzün yüklenmesini beklemek için gereken saniye sayısı isteğe bağlıdır ve duruma göre değişebilir. Bunun yerine sleep, sistem yükü azaldığında başlangıç ​​uygulamalarını çalıştırmak için aşağıdakileri kullanmayı deneyin:

(Düzenle: Koushik'in önerisi eklendi.)

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

Farklı kaydedin ~/bin/run-when-load-lowve run-when-load-low 'COMMAND'Başlangıç ​​Uygulamaları Tercihleri'ne ekleyin .

Bu yönteme ilişkin notlar:

  • Yukarıdaki senaryo benim için işe yaradı. Yalnızca DISPLAYortam değişkenini uygulamaya geçirir . İçin en masaüstü uygulamaları bu tek ihtiyacınız olacaktır. Bununla birlikte, doğru davranmayan herhangi bir sorunu giderirken özel durumları dikkate aldığınızdan ve bu gerçeği aklınızda bulundurduğunuzdan emin olun. Bir uygulamanın diğer ortam değişkenlerine ihtiyaç duyabileceğini düşünüyorsanız, başlamak için iyi bir yer printenvve kişisel olarak bu sorunla karşılaşmamış olmama rağmen uygulamanın belgeleri.
  • Sistem "yük" değeri anlayışım, IO beklemelerini dikkate almasıdır, bu nedenle gecikmeli uygulamalar, IO'da bekleyen masaüstü işlemlerinin neden olduğu CPU kullanım gecikmeleri sırasında yanlışlıkla çok erken başlamamalıdır. Bu, hakkında çok şey bildiğim bir alan değil, bu yüzden burada yanılıyorsam lütfen beni düzeltin.
  • batchSadece etkiler zaman uygulamaları çalıştırmak vardır; öncelik / niteliklerini değiştirmez.
  • Bu söylemeden geçmelidir, ancak sisteminizde her zaman yüksek bir yük varsa, bu yöntemi kullanarak planlanan uygulamalar asla çalışmayabilir.
  • Boşluk içeren bir parametreyle bir uygulama çalıştırmanız gerekiyorsa, ters eğik çizgi: kullanarak bunlardan kaçabilirsiniz run-when-load-low 'gedit My\ Notes.txt'. Gerçekten uygulamaya tek tırnaklı parametrelerini geçirmek için gerekirse, başlangıç komut çift tırnak kullanmak gerekecektir: run-when-load-low "gedit 'My Notes.txt'". Bundan daha karmaşık bir şey için, komutun bir kodunu sabit kodlanmış olarak değiştirmeniz en iyisidir.

aendruk, teşekkürler. bu en uygun yaklaşım gibi geliyor. Şüphe var, DISPLAY mevcut ortamımdaki uygulamalar tarafından ihtiyaç duyulmayan tek değişken batchmi? Ayrıca, masaüstünün tamamen yüklenmesi bitmeden (örneğin, bazı simgelerin yüklenmesini beklerken) cpu yükünün azalması ve bu uygulamaların daha önce olduğu gibi benzer bir duruma neden olmaya başlaması olası mı? Diğer bir deyişle, komutlar, diğer uygulamalar çalıştırmak istediğinde verim toplu olarak daha düşük önceliğe sahip mi?
koushik

@koushik Bu puanları getirdiğin için teşekkürler. Cevabımı onlara hitap etmek için güncelledim.
ændrük

Harika, bir süredir bu soruna bir çözüm arıyordum.
levesque

1
Bu, şimdi giriş yapma süresini azaltmama gerçekten yardımcı oluyor. Sonunda bu uygulamalardan haberdar olmak için, bu uygulamalar gerçekten çalıştığında beni bilgilendirmek için komut dosyanızı biraz değiştirdim. Ayrıca işlem arka plana çatal sürece, batchhala çalışıyor olarak kuyrukta kalır , bu yüzden de arka planda işlem başlatma yaptı. Değiştirilmiş çizgi aşağıdaki gibidir:echo "export DISPLAY=$DISPLAY; notify-send 'Running on Load low' '$1' && $1 &" | batch
koushik

1
@ ændrük Alıntıdan ve diğer 'en iyi uygulamalardan' emin olmadığımda daima Greycat'in wiki'sinden söz ediyorum.
aperson

5

Sadece sleep 10 && COMMANDkomut ismi olarak kullanmanın işe yaramadığını fark ettim . Ben hem conky hem de xchat çok erken yükleme ve bir şekilde bozuk alma ile ilgili sorunlar vardı. Ben denilen küçük bir senaryo yazmak ~/bin/startupve bunu koymak zorunda kaldı:

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

Yürütülmesine izin vermek için izinlerini değiştirmeniz chmod +x ~/bin/startupve ardından başlangıç ​​uygulamaları girişini komutla değiştirmeniz gerekir startupve komut dosyasındaki her şeyi tetikler.

Bu şekilde eğimli olsaydınız her uygulama için bir dosyaya sahip olabilirsiniz.


Ek olarak, dosyaya veya klasöre bir nokta (örneğin, ~ / .bin / startup) önekini ekleyebilirsiniz, böylece gizlenir, başka bir deyişle nautilus, vb. Klasörlerinize baktığınızda göremezsiniz (iyi ctrl + h göster)
8128

Böyle bir çözümle ilgili sorun yaşadım, bazen işe yarayacak, bazen işe yaramayacak. Ayrıca, uyku kesinlikle masaüstü önyüklemenizi geciktirir.
levesque

1
sleepOlacak değil önyükleme geciktirir. Başlangıç ​​uygulamaları tıkanmaz, yani aynı anda birden fazla şeyin yüklenebileceği anlamına gelir. sleeping Cüce geri kalanı yüklenir ve sağlayan sonra daha az uçucu şeyleri yükleyin.
Oli

2

'Uyku' komutunu kullanın.

Sistem -> Tercihler -> Başlangıç ​​Uygulamaları bölümünde, geciktirmek istediğiniz programların komutunu düzenleyin:

sleep 10 && COMMAND

10'u beklemek istediğiniz saniye sayısı ile değiştirin ve orijinal olarak komut kutusundaki ile COMMAND.


Lütfen tam soru metnini okuyun: OP, uygulamaların başlatılmasının çok uzun sürdüğünden şikayet ediyor ve bunları giriş işleminden "ayırmanın" bir yolunu istiyor ("Bu uygulamaların hemen kullanılabilir olmasına ihtiyacım yok, ama iyi olurdu eğer sonunda başlarlarsa "). Önüne bir "uyku" eklemek başlangıç ​​zamanını büyütür.
Riccardo Murri

Her komutun bitmesini bekleyen giriş işleminin farkında değildim. Belki sadece COMMAND &(arka planda çalıştır) kullanmak işe yarayabilir.
dv3500ea

1
Maalesef yanılıyorum: giriş işlemi her başlangıç ​​komutunun geri dönmesini beklemiyor. Ne yazık ki, soru metnini düzenlemediğiniz sürece downvote'umu kaldıramıyorum ...
Riccardo Murri
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.