Programm beim Booten starten
Hi Ich habe ein selbsterstelltes Programm, eine einfache Konsolenanwendung. Diese soll nun beim Booten des Rechners automatisch gestartet werden. Das Programm muß in einem bestimmten Verzeichnis unter meinem normalen Benutzeraccount laufen. Die Anwendung soll nur einmal starten und läuft dann solange, bis ich einen Stromausfall habe oder den Rechner wegen irgendwas 'runterfahren muß. Wie kriege ich das hin (besondere Parameter bei Cron oder ganz anders)? Jürgen -- Mailformattierung siehe hier: www.wetterstation-porta.info/kontakt.html
Jürgen Hochwald schrieb:
Ich habe ein selbsterstelltes Programm, eine einfache Konsolenanwendung. Diese soll nun beim Booten des Rechners automatisch gestartet werden. Das Programm muß in einem bestimmten Verzeichnis unter meinem normalen Benutzeraccount laufen. Die Anwendung soll nur einmal starten und läuft dann solange, bis ich einen Stromausfall habe oder den Rechner wegen irgendwas 'runterfahren muß. Wie kriege ich das hin (besondere Parameter bei Cron oder ganz anders)?
Schreib dir ein init-Skript, als Vorlage dient /etc/init.d/skeleton su <user> -c "cd <dir> && ./programm" müsste das eigentlich hinkriegen. Martin
Am Mittwoch, 10. Mai 2006 20:41 schrieb Jürgen Hochwald: > Ich habe ein selbsterstelltes Programm, eine einfache Konsolenanwendung. > Diese soll nun beim Booten des Rechners automatisch gestartet werden. > Das Programm muß in einem bestimmten Verzeichnis unter meinem normalen > Benutzeraccount laufen. > Die Anwendung soll nur einmal starten und läuft dann solange, bis ich einen > Stromausfall habe oder den Rechner wegen irgendwas 'runterfahren muß. > > Wie kriege ich das hin (besondere Parameter bei Cron oder ganz anders)? nicht per cron, sondern entweder - via /etc/init.d/boot.local aufrufen. /etc/init.d/boot.local wird von root ausgeführt, deshalb ggf so aufrufen: su DER_USER -c "DAS_ROGRAMM DIE PARAMETER" boot.local wird aber nur beim Hochfahren ausgeführt. - sollen bereits andere Dienste laufen, dann ist es besser einen eigen "Dienst" in /etc/init.d zu installieren Dazu /etc/init.d/skeleton als Vorlage für den eigen Dienst benutzen, und dann diesen via yast|Run-Level in den entsprechenden Run-Level starten. Auch hier gilt: dieses Script wird von root ausgeführt. Es wird beim booten mit dem Parameter "start" und beim herunterfahren mit dem Parameter "stop" aufgerufen. Mehr INfors dazu in /etc/init.d/README Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Wenn ich testweise ' su cfjh -c "ls" ', fragt er nach dem Passwort (der Benutzer hat eins). Wie kann ich das übergeben, lt. 'man' anscheinend garnicht ? cfjh@bastau:~> su cfjh -c "ls" Password: <---********* alternate-bestellung.pdf Desktop FsR.zip PO-Denkmal.jpg SH-Wilhelmstein.jpg Jürgen
Am Mittwoch, 10. Mai 2006 21:20 schrieb Jürgen Hochwald:
Wenn ich testweise ' su cfjh -c "ls" ', fragt er nach dem Passwort (der Benutzer hat eins). Wie kann ich das übergeben, lt. 'man' anscheinend garnicht ?
cfjh@bastau:~> su cfjh -c "ls" Password: <---********* alternate-bestellung.pdf Desktop FsR.zip PO-Denkmal.jpg SH-Wilhelmstein.jpg
wenn das als root ausgeführt wird, muß man kein Passwort angeben. wenn das als nicht-root gemacht werden, hilft ssh zusammen mit einem key-file. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Bisher habe ich es nicht hinbekommen, Benutzername und Passwort zu übergeben, damit das Programm unter dem Benutzeraccount läuft. Die Lösung basiert daher auf einem Cron-Job, wo ich einfach angeben kann, wem der Prozess dann gehört. Kernpunkt ist die Ermittlung, ob das gewünschte Programm schon läuft. Das erreiche ich mit ps, indem ich mir die PID in eine Variable ausgeben lasse. Ist die Variable leer, läuft das Programm nicht und wird neu gestartet. Der Job wird alle 15 Minuten ausgeführt, sodaß das Programm spätestens 15 Min. nach dem Neustart läuft.
# Check-Script, ob das Wetterstation-Auslese-Programm noch läuft # und ggf. Neustart
# PID des Prozess holen PID=`ps -C Programm -o pid=`
echo $PID
if (test -z $PID) ; then cd Zielverzeichnis echo "Starten" ./rProgramm > out.txt & fi
Jürgen
On Mon, 29 May 2006 22:28:11 +0200 Jürgen Hochwald <jh@cfjh.de> wrote:
Bisher habe ich es nicht hinbekommen, Benutzername und Passwort zu übergeben, damit das Programm unter dem Benutzeraccount läuft.
Die Lösung basiert daher auf einem Cron-Job, wo ich einfach angeben kann, wem der Prozess dann gehört. Kernpunkt ist die Ermittlung, ob das gewünschte Programm schon läuft. Das erreiche ich mit ps, indem ich mir die PID in eine Variable ausgeben lasse. Ist die Variable leer, läuft das Programm nicht und wird neu gestartet. Der Job wird alle 15 Minuten ausgeführt, sodaß das Programm spätestens 15 Min. nach dem Neustart läuft.
Hm, also ich verstehe jetzt das Problem nicht ganz. Jürgen Vollmer hat doch in seiner Mail (Message-Id: <200605102057.16765.Juergen.Vollmer@informatik-vollmer.de>) genau beschrieben wie das via /etc/init.d/boot.local bzw. /etc/init.d/skeleton funktioniert. Diese Scripts werden jeweils mit root-Rechten ausgeführt, und "su - username" als root ausgeführt verlangt definitiv kein Kennwort (jeweils kenne ich das nicht anders, ich benutze das fast täglich um mal eben ein anderer User zu werden) Oder habe ich nun irgendwas nicht/miss- verstanden??? Gruß, Olly -- PM an public.o@la-familia-grande.de
participants (5)
-
Dr. Jürgen Vollmer
-
Jürgen Hochwald
-
Martin Ereth
-
Martin Falley
-
Oliver Meißner-Knippschild