GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Wie kann die Anmeldezeit verkürzt werden, indem einige Startanwendungen verschoben/verzögert werden?

Ich habe einige Anwendungen so eingerichtet, dass sie bei jeder Anmeldung (z. B. redshift-gtk, gtg) automatisch gestartet werden, aber nachdem ich diese zu Startanwendungen hinzugefügt habe (System -> Preferences -> Startup Applications ) offensichtlich hat sich die Anmeldezeit erhöht. Aus diesem Grund dauert es zu lange, bis meine Panels, mein Desktop usw. angezeigt werden – bis zu dem ich gezwungen bin zu warten.

Ich brauche diese Apps nicht, um sofort verfügbar zu sein, aber es wäre gut, wenn sie irgendwann starten würden, in der Zwischenzeit ist das Ubuntu-Menü/-Bedienfeld verfügbar, um andere Apps auszuführen, die ich möglicherweise brauche.

Ich habe versucht, den at-Befehl zu verwenden, mit der Absicht, alle Startanwendungen zu bearbeiten, um die Befehle in die at-Warteschlange zu stellen, aber das hat nicht funktioniert, da die Apps nicht die erforderlichen Umgebungsvariablen (wie DISPLAY) erhalten.

Ist das was nice Befehl wird verwendet? Irgendwelche anderen Ideen, wie ich das erreichen kann? Wenn möglich, möchte ich vermeiden, die Startbefehle der Anwendungen zu bearbeiten, da dies viel Aufwand bedeuten würde, um sie auf anderen von mir verwendeten Computern zu replizieren.

Akzeptierte Antwort:

Die Anzahl der Sekunden, die Sie zum Laden Ihres Desktops benötigen, ist beliebig und kann sich je nach Situation ändern. Statt sleep , versuchen Sie Folgendes, um Startanwendungen auszuführen, sobald die Systemlast zurückgegangen ist:

(Bearbeiten:Koushiks Vorschlag hinzugefügt.)

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

Speichern Sie es als ~/bin/run-when-load-low und fügen Sie run-when-load-low 'COMMAND' hinzu in den Einstellungen für Startanwendungen.

Hinweise zu dieser Methode:

  • Das obige Skript hat bei mir funktioniert. Es übergibt nur das DISPLAY Umgebungsvariable für die Anwendung. Für die meisten Desktop-Anwendungen, das ist alles, was Sie brauchen. Achten Sie jedoch darauf, alle Sonderfälle zu berücksichtigen, und denken Sie an diese Tatsache, wenn Sie Fehler beheben, die sich nicht richtig verhalten. Ein guter Ausgangspunkt, wenn Sie glauben, dass eine Anwendung andere Umgebungsvariablen benötigen könnte, ist printenv und die Dokumentation der Anwendung, obwohl ich persönlich noch nicht auf dieses Problem gestoßen bin.
  • Mein Verständnis des Systemlastwerts ist, dass IO-Wartezeiten berücksichtigt werden, sodass verzögerte Anwendungen während der CPU-Auslastungsflaute, die durch Desktop-Prozesse verursacht wird, die auf IO warten, nicht versehentlich zu früh gestartet werden sollten. Dies ist jedoch kein Bereich, in dem ich viel weiß, also korrigiere mich bitte, wenn ich hier falsch liege.
  • batch betrifft nur wann Anwendungen werden ausgeführt; es ändert nichts an ihrer Priorität/Nettigkeit.
  • Das sollte selbstverständlich sein, aber wenn Ihr System immer stark ausgelastet ist, werden Anwendungen, die mit dieser Methode geplant wurden, möglicherweise nie ausgeführt.
  • Wenn Sie eine Anwendung mit einem Parameter ausführen müssen, der Leerzeichen enthält, können Sie diese mit dem Backslash maskieren:run-when-load-low 'gedit My\ Notes.txt' . Wenn Sie Ihrer Anwendung wirklich Parameter in einfachen Anführungszeichen übergeben müssen, müssen Sie im Startbefehl doppelte Anführungszeichen verwenden:run-when-load-low "gedit 'My Notes.txt'" . Für alles, was komplizierter ist, ist es wahrscheinlich am besten, einfach eine Kopie des Skripts mit Ihrem fest codierten Befehl zu ändern.
Verwandte:Kann eine GUI-App nicht von Cron ausführen?
Ubuntu
  1. So deaktivieren Sie die Ubuntu 11.10-Gast-Anmeldesitzung

  2. So verbessern Sie die Startzeit von Anwendungen unter Linux

  3. Wie ändere ich die Sprache über ein Terminal?

  4. Wie füge ich Startanwendungen in Lubuntu hinzu?

  5. Wie ändere ich die Reihenfolge der Benutzer im Anmeldebildschirm?

So ändern Sie die Zeitzone auf Ihrem Ubuntu-System

So verwalten Sie Startanwendungen in Ubuntu 20.04 LTS

So fügen Sie eine Anwendung zur Liste der geöffneten Anwendungen in Ubuntu hinzu

Wie füge ich eine Anwendung zur Liste der mit Anwendungen geöffneten hinzu?

Wie mache ich Indicator-sysmonitor als Standardindikator auf dem Anmeldebildschirm?

Zeitanzeige zeigt Datum/Uhrzeit nicht an?