ubuntuusers.de

Probleme bei der Ausführung eines Skriptes bei Systemstart / Autostart / Hochfahren

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

MightyWiZz

Avatar von MightyWiZz

Anmeldungsdatum:
3. Dezember 2006

Beiträge: 8

Wohnort: Achern

Hi@all, ich surfe jetzt schon seit gestern mittag durchs Netz und kann keine gescheite Anleitung finden, die mir weiterhilft. Im Prinzip will ich nur ein Bash-Skript beim Hochfahren ausführen, dass meinen Touchscreen-Deamon startet (später soll auch die Anmeldung wegfallen; aber eins nach dem Anderen) Das Skript funktioniert, jedoch nicht beim Starten des OS.

ich habe schon Einiges probiert: Symbolische Links in /etc/init.d und mit update-rc bekannt gemacht, ich hab schon in 2 verschiedenen rc.locals mein skript aufgerufen wollen, in allen denkbaren Variationen, aber ER MACHTS NICHT. ☹

Rechte: (FYI: immer mit chmod +x) btw: Das Script braucht root Rechte.

mein Skript schaut, ob der Deamon Prozess bereits gestartet ist, wenn nicht starte. /* Ubuntu 8.1; */

#!/bin/bash
# Script zur Automatisierung des Touchscreens

#Variablendeklarationen
cnt=$(ps -ef | grep $USER | wc -l)
prozvorh=$(ps -ef | grep zytouch | wc -l)
dateiname=zytouch-daemon
verzeichnisname="$HOME/Zytouch/zytouch-driver-20081121"
pwd=$(pwd)
logdir=$HOME/Zytouch/zytouch-driver-20081121/logfiles

#Ein paar Ausgaben
#echo Der Benutzer $USER hat $cnt Prozesse am laufen.
echo Nun wird versucht, im Verzeichnis $verzeichnisname folgende Datei auszuführen: $dateiname.

#und los gehts
cd $verzeichnisname/
#echo Hier bin ich gerade: $pwd
echo Ist der Daemon bereits gestartet bzw. ist der Prozess bereits vorhanden?

if [ $prozvorh -gt 1 ]
then	
	echo Der Prozess ist bereits vorhanden, d.h. Sie können den Touchscreen bereits verwenden!
else
	echo Der Prozess ist noch nicht vorhanden, beginne mit der Ausführung.
	sudo ./$dateiname	#der Eigentliche Aufruf des Skripts
	echo "ok" 
fi

Ich habe auch noch nie eine echo-ausgabe gesehen beim Hochfahren, wird wohl auch ein Anzeichen dafür sein, dass mein Skript einfach nicht ausgeführt wird. Wenn jemand bitte mir sagen würde, was zu tun ist, damit das Skriptchen startet, wäre das fabelhaft! Das sind ja im Normalfall 2-3 Schritte. (Mit "Einstellungen/Sitzungen" hats auch nicht funktioniert)

Kinch

Anmeldungsdatum:
6. Oktober 2007

Beiträge: 1261

Also meines Wissens nach sollte "/etc/rc.local" die passende Stelle für Startup-Scripts sein.

Um zu wissen, ob dein Skript überhaupt ausgeführt wird, würde ich die "echo"s auch in ne Datei umleiten (eventuell mit „tee”), da Ubuntu ja beim Booten nicht alles anzeigt.

Der nächste Schritt sollte sein Fehlerbegrenzung betreiben und schauen ob Skripte in /etc/rc.local generell ausgeführt werden oder nicht. Falls ersteres liegt dein Problem wohl am Skript selbst.

Zu deinem Skript noch die Anmerkungen: Wenn es beim booten ausgeführt wird, läuft es mit Admin-Rechten. Die Variable „$HOME“ sollte also eigentlich noch gar nicht gesetzt sein, bzw. „/home/root” sein. Da das Skript eh mit root-Rechten läuft, ist ein „sudo” überflüssig.

MightyWiZz

(Themenstarter)
Avatar von MightyWiZz

Anmeldungsdatum:
3. Dezember 2006

Beiträge: 8

Wohnort: Achern

Erstmal danke für die schnelle Antwort. Funktionieren, tuts immer noch nicht. Der Fehler steckt im Detail. Ich versuche so genau wie möglich zu schildern, was Sache ist:

Bash Skript geschrieben → lauffähig, getestet. (unter Pfad: /home/stephan/myscripts) (Dateiname: startetouch.sh) Der funktionierende Aufruf (mit Parameter; im Verzeichnis ~/myscripts/) lautet: sudo ./touchstart.sh START

Hier das kurze Skriptl:

#!/bin/bash
#touchstart.sh

#Variablendeklarationen
cnt=$(ps -ef | grep $USER | wc -l)
prozvorh=$(ps -ef | grep zytouch | wc -l)
homepfad=/home/stephan/
touchpfad=Zytouch/zytouch-driver-20081121/
datei=zytouch-daemon

if [ $# -eq 1 ] # Anzahl der übergebenen Parameter 1
then
	echo SUCCESS: Anzahl der Parameter stimmt.
	if [ $1 == "START" ] #ist der Paramter START?
	then
		echo SUCCESS: Parameter ist richtigerweise START.

		if [ $prozvorh -ge 2 ]
		then
			echo HINT: Der Prozess ist bereits gestartet. Der Touchscreen kann verwendet werden.
		else
			echo Nun soll der Daemon gestartet werden...
			$homepfad$touchpfad$datei	#Starten des Daemons
			echo SUCCESS: Der Daemon wurde erfolgreich gestartet. Probier den Touch mal aus!	
			tee -a /home/stephan/logfile
		fi
	fi
fi

Dann hab ich, wie Kinch gesagt hat, in die /etc/rc.local DEN PFAD des Scripts angegeben: [in file /etc/rc.local] /home/stephan/myscripts/

Außerdem habe ich das sudo beim Aufruf weggelassen wie er gesagt hat (siehe Script)

$homepfad$touchpfad$datei

u.A. steht das auch hier http://wiki.ubuntu-forum.de/index.php/Autostart

→ Der Prozess wird nicht beim hochfahren gestartet.

Ich muss doch irgendwo z.B. auch meinen Parameter angeben (START)

NUR WO?!

Soll dies im rc.local gemacht werden like this:

/home/stephan/myscripts/startetouch.sh START

Oder wo wird dieser Parameter denn angegeben?

Ohne diese Angabe kann es meiner Meinung nach nicht laufen...

Zweiter Lösungsversuch als Alternative: Einen Symbolischen Link in init.d erstellen und per update-rc.d bekannt machen. Was hält ihr von diesem Lösungsvorschlag? Symbolischer Link erstellt via:

ln -s /home/stephan/myscripts/touchstart.sh touchstart

und dann sowas wie

sudo update-rc.d touchstart default

Geht das so?

Wobei ich mich schonwieder frage, was mit dem Parameter ist. ICH LASS ES MIT DEM SCHEISS START PARAMETER, oder?

Geduld ist eine Tugend.

Ich hol noch n Kaffee. DAS KANN DOCH NICHT SO SCHWER SEIN VERDAMMT!!! danke für euere Hilfe! WiZz

MightyWiZz

(Themenstarter)
Avatar von MightyWiZz

Anmeldungsdatum:
3. Dezember 2006

Beiträge: 8

Wohnort: Achern

Alternative 3: Tipp eines erfahrenen Debian Users (OHNE die rc.local(s) zu verändern)

Hi Leute, leider startet mein Touchscreen - Daemon immer noch nicht beim Starten. Aber ich geb nicht auf! Auf einem neuen, jungfräulichen PC hab ich nun folgendes probiert (wie immer Ubuntu 8.1)

1.) Skript erstellt mit dem Namen startt.sh (diesmal nur das Wichtigste reingeschrieben)

#!/bin/bash
/home/stephan/Desktop/zytouch/zytoch-daemon #das ist mein executable

2.) das Skript nach /etc/init.d/ kopiert und mit Execute-Rechten versehen

3.) Da ich im runlevel 2 bin, hab ich einen Symbolischen Link erstellt in /etc/rc2.d/ via

sudo ln -s /etc/init.d/startt.sh S99startt

FRAGEN: Warum startet er dies script beim Hochfahren nicht? Er kommt ja am rc2 vorbei. Es tritt kein ersichtlicher Fehler beim Hochfahren auf. Ausschließen kann ich, dass es an den Rechten liegt.

Dieses Thema ist verdammt nochmal wichtig - ich denke jeder will irgendwann mal ein Script beim Hochfahren starten.

Ich bau auf euch.

WiZz

Antworten |