Některé aplikace jsem nastavil tak, aby se spouštěly při každém přihlášení (např. redshift-gtk, gtg) automaticky, ale poté, co jsem je přidal do spouštěcích aplikací (System -> Preferences -> Startup Applications
) evidentně se doba potřebná k přihlášení prodloužila. Kvůli tomu všemu je čas, který trvá, než se mé panely, plocha atd. objeví, příliš dlouhý – na což jsem nucen čekat.
Nepotřebuji, aby byly tyto aplikace k dispozici okamžitě, ale bylo by dobré, kdyby se nakonec spustily, zatímco nabídka/panel ubuntu je k dispozici pro spouštění dalších aplikací, které bych mohl potřebovat.
Zkoušel jsem použít příkaz at s úmyslem upravit všechny spouštěcí aplikace tak, aby byly příkazy zařazeny do fronty at, ale nefungovalo to, protože aplikace nezískávají potřebné proměnné prostředí (jako DISPLAY).
Je to to, co nice
příkaz se používá pro? Nějaké další nápady, jak toho mohu dosáhnout? Pokud je to možné, rád bych se vyhnul úpravám příkazů spouštěcích aplikací, protože by to znamenalo velké úsilí při replikaci na jiných počítačích, které používám.
Přijatá odpověď:
Počet sekund potřebných k čekání na načtení plochy je libovolný a může se měnit v závislosti na situaci. Místo sleep
, zkuste použít následující ke spuštění spouštěcích aplikací, jakmile se zatížení systému sníží:
(Edit:Přidán koushikův návrh.)
#!/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
Uložte jej jako ~/bin/run-when-load-low
a přidejte run-when-load-low 'COMMAND'
v Předvolbách spouštění aplikací.
Poznámky k této metodě:
- Mně se osvědčil výše uvedený skript. Předává pouze
DISPLAY
proměnnou prostředí k aplikaci. Pro většinu desktopové aplikace to bude vše, co budete potřebovat. S tím, co bylo řečeno, nezapomeňte zvážit všechny zvláštní případy a mějte na paměti tuto skutečnost při odstraňování problémů s něčím, co se nechová správně. Dobrým místem, kde začít, pokud si myslíte, že aplikace může potřebovat předat jiné proměnné prostředí, jeprintenv
a dokumentaci aplikace, i když osobně jsem se s tímto problémem ještě nesetkal. - Hodnotu „zatížení“ systému chápu tak, že bere v úvahu čekání na vstup/výstup, takže zpožděné aplikace by se neměly náhodně spustit příliš brzy během přestávek ve využití procesoru způsobených procesy na ploše čekajícími na vstup/výstupu. Toto není oblast, o které toho moc vím, takže mě prosím opravte, pokud se zde mýlím.
batch
ovlivní pouze kdy aplikace jsou spuštěny; nemění to jejich prioritu/příjemnost.- To by mělo být samozřejmé, ale pokud váš systém vždy má vysoké zatížení, aplikace naplánované pomocí této metody se nemusí nikdy spustit.
- Pokud potřebujete spustit aplikaci s parametrem, který obsahuje mezery, můžete je ukončit pomocí zpětného lomítka:
run-when-load-low 'gedit My\ Notes.txt'
. Pokud opravdu potřebujete předat své aplikaci parametry v jednoduchých uvozovkách, budete muset v příkazu pro spuštění použít dvojité uvozovky:run-when-load-low "gedit 'My Notes.txt'"
. V případě čehokoli složitějšího, než je toto, je pravděpodobně nejlepší upravit kopii skriptu pomocí pevně zakódovaného příkazu.