ArtWooD
Anmeldungsdatum: 8. Juni 2011
Beiträge: 34
|
Hallo, ich habe ein Script was ich gerne zum Download anbieten moechte.
Wenn ihr auch gerne die Screenlets aus den Paketquellen benutzt ist das sehr hilfreich um den Systemstart zu beschleunigen. Da manche Screenlets (z.B. Freemetoweather, oder Feedreader plus) auch Internetzugang benoetigen, macht es Sinn, wenn diese Screenlets erst starten nachdem Ubuntu den Internetzugang hergestellt hat. Das Script findet ihr im Anhang zum runterladen. Oder den Text kopieren und als .sh Datei im Texteditor speichern.
sleep 28s; /usr/share/screenlets-manager/screenlets-daemon.py &
sleep 4s; python -u /usr/share/screenlets/screenlets-pack-basic/Sysmonitor/SysmonitorScreenlet.py &
sleep 4s; python -u /usr/share/screenlets/screenlets-pack-basic/Lipik/LipikScreenlet.py &
sleep 4s; python -u /usr/share/screenlets/screenlets-pack-basic/FreemeteoWeather/FreemeteoWeatherScreenlet.py &
sleep 4s; python -u /home/max/.screenlets/FeedReaderPlus/FeedReaderPlusScreenlet.py Erklaerung: sleep gibt in sekunden an, wie lange mit dem Starten des Programmes dessen Pfad angegeben ist gewartet werden soll. Hier wird z.B. das Screenlet Hauptprogramm "screenlets-daemon.py" das im Ordner "/usr/share/screenlets-manager/screenlets-daemon.py" liegt, 28 Sekunden nach Systemstart gestartet. 4 Sekunden spaeter startet dann das "SysmonitoScreenlet.py" usw. Die Sekunden addieren sich hierbei, das zweite Screenlet wird 28+4=32 Sekunden nach Systemstart gestartet und das dritte 28+4+4=36 Sekunden nach Systemstart. So wird es benutzt: Einfach einen Ordner erstellen und das Script dort speichern. Ich habe es in
~/.local/bin
abgelegt. Danach in System → Startprogramme ein neues Startprogramm anlegen und das Script auswaehlen. Ich hoffe das ist verstaendlich, wenn nicht bitte nachfragen und ich werde weiter ergaenzen 😉
- late_start.sh (450 Bytes)
- Download late_start.sh
|
Ryuno-Ki
Anmeldungsdatum: 7. März 2011
Beiträge: 1105
Wohnort: Stuttgart
|
Ehm ... Fragen! Was passiert, wenn ich jetzt z.B. gar nicht diese Screenlets betreibe? (Ich weiß, ich kann den Code händisch abändern ... angenehmer wäre es, die bestehenden Screenlets abzufragen → irgendwo eine Liste zwischenspeichern?) Was passiert, wenn ich länger brauche, bis mein Internet steht? (Ich weiß, ich kann den Code händisch abändern ... eine "dynamischere" Zeitbestimmung wäre nett). ich heiße nicht max! → $HOME oder ~ verwenden, siehe Homeverzeichnis.
Jetzt bitte nicht gleich niedergeschmettert fühlen :S (JoWooD mag ich ^^) Ryu
|
ArtWooD
(Themenstarter)
Anmeldungsdatum: 8. Juni 2011
Beiträge: 34
|
Hallo Ryu, danke für deine Fragen ☺ Ich versuche so gut es geht diese zu beantworten.
1. Was passiert, wenn ich jetzt z.B. gar nicht diese Screenlets betreibe? (Ich weiß, ich kann den Code händisch abändern ... angenehmer wäre es, die bestehenden Screenlets abzufragen → irgendwo eine Liste zwischenspeichern?)
Was dann passiert das weiß ich nicht, weil ich das nicht ausprobiert habe und auch nicht ausprobieren werde. Das mit der Liste habe ich nicht wirklich verstanden? Aber ich bin kein Informatiker und programmieren kann ich nicht, auch wenn ich es gerne können würde. Ich kann nur ein ganz wenig VBA.
2. Was passiert, wenn ich länger brauche, bis mein Internet steht? (Ich weiß, ich kann den Code händisch abändern ... eine "dynamischere" Zeitbestimmung wäre nett).
Sicher wäre das nett, aber das liegt leider weit außerhalb meiner Möglichkeiten ☹ Wenn du das in diese Richtung ändern kannst, kannst du das gerne machen 😉
3. ich heiße nicht max! → $HOME oder ~ verwenden, siehe Homeverzeichnis.
Ja da hast du wohl recht! Ich habe da nicht genau aufgepasst und werde das ändern!
|
Ryuno-Ki
Anmeldungsdatum: 7. März 2011
Beiträge: 1105
Wohnort: Stuttgart
|
ArtWooD schrieb: Was dann passiert das weiß ich nicht, weil ich das nicht ausprobiert habe und auch nicht ausprobieren werde.
Es werden die von dir angegebenen Screenlets gestartet ... Das ist zumindest zu erwarten. Allerdings nicht im Sinne des Erfinders 😉 Gescriptet habe ich bisher auch kaum, aber einen Eingangsdialog sollte man vielleicht schon anbieten ...
Das mit der Liste habe ich nicht wirklich verstanden?
Na ja, stellen wir uns einmal vor, dass Script soll das erste Mal gestartet werden, wenn alle gewünschten Screenlets bereits auf dem Monitor zu sehen sind.
Dann kann man ja theoretisch (?) nach den geöffneten Screenlets suchen und diese in eine Datei schreiben lassen - als Liste. Alternativ per Eingabedialog (s.o.).
Aber ich bin kein Informatiker und programmieren kann ich nicht, auch wenn ich es gerne können würde. Ich kann nur ein ganz wenig VBA.
VBA möchte ich gerne noch lernen ☺
Sicher wäre das nett, aber das liegt leider weit außerhalb meiner Möglichkeiten ☹ Wenn du das in diese Richtung ändern kannst, kannst du das gerne machen 😉
Mir fehlt die Erfahrung dazu ...
Ja da hast du wohl recht! Ich habe da nicht genau aufgepasst und werde das ändern!
Dann war mein Feedback ja doch konstruktiv ☺
|
ArtWooD
(Themenstarter)
Anmeldungsdatum: 8. Juni 2011
Beiträge: 34
|
Es werden die von dir angegebenen Screenlets gestartet ... Das ist zumindest zu erwarten.
Allerdings nicht im Sinne des Erfinders 😉
Gescriptet habe ich bisher auch kaum, aber einen Eingangsdialog sollte man vielleicht schon anbieten ...
Ja das ist richtig es werden die Screenlets gestartet deren Pfad man in der Datei angibt. Aber wieso ist das nicht im Sinne des Erfinders? Und was für einen Eingangsdialog meinst du? Hier im Forum? In der Datei? Oder etwas ein Userinterface?
Na ja, stellen wir uns einmal vor, dass Script soll das erste Mal gestartet werden, wenn alle gewünschten Screenlets bereits auf dem Monitor zu sehen sind. Dann kann man ja theoretisch (?) nach den geöffneten Screenlets suchen und diese in eine Datei schreiben lassen - als Liste. Alternativ per Eingabedialog (s.o.).
Glaub mir, wenn ich das könnte würde ich das machen 😀 Ich war schon froh das es überhaupt funktioniert und wollte diese Möglichkeit anderen zur Verfügung stellen. Vielleicht findet sich ja noch jemand der das weiterprogrammieren kann??
Mir fehlt die Erfahrung dazu ...
Mir auch ☺ Ich kann meinen ersten Beitrag nicht mehr ändern ☹ oder geht das noch irendwie?
|
Ryuno-Ki
Anmeldungsdatum: 7. März 2011
Beiträge: 1105
Wohnort: Stuttgart
|
ArtWooD schrieb: Aber wieso ist das nicht im Sinne des Erfinders?
Weil nicht jeder die Screenlets gestartet haben möchte, die du bei dir startest 😉
Und was für einen Eingangsdialog meinst du? Hier im Forum? In der Datei? Oder etwas ein Userinterface?
Ein Userinterface. VBA-seitig kennst du so etwas vielleicht schon ... Es ploppt ein Fenster auf, in dem du Sachen eingibst (Okay, Eingabedialog hätte es eher beschrieben ... eingangs im Sinne von "am Anfang des Programms").
Glaub mir, wenn ich das könnte würde ich das machen 😀 Ich war schon froh das es überhaupt funktioniert und wollte diese Möglichkeit anderen zur Verfügung stellen. Vielleicht findet sich ja noch jemand der das weiterprogrammieren kann??
Mir fehlt die Erfahrung dazu ...
Mir auch ☺
Ich möchte ja nur Verbesserungsvorschläge anbringen ☺
Ich kann meinen ersten Beitrag nicht mehr ändern ☹ oder geht das noch irendwie?
Du könntest höchstens per PN oder Melden-Button einen Forenmoderator fragen. Alternativ: Zitieren → Unwesentliches Rausschneiden → Verbliebenes Bearbeiten und noch einmal posten ... Vorschau vielleicht vorher benutzen 😉 Ryu
|
Commander_Data
Anmeldungsdatum: 18. September 2011
Beiträge: Zähle...
|
Ich habe ein Skript geschrieben, das im Grunde die Funktion von ArtWooDs Skript enthält. Es bietet aber auch noch einen Konfigurationsdialog und prüft, welche Screenlets installiert sind. (Vorausgesetzt, es funktioniert. Ich habe es noch nicht mit echten Screenlets getestet, da ich solche gar nicht nutze. Ich programmiere einfach gerne. 😉) Vor der ersten Benutzung und wenn man die Liste der zu startenden Screenlets ändern will, ruft man
screenlets-late-start.sh --configure
auf. Danach kann man screenlets-late-start.sh z.B. in den Autostart eintragen. Die zweite Datei im Anhang (ein Shell-Skript-Zweizeiler) muss nach /etc/network/if-up.d/ kopiert und ausführbar gemacht werden. Programme in diesem Ordner werden ausgeführt, wenn eine Netzwerkverbindung aufgebaut wurde. Bislang sendet /etc/network/if-up.d/screenlets-late-start noch ein SIGTERM an das Skript. Eigentlich sollte SIGUSR1 verwendet werden, aber außer mit trap kommando 0 ("0" ist kein echtes Signal und bedeutet hier nur "Skript-/Prozess-Ende") habe ich es bislang noch nicht zum Laufen gebracht. Das schaue ich mir morgen noch einmal an. MfG, Data
- screenlets-late-start (147 Bytes)
- Download screenlets-late-start
- screenlets-late-start.sh (4.8 KiB)
- Download screenlets-late-start.sh
|
Ryuno-Ki
Anmeldungsdatum: 7. März 2011
Beiträge: 1105
Wohnort: Stuttgart
|
Sag Bescheid, wenn du meinst, dass man es testen könnte 😉
|
Commander_Data
Anmeldungsdatum: 18. September 2011
Beiträge: Zähle...
|
Ryuno-Ki schrieb: Sag Bescheid, wenn du meinst, dass man es testen könnte 😉
Bescheid ☺ Das mit den Signalen ist nicht perfekt, aber es sollte funktionieren. Es ist nur komisch, wenn das Skript aufgefordert wird, sich zu beenden und dann noch Screenlets startet. Das könnte dann evtl. auch so aussehen (nehme ich mal an): Es wurde keine Netzwerkverbindung hergestellt und der Benutzer meldet sich ab → mein Skript soll beendet werden → es startet die Netzwerk-abhängigen Screenlets. Bin bisher noch nicht dazu gekommen, mir das noch mal anzusehen. Edit: Problem behoben. Die (meisten) Signale werden anscheinend immer nur nach dem Ende eines Kommandos überprüft. Ich habe in Zeile 139 das sleep so angepasst, dass es nur noch 5 Sekunden schläft. Somit wird jetzt auf das SIGUSR1 innerhalb von 0-5 Sekunden reagiert. Das neue Ende von screenlets-late-start.sh:
| if [ "$(LC_ALL=C netstat -i | grep -Ev '^(Kernel Interface table|Iface|lo)' | wc -l)" = 0 ]; then
echo "$0: No network connection. Waiting."
trap "network; exit 0" USR1
while true; do
sleep 5 # sleep until we are signaled the network connection is up
done
else
network
fi
|
Der Befehl in /etc/network/if-up.d/screenlets-late-start:
| pkill -SIGUSR1 -fx '(.*/)?screenlets-late-start.sh'
|
Die neuesten Versionen der beiden Dateien sind angehängt.
- screenlets-late-start (156 Bytes)
- Download screenlets-late-start
- screenlets-late-start.sh (4.7 KiB)
- Download screenlets-late-start.sh
|
ArtWooD
(Themenstarter)
Anmeldungsdatum: 8. Juni 2011
Beiträge: 34
|
Hallo Commandaer Data, das ist ja grossartig was du hier gemacht hast! ☺ Ich haette das nie auf die Reihe bekommen. Heute werde ich dein neues Skript mal ausprobieren 😉 Vielen Dank fuer deine Muehe.
|
Commander_Data
Anmeldungsdatum: 18. September 2011
Beiträge: 417
|
@ArtWooD: Gern geschehen! So groß war der Aufwand für mich jetzt nicht und - wie gesagt - ich programmiere auch mal gerne nur so zum Spaß. ☺
|