Automatisches Starten von Scripte / Programme ( Autostart )

  • In dieser Anleitung möchte ich euch zeigen wie Ihr automatisch Scripte, Programme oder einzelne Befehle startet.
    Der Grund für diese Anleitung ist einfach. Im Forum und auch im IRC wurde relativ oft gefragt wie Scripte automatisch nach dem Bootvorgang ausgeführt werden.


    Als erstes solltet Ihr euch fragen: Wann soll / muss mein Script ausgeführt werden?

    Generell kann man Scripte jederzeit ausführen lassen. Ob es wirklich sinn macht ist eine andere Geschichte...
    (Zbs. macht es keinen Sinn einen Timeserver abfragen zu wollen wenn kein Netzwerk Interface geladen wurde)

    Zur Auswahl stehen 3 Optionen:
    - Init-Script
    - rc.local Script
    - Wenn sich ein Nutzer angemeldet hat


    Init-Script:

    "Achtung ein wenig komplizierter!"
    Unter Linux (egal welche Distribution) gibt es unter /etc/ mehrere Verzeichnis die sich rc<N>.d nennen. N steht jeweils für den jeweiligen Runlevel.
    Welche Bedeutungen die Runlevels haben kann bei Wikipedia nachgelesen werden.

    Nun fragt ihr euch sicherlich mit welchen Runlevel euer System momentan läuft - der Befehl runlevel liefert die passende Antwort auf eure Frage.

    In meinem Fall läuft der Pi mit dem Runlevel 2 daher wird beim Booten jedes Script im /etc/rc2.d/ ausgeführt.
    Ein Blick in das Verzeichnis zeigt das dort eigentlich gar keine Scripte sind sondern, nur Symbolische Links auf Scripte die sich in /etc/init.d/ befinden.

    Die Namen dieser Links sind relativ leicht zu erklären:
    <K|S> Kill Script - Script wird beim beenden eines Runlevels ausgeführt; Starting Script werden beim starten eines Runlevels gestartet ;)
    <0-99> Priorität - welches Script zuerst aufgerufen wird.
    <Name>

    Wenn wir nun ein eigenes Init-Script erstellen möchten muss es gewisse Regeln befolgen:
    - Es muss einen Init Info Kommentarblock geben
    - diverse Aktionen müssen ausführbar sein (start, stop, restart...)
    - Script muss ausführbar sein (Rechte)

    Hier ist ein Beispiel Script:
    testScript.txt

    Wenn das Script nun im /etc/init.d/ Verzeichnis liegt und auch die richtigen Rechte besitzt ist das schonmal die halbe Miete. Als letztes müssen wir dem System noch mitteilen das da ein neues Script existiert.
    Dazu gibt es das update-rc.d Script:

    Code
    pi@raspberrypi /etc/init.d/ $ sudo update-rc.d <scriptfile> defaults

    Nach einem Restart wird nun euer Script ausgeführt.

    Wer es ein wenig einfacher haben mag kann natürlich auch eine GUI für das einbinden benutzen zbs. rcconf (auch ohne XServer möglich)

    rc.local Script

    Wenn Ihr Runlevel unabhängige Scripte ausführen wollt lohnt sich ein blick in die /etc/rc.local
    Datei. Dort könnt ihr an das Ende (Vor dem exit(0)) eure Scripte / Befehle einfügen.
    Dieses Script wird von jedem Runlevel aufgerufen.


    Bei beide Methoden (Init-Script und rc.local) werden eure Scripte unter root ausgeführt.
    Wenn das ein Script unter einem bestimmten Benutzer ausgeführt werden soll dann muss es zbs. so ausgeführt werden:

    Code
    su pi -c "/path/script.sh &"



    ACHTUNG!
    Wenn Ihr ein fehlerhaftes Script einbindet (egal ob es ein Init-Script ist oder in der rc.local) kann es euer System lahm legen!!
    Deshalb sollte das Script erst per Hand getestet werden!


    Wenn sich ein Nutzer angemeldet hat:

    Wenn Ihr euer Script ausführen wollt nachdem sich ein Benutzer erfolgreich angemeldet hat so finden sich die passenden Scripte im Homeordner des jeweiligen Benutzers.
    .bashrc
    Wenn sich ein Benutzer einloggt (über Console oder ssh) dann wird die .bashrc ausgeführt (einmalig).

    .profile
    Wenn ein Benutzer einfach eine neue Shell startet dann wird die .profile ausgeführt (öfter).


    Egal für welche Option Ihr euch entscheidet - es hängt von eurem Script / Programm ab Wo und Wann es gestartet werden soll.


    Ein letzter Hinweis noch:
    Wenn euer Script dauerhaft läuft und nicht einfach so beendet wird dann solltet ihr es so aufrufen
    /path/script.sh&
    Das & an dieser Stelle bedeute dass das Script im Hintergrund ausgeführt wird.
    Wenn eurer Script dauerhaft läuft und die nicht zum ende kommt kann es vorkommen das andere (nachfolgende) Scripte nicht ausgeführt werden und damit das System blockieren!


    Hinweise von meigrafd:
    Die erste Umleitung " >/dev/null " schickt die Standard-Ausgabe (stdout) nach /dev/null, also dem klassischen Mülleimer von Linux
    Das dahinter " 2>&1 " leitet Fehlermeldungen (stderr) auf den Kanal der Standard-Ausgabe (strout) um und landet somit ebenfalls im Mülleimer

    Dadurch vermeidet man möglicherweise zu viele Logeintröge in /var/log/syslog
    Trotzdem werden schwerwiegende Fehler trotzdem noch ins /var/log/syslog geschrieben und sollte auch der erste Ort sein wo ihr nachzugucken solltet wieso/weshalb/warum ein Befehl/Script über crontab nicht funktionieren will

    Ausserdem solltet ihr in euren Scripts immer mit Exit-Codes arbeiten damit das System bzw crontab auch weiss ob das Script erfolgreich oder fehlerhaft ausgeführt wurde.
    Wenn alles in Ordnung ist nutzt man "exit 0", das sollte immer am Ende des Scripts stehen.
    Wenn es Fehler gibt zB falsche Anforderungen die fürs Durchlaufen des Scripts erfüllt sein müssten oder weil en Befehl im Script einen Fehler verursacht hat, nutzt man alles über 0 also "exit 1" oder "exit 2" usw. Mehr zu den Exit-Codes könnt ihr hier:

    Display Spoiler

    Ich hoffe ich konnte euch den "Autostart" ein wenig näher bringen ;)


    liebe Grüße Turael

    Ich bin ein gefallener Engel namens Turael.

    Einst vor langer Zeit rebelierte ich im Himmel bis Gott mich auf die Erde verbannte.

    Doch meine taten werden kein ende finden....

    Edited once, last by Turael (November 21, 2013 at 11:40 AM).

  • Automatisches Starten von Scripte / Programme ( Autostart )? Schau mal ob du hier fündig wirst!

  • Habe unter RaspBMC ein Pythonskript laufen, welches meine Funksteckdosen steuert.
    Wie kann ich das einbinden??
    /root/RPi.GPIO-0.1.0/netio_server.py
    Sonst gehe ich mit "cd RPi.GPIO-0.1.0" in den Ordner und starte dann mit "sudo python netto_server.py &".

    Wie kann ich das in rc.local einfügen??
    ps. Es sollte erst Starten, wenn Netzwerk und alles andere Wichtige geladen ist... da kommt es nicht auf ein paar Sekunden an :P

    <woltlab-metacode data-name="align" data-attributes="WyJjZW50ZXIiXQ=="><p><span style="font-size: 10pt">Ein "Gefällt mir" oder die Bewertung im Profil ist eine nette Geste für die Hilfe die wir hoffentlich waren oder sind.</span></p></woltlab-metacode>

  • mario:

    Quote


    Wie kann ich das in rc.local einfügen??

    fast genauso wie du es per Hand machst nur das sudo kannst du weglassen den Grund dafür habe ich in der Anleitung noch nachgetragen :)

    Ich bin ein gefallener Engel namens Turael.

    Einst vor langer Zeit rebelierte ich im Himmel bis Gott mich auf die Erde verbannte.

    Doch meine taten werden kein ende finden....

    Edited once, last by Turael (June 12, 2013 at 3:22 PM).

  • Soll das Terminal + Print nach dem einloggen erscheinen? Wenn ja dann dann könntest den Befehl in der ~/.bashrc oder ~/.profile hinterlegen und sobald sich ein User anmeldet wird der Befehl ausgeführt ;)
    Um dazu noch ein neues Terminal zu öffnen reicht es wenn du um deinem Befehl hängst du das dran xterm -e 'print ......; bash' &

    xterm öffnet eine neues Terminal und führt dann 2 Befehle aus. Deinen Print befehl und bash (damit das Terminal offen bleibt)

    Ich bin ein gefallener Engel namens Turael.

    Einst vor langer Zeit rebelierte ich im Himmel bis Gott mich auf die Erde verbannte.

    Doch meine taten werden kein ende finden....

  • Klasse Tutorial, gut geschrieben und nachvollziehbar erklärt :thumbs1::danke_ATDE:

    nach allem was ich dazu im Netz gelesen hatte funktionierte es auf Anhieb :bravo2:

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Zu dem ersten Post hätte ich noch einige Ergänzungen, zumal ich glaube das es nicht unbedingt derart Kompliziert sein muss wenn man nur etwas "automatisch starten" lassen möchte (init-script)


    Folgende Möglichkeiten gibt es, der Reihenfolge nach die man bevorzugen sollte:

    • Benutzer-Crontab -> Kann über den Konsolen Befehl crontab -e bearbeitet werden
    • System-Crontab -> /etc/crontab
      Achtung: hat eine Spalte mehr als die Benutzer-Crontab, nämlich mit dem Benutzer der den Befehl oder Script ausführen soll
      Achtung-2: Wird von oben nach unten abgearbeitet, ist aber eine Zeile fehlerhaft wird alles dadrunter nicht mehr ausgeführt also am besten eure eigenen Einträge ans Ende paken
    • /etc/rc.local wurde im ersten Post leider leicht fehlerhaft beschrieben (bezüglich ans Ende einfügen).
      Im /etc/rc.local muss eure Zeile vor das "exit 0" eingefügt werden und wichtig ist auch das ihr ein " & " am Ende eurer Zeile verwendet da sonst das System solange pausiert bis der Befehl oder das Script beendet wird!
    • init- oder auch Runlevel- Script wie im ersten Post bereits ausführlich beschrieben, allerdings ist " K " zum beenden des Scripts also beim herunterfahren (hat nichts mit deamon zu tun)
    • ~/.bashrc sowie ~/.profile wie im ersten Post beschrieben. " ~/ " ist das Heimatverzeichnis des jeweiligen Benutzers (wird auch in der globalen Variable $HOME hinterlegt (echo $HOME)) - Funktioniert aber nur im Bezug auf die Überschrift wenn sich jemand automatisch anmeldet

    Anmerkung zu den ersten beiden:

    Standardmässig wird die Crontab mit vi geöffnet. Wer stattdessen lieber nano nutzen möchte gibt ein mal folgenden Befehl ein: export EDITOR=nano

    Ein Crontab-File besteht aus 6 "Spalten" pro Zeile:
    1 - Minute (0-59)
    2 - Stunde (0-23)
    3 - Tag des Monats (1-31)
    4 - Monat des Jahres (1-12)
    5 - Tag der Woche (0-6, 0 ist Sonntag)
    6 - Absoluter Pfad zum Befehl/Script

    Eine Ausnahme bildet allerdings wie bereits erwähnt die /etc/crontab Datei! Da gibt es eine Spalte mehr um anzugeben wer den Befehl oder das Script ausführen soll:
    1 - Minute (0-59)
    2 - Stunde (0-23)
    3 - Tag des Monats (1-31)
    4 - Monat des Jahres (1-12)
    5 - Tag der Woche (0-6, 0 ist Sonntag)
    6 - Auszuführender Benutzer
    7 - Absoluter Pfad zum Befehl/Script


    Wenn ein Script oder Befehl eine Ausgabe erzeugt (zB durch echo's) wäre es zudem ratsam die Ausgabe in den Mülleimer umzuleiten. Das erreicht man indem man hinter den Befehl/Script folgendes anhängt:

    Code
    >/dev/null 2>&1

    Erklärung:
    Die erste Umleitung " >/dev/null " schickt die Standard-Ausgabe (stdout) nach /dev/null, also dem klassischen Mülleimer von Linux
    Das dahinter " 2>&1 " leitet Fehlermeldungen (stderr) auf den Kanal der Standard-Ausgabe (strout) um und landet somit ebenfalls im Mülleimer

    Dadurch vermeidet man möglicherweise zu viele Logeintröge in /var/log/syslog
    Trotzdem werden schwerwiegende Fehler trotzdem noch ins /var/log/syslog geschrieben und sollte auch der erste Ort sein wo ihr nachzugucken solltet wieso/weshalb/warum ein Befehl/Script über crontab nicht funktionieren will

    Ausserdem solltet ihr in euren Scripts immer mit Exit-Codes arbeiten damit das System bzw crontab auch weiss ob das Script erfolgreich oder fehlerhaft ausgeführt wurde.
    Wenn alles in Ordnung ist nutzt man "exit 0", das sollte immer am Ende des Scripts stehen.
    Wenn es Fehler gibt zB falsche Anforderungen die fürs Durchlaufen des Scripts erfüllt sein müssten oder weil en Befehl im Script einen Fehler verursacht hat, nutzt man alles über 0 also "exit 1" oder "exit 2" usw. Mehr zu den Exit-Codes könnt ihr hier nachlesen:

    Display Spoiler


    Benutzer-Crontab Beispiele: (crontab -e)

    Display Spoiler


    Wenn ein Script/Befehl bei System Start ausgeführt werden soll:

    Code
    @reboot	/home/pi/script.sh

    Wenn ein Script/Befehl jede Minute, jede Stunde, jeden Tag usw ausgeführt werden soll:

    Code
    * * * * *	/home/pi/script.sh


    (also um 12:00 , 12:01 , 12:02 , 12:03 usw)

    Wenn ein Script/Befehl um 10 nach von jede Stunde, jeden Tag usw ausgeführt werden soll:

    Code
    10 * * * *	/home/pi/script.sh


    (also um 12:10 , 13:10 , 14:10 usw)

    Wenn ein Script/Befehl zu bestimmten Minuten, jede Stunde, jeden Tag usw ausgeführt werden soll:

    Code
    10,30,50 * * * *	/home/pi/script.sh


    (also um 12:10 , 12:30 , 12:50 usw)

    Wenn ein Script/Befehl alle 2 Minuten, jede Stunde, jeden Tag usw ausgeführt werden soll:

    Code
    */2 * * * *	/home/pi/script.sh


    (also um 12:02 , 12:04 , 12:06 usw)

    Wenn ein Script/Befehl alle 10 Minuten, jede Stunde, jeden Tag usw ausgeführt werden soll:

    Code
    */10 * * * *	/home/pi/script.sh


    (also um 12:10 , 12:20 , 12:30 usw)

    Wenn ein Script/Befehl jede Woche Montag morgends um 6 Uhr ausgeführt werden soll:

    Code
    0 6 * * 1	/home/pi/script.sh

    System-Crontab Beispiele: (/etc/crontab)

    Display Spoiler


    Wenn ein Script/Befehl bei System Start ausgeführt werden soll:

    Code
    @reboot	root /home/pi/script.sh

    Wenn ein Script/Befehl jede Minute, jede Stunde, jeden Tag usw ausgeführt werden soll:

    Code
    * * * * *	pi /home/pi/script.sh


    (also um 12:00 , 12:01 , 12:02 , 12:03 usw)

    Wenn ein Script/Befehl um 10 nach von jede Stunde, jeden Tag usw ausgeführt werden soll:

    Code
    10 * * * *	root /home/pi/script.sh


    (also um 12:10 , 13:10 , 14:10 usw)

    Wenn ein Script/Befehl zu bestimmten Minuten, jede Stunde, jeden Tag usw ausgeführt werden soll:

    Code
    10,30,50 * * * *	pi /home/pi/script.sh


    (also um 12:10 , 12:30 , 12:50 usw)

    Wenn ein Script/Befehl alle 2 Minuten, jede Stunde, jeden Tag usw ausgeführt werden soll:

    Code
    */2 * * * *	root /home/pi/script.sh


    (also um 12:02 , 12:04 , 12:06 usw)

    Wenn ein Script/Befehl alle 10 Minuten, jede Stunde, jeden Tag usw ausgeführt werden soll:

    Code
    */10 * * * *	pi /home/pi/script.sh


    (also um 12:10 , 12:20 , 12:30 usw)

    Wenn ein Script/Befehl jede Woche Montag morgends um 6 Uhr ausgeführt werden soll:

    Code
    0 6 * * 1	root /home/pi/script.sh

    Es gibt auch noch weitere Crontab-untypische Einstellungsmöglichkeiten wie @reboot
    Genaueres dazu kann man dort nachlesen: http://wiki.ubuntuusers.de/Cron#Cronjobs-manuell-einrichten
    (etwas runter scrollen bis zur Tabelle "String, Bedeutung, cron-Schreibweise")


    /etc/rc.local Beispiel:

    Display Spoiler


    //EDIT: Seperater Thread bezüglich Crontab : https://www.forum-raspberrypi.de/Thread-tutorial-crontab-cron-jobs

    //EDIT2: Bezüglich Autostart Möglichkeiten für die Grafische Oberfläche (X, LXDE usw) siehe > Beitrag#14 <

  • Super, vielen Dank für die Ergänzungen :)
    Hab nochmal nach geschlagen für was S / K bei den Init-Scripten steht. Und die genaue Definition vom Ubuntu-Wiki:

    Display Spoiler


    Jedes Start-/Stop-Skript besitzt zwei Arten von Verknüpfungen ("Links"): die einen beginnen mit "S" (Start) und die anderen mit "K" (Kill). Beim Betreten eines Runlevels werden zunächst die "K"-Links zum Beenden, danach die "S"-Links zum Starten von Diensten ausgeführt. Soll nun etwa ein Dienst nur im Runlevel 2 laufen, so liegt typischerweise in /etc/rc2.d ein "S"-Link, in allen anderen Runlevel-Verzeichnissen dagegen ein "K"-Link.


    Quote


    /etc/rc.local wurde im ersten Post leider leicht fehlerhaft beschrieben (bezüglich ans Ende einfügen).


    Manchmal geht man einfach mal von Grundkenntnissen aus... Aber recht hast du ;)


    Aber in einem Punkt bin ich mir nicht so ganz sicher...
    Und zwar glaube ich nicht das Crontab etwas mit dem Thema zu tun hat... - Gut Crontab führt Befehle / Scripte aus aber nicht unbedingt beim booten / einloggen sondern einfach nach einer Uhrzeit...

    Ich bin ein gefallener Engel namens Turael.

    Einst vor langer Zeit rebelierte ich im Himmel bis Gott mich auf die Erde verbannte.

    Doch meine taten werden kein ende finden....


  • Aber in einem Punkt bin ich mir nicht so ganz sicher...
    Und zwar glaube ich nicht das Crontab etwas mit dem Thema zu tun hat... - Gut Crontab führt Befehle / Scripte aus aber nicht unbedingt beim booten / einloggen sondern einfach nach einer Uhrzeit...

    Crontab kann ebenfals dazu genutzt werden etwas automatisch beim booten zu starten, dafür gibt es eine extra Einstellung die am Anfang meiner Beispiele steht -> @reboot

    Das ist zudem der einfachste und auch bessere Weg - verändert man /etc/rc.local , /etc/init.d/ oder .bashrc bzw .profile aber macht dabei Fehler (ob in dem File oder im Script) kann es das System negativ beeinflussen, bis hin zu "nicht mehr mit dem System arbeiten können"..

    Mit Crontab kann man alles erreichen was man benötigt; ohne das System negativ zu beeinflussen


    Es gibt auch noch weitere Crontab-untypische Einstellungsmöglichkeiten wie @reboot
    Genaueres dazu kann man dort nachlesen: http://wiki.ubuntuusers.de/Cron#Cronjobs-manuell-einrichten
    (etwas runter scrollen bis zur Tabelle "String, Bedeutung, cron-Schreibweise")

  • Da das hier auch immer wieder gefragt wird, schreib ich das hier auch noch mal in diesen Thread


    Die in diesem Thread bisher erwähnten Wege gelten nur für Programme/Scripte die über die Konsole laufen können! Wer aber X11 (LXDE) Programme automatisch starten möchte, wird etwas anderes anwenden müssen:


    Setzt das Programm X11 bzw eine Grafische / Desktop Oberfläche (GUI) voraus, kann es erst "automatisch gestartet" werden wenn X11 bereits läuft und somit würden Wege über crontab , /etc/rc.local oder bashrc usw nicht funktionieren, denn die werden viel früher ausgeführt als die Desktop Oberfläche! Setzt euer Programm LXDE o.ä. voraus, muss es auch erst dann starten wenn LXDE bereits gestartet wurde.


    Aber selbst dafür gibts natürlich ebenfalls mehrere Lösungen:

    • Über /etc/lightdm/lightdm.conf ist bereits ein Eintrag (am Ende) für VNC vorbereitet
    • Über die globale LXDE Autostart funktion ( /etc/xdg/autostart/ )
    • Über das LXDE-Profil des jeweiligen Benutzers ( ~/.config/autostart/ ), funktioniert aber nur wenn sich der Benutzer automatisch Anmeldet und LXDE bei Systemstart automatisch gestartet wird..
    • Ein spezieller Eintrag der globalen Session: /etc/xdg/lxsession/LXDE/autostart


    Zu Punkt 1.) zum Beispiel:

    Code
    [VNCServer]
    enabled=true
    port=5900
    width=1024
    height=768
    depth=8


    Zu Punkt 2) und 3):

    Eine Datei erstellen: x11vnc.desktop
    Achtung: Die Dateiendung muss .desktop lauten!
    mit folgendem Inhalt:

    Code
    [Desktop Entry]
    Name=X11 VNC
    Comment=
    Exec=x11vnc -forever -rfbport 5900 -rfbauth ~/.vnc/x11vnc.pass -o ~/.vnc/x11vnc.log -display :0
    Terminal=false
    Type=Application

    Anschliesend ist es ebenfalls wichtig die x11vnc.desktop Datei ausführbar zu machen!

    Code
    chmod +x x11vnc.desktop

    Ihr könnt bei " Exec= " natürlich auch ein Script oder andere Programme einfügen usw. Eine genauere Beschreibung der .desktop Dateien findet ihr hier: http://wiki.ubuntuusers.de/Men%C3%BC


    Zu Punkt 4):

    Euren Befehl ergänzend eintragen (dort stehen schon ein paar Sachen drin). Wichtig ist das ihr auch ein @ an den Anfang der Zeile einfügt.
    Zum Beispiel:

    Code
    @/usr/bin/python /home/pi/Script.py

    Wenn ihr wollt das sich automatisch ein Terminal öffnet und ein Script ausführt welches auf eine Benutzereingabe wartet, dann würde der Eintrag wie folgt aussehen:

    Code
    @lxterminal -e "python /home/pi/Script.py"


    Wichtig in jedem Fall ist das ihr den absoluten / vollständigen Pfad zum Script angebt.

  • Warum sollte man bei VNC einen anderen Weg gehen als ich den Beschrieben habe?
    Ok ich hab noch kein VNC Server aufgesetzt aber was ich so bei Google gelesen habe reicht auch ein Init-Script bzw rc.local.
    Warum auch nicht? Wenn das Init-Script an der richtigen stelle gestartet wird (nachdem der X-Server gestartet wurde) dann sollte es auch keine Probleme geben in VNC.

    Und wenn es doch ein paar Probleme geben sollte dann könnte das Init-Script so erweitert werden das es im Hintergrund auf den X-Server wartet bis dieser komplett gestartet wurde und dann erst VNC startet.....


    Oder ist an meiner Theorie etwas falsch? Wenn ja was?

    Ich bin ein gefallener Engel namens Turael.

    Einst vor langer Zeit rebelierte ich im Himmel bis Gott mich auf die Erde verbannte.

    Doch meine taten werden kein ende finden....


  • Warum sollte man bei VNC einen anderen Weg gehen als ich den Beschrieben habe?
    Ok ich hab noch kein VNC Server aufgesetzt aber was ich so bei Google gelesen habe reicht auch ein Init-Script bzw rc.local.
    Warum auch nicht? Wenn das Init-Script an der richtigen stelle gestartet wird (nachdem der X-Server gestartet wurde) dann sollte es auch keine Probleme geben in VNC.

    Und wenn es doch ein paar Probleme geben sollte dann könnte das Init-Script so erweitert werden das es im Hintergrund auf den X-Server wartet bis dieser komplett gestartet wurde und dann erst VNC startet.....


    Oder ist an meiner Theorie etwas falsch? Wenn ja was?


    Hier werden mehrere Möglichkeiten beschrieben oder nicht?
    Und das es nicht eine gibt, darin sollten wir uns einig sein, oder?

    Für welche man sich entscheidet ist jedem selbst überlassen

    VNC ist für X11, also macht es schon Sinn das es erst dann gestartet wird wenn LXDE startet

  • Das mehrere Wege nach Rom führen steht auch nicht zur debatte ;)
    Aber ich glaube du hast meinen Beitrag nicht ganz gelesen.
    Ich wollte wissen warum man deinen Weg gehen sollte und nicht über den Linux einheitlichen "Autostart".
    Das VNC auch einen X-Server benötigt ist mir klar ;)
    Der X-Server wird auch an irgendeiner stelle beim booten geladen und steht ab dann zur verfügung - ergo ich könnte danach dann zbs VNC starten.

    Ich bin ein gefallener Engel namens Turael.

    Einst vor langer Zeit rebelierte ich im Himmel bis Gott mich auf die Erde verbannte.

    Doch meine taten werden kein ende finden....

  • Ich hab den beitrag gelesen - du denn auch meinen?

    In diesem Thread geht es um allgemeines Autostarten von Scripte / Programme - bedeutet also: Wer ein Script oder Programm hat das X11 bzw LXDE benötigt kann den von mir zuletzt beschriebenen Weg nutzen

    Ob Du das so für Dich machen würdest oder nicht ist dein Ding - Ich würde deinen Weg jedenfals nicht nehmen da das viel zu kompliziert ist von wegen passenden Runlevel finden um sicher zu gehen das X11 auch wirklich gestartet ist bevor man dann VNC startet - oder das Scriprt solange im Kreis drehen lassen bis es X11 findet und erst dann starten lassen oder bla...
    Wenn du meinst das wäre aus deiner Sicht sinnvoller, dann beschreib es doch? irgendwie umschreiben kann das jeder, aber dieser Thread ist doch für Anfänger die das nicht wissen - oder etwa nicht??

    Und BTW war das mit VNC nur ein Beispiel - häng dich daran also bitte nicht auf, sonst kann ich dir auch gerne noch nen Strick dazu knüpfen (...ehrlich, ohne sinn... :no_sad: )


    PS: Das mit @reboot über die Crontab hast du aber ja auch (immernoch?) nicht verstanden und auch immer noch nicht in Post#1 ergängzt...

  • Hallo
    ich bin echt neu hier und durch gooooogln auf Deinem Beitrag gestoßen. Und hab eigentlich keine ahnug von Pragrammirung.
    Aber was Du hier beschrieben hast ( auch verstaendlich fuer Dummmis wie mich ) funktionirt und ich hab gerafft wie es geht.
    NUN das was ich nicht gefunden habe ist:
    wie kann ich die Reinfolge beeinflussen das mein Skript so ziemlich als letztes ausgeführt wird?
    Weil wenn es ausgeführt wird, ist meine externe HD noch nicht gemountet und gphoto2 auch noch nicht bereit.
    Jedenfalls erkennt mein skript nichts beim starten, aber wenn ich es dann manual aufrufe geht alles.
    Das Skript ist ziemlich einfach, es ruft gphoto2 auf und wartet das meine angeschlosene Kamera ein Bild macht, dann wird dieses auf die HD runtergeladen.
    Mein Skript wurde als S2script eingestuft im /etc/rc2.d/ wahrscheinlich ist S#script zu klein.
    Es wird irgendwie zu früh gestartet., bevor das gestartet wird was ich brauche.

    Habe hier was gefunden http://www.calculate-linux.org/main/en/initscripts
    wenn ich

    depend) {
    after *
    }
    oder

    depend) {
    after mount
    use gphoto2
    }

    einfüge , geht das so einfach?

    Danke
    Dirk

    Edited once, last by mexicodirk (November 5, 2013 at 6:30 AM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!