Script beim Booten starten, but how?

shortybmc

shortybmc

Mitglied
Ich versuche seit stunden ein simples script beim Boot-Vorgang zu starten, bekomme es aber partout nicht hin, eventuell könnt ihr mir sagen wo der fehler liegt. Folgendes script soll einfach zu testzwecken eine Datei erstellen.

Code:
#!/bin/sh


case $1 in
	start)
		touch /home/shorty/start
		touch /root/start
		;;
	stop)
		touch /home/shorty/stop
		touch /root/stop
		;;	
	reload | restart)
		touch /home/shorty/restart
		touch /root/restart
		;;
	*)
		touch /home/shorty/err
		touch /root/err
		exit 1
		;;
esac

exit 0
Das Script liegt in /etc/init.d/, unter dem Namen foo. Ich habe mich strikt an die im Handbuch hinterlegten Anweisungen gehalten, was soviel bedeutet, wie das ich folgendes getan habe (mit root rechten):
Code:
update-rc.d foo defaults 19
Ausgabe:
Adding system startup for /etc/init.d/foo ...
/etc/rc0.d/K19foo -> ../init.d/foo
/etc/rc1.d/K19foo -> ../init.d/foo
/etc/rc6.d/K19foo -> ../init.d/foo
/etc/rc2.d/S19foo -> ../init.d/foo
/etc/rc3.d/S19foo -> ../init.d/foo
/etc/rc4.d/S19foo -> ../init.d/foo
/etc/rc5.d/S19foo -> ../init.d/foo
Danach habe ich das System neu gestartet, und erwartet, dass jeweils im Ordner /home/shorty/ & /root/ zumindest eine Datei liegt, aber leider Fehlanzeige.

Kann mir einer von euch sagen woran es liegt, das das Script foo nicht beim Booten ausgeführt wird?


lg,
Marco
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Ich komm mir langsam total bescheuert vor! Immer wenn ich einen Post absetze, dauert es nicht lange, und ich komme von selbst drauf. Man man, es lag an den rechten der Datei foo, niemand, auch nicht root durfte sie ausführen - da kann es ja nix werden :D

ich habe mir die rechte für das script nun bei einer anderen datei im Ordner init.d abgeguckt, und sie wie folgt gesetzt:

Code:
chmord -rwxr-xr-x foo

trotzdem danke fürs lesen - sorry :brav:
 
Zuletzt bearbeitet:
Ich komm mir langsam total bescheuert vor! Immer wenn ich einen Post absetze, dauert es nicht lange, und ich komme von selbst drauf.

Macht nix, geht mir auch oft so.......:)
 
Kleine Anregung, sofern Du das Handbuch wirklich wörtlich genommen hast.

Code:
update-rc.d [b]foo[/b] defaults 19


 Adding system startup for /etc/init.d/[b]foo[/b] ...
 /etc/rc0.d/K19[b]foo[/b] -> ../init.d/[b]foo[/b]
 /etc/rc1.d/K19[b]foo[/b] -> ../init.d/[b]foo[/b]
 /etc/rc6.d/K19[b]foo[/b] -> ../init.d/[b]foo[/b]
 /etc/rc2.d/S19[b]foo[/b] -> ../init.d/[b]foo[/b]
 /etc/rc3.d/S19[b]foo[/b] -> ../init.d/[b]foo[/b]
 /etc/rc4.d/S19[b]foo[/b] -> ../init.d/[b]foo[/b]
 /etc/rc5.d/S19[b]foo[/b] -> ../init.d/[b]foo[/b]
Gib dem Ding besser einen Namen, der Dir auch noch in ein paar Monaten sagt, was es macht.

Beim nächsten Script hättest Du dann auch nur noch "bar" zur Auswahl *g*

Greetz,

RM
 
Hey rain, danke für den Hinweis

foo ist nach 5 jahren programming einfach das beste was geht. Läuft einem solch ein schlingel im quelltext, oder als datei über den weg heißt es sofort: delete! Hello_world gehört aber def. mit in die nähere auswahl :D

Aber nichts für ungut, ich danke dir trotzdem! Gerade weil Du dir so viel mühe beim bolden von foo gegeben hast °lach

@super sehr schön, dann bin ich ja nicht der einzige :)
 
Zuletzt bearbeitet:
Hey, ich hab ein "ähnliches problem".

Und zwar wie kann ich programme wie mpd oder icecast als user starten? Beim boot?

Situation: Ein server, wo sich keiner vor ort einloggt oder so. Also kann auch keine xinitrc oder ähnliches verarbeitet werden (auf dem server läuft eh kein X). Aber ich muss "mpd" und "icecast -b -c /etc/icecast.xml" per normalen user starten. Den als Root programme bzw prozesse, nützen sie mir wenig, sehr wenig. Das ist der grund >
Code:
[root@server tomekk]# ERROR: You should not run icecast2 as root
Use the changeowner directive in the config file
 
Zuletzt bearbeitet von einem Moderator:
Das sollte andeuten, daß man mit su/sudo jeden Befehl als User XYZ ausführen kann, su steht mehr für Substitute User als für Superuser.

Ein ordentliches Initscript sollte allerdings AFAIK diese Möglichkeit über die Konfiguration des Scriptes selbst ermöglichen.

(z.B. eine Zeile à la "$SCRIPTUSER=$USERNAME/USERID")

Dazu wirst Du die Dokumentation Deiner Distribution bemühen müssen.

So lange dieser Satz hier:

tomekk228 schrieb:
Und zwar per config file selber

nicht bedeutet, daß nun durch eine Änderung an der Konfiguration des Dienstes als root läuft, ist alles in Butter.

(Ansonsten => siehe oben)

Greetz,

RM
 
[...]nicht bedeutet, daß nun durch eine Änderung an der Konfiguration des Dienstes als root läuft, ist alles in Butter.

mpd steht unter deamons in rc.conf (ganzer server läuft auf arch)

und in der config file von icecast, gibst ne funktion der das programm als root ausführt und dann die root rechte dropt und als tomekk weiterläuft :)

Naja, soweit ich es durch das englisch sprachige wiki von icecast verstanden habe.

Ein ordentliches Initscript sollte allerdings AFAIK diese Möglichkeit über die Konfiguration des Scriptes selbst ermöglichen.

(z.B. eine Zeile à la "$SCRIPTUSER=$USERNAME/USERID")
Z.b so? >
Code:
#!/bin/sh
mustermann=mustermann/1000
mpd
und dann läuft also nach meinem verständnis mpd als user z.b?
 
Das kann ich Dir für Arch nicht beantworten, aber hier ein Beispiel für das Initscript von tor unter openSUSE 10.2 (Auszug).

Code:
# torctl will use these environment variables
TORUSER=tor
export TORUSER
TORGROUP=tor
export TORGROUP
Aber auch da liegt wohl der entscheidende Punkt darin, daß die Anwendung "torctl" diese Ausführung als anderer User erlaubt, also ist Dein Ansatz prinzipiell richtig.

Eine Anwendung, die keine Möglichkeit bietet als non-root gestartet zu werden (oder eben über Privilege Dropping als non-root weiter zu laufen), wird man damit sehr wahrscheinlich auch nicht dazu zwingen können.

Greetz,

RM
 
Zuletzt bearbeitet von einem Moderator:
Danke für die Informationen und "verfestigung" - wieder was gelernt :)
 
ich weiß zwar nicht was mir "man su" und "man sudo" sagen soll, aber ich hab es jetzt anders hingekriegt. Und zwar per config file selber

Tja, was hätte dir das wohl sagen können?

Vielleicht das man mittels

Code:
su dein_user -c "dein_icecast_startbefehl"

icecast unter diesem user laufen lässt?

Ist natürlich nur so ein Gedanke von mir.
 
Tja, was hätte dir das wohl sagen können?

Vielleicht das man mittels

Code:
su dein_user -c "dein_icecast_startbefehl"

icecast unter diesem user laufen lässt?

Ist natürlich nur so ein Gedanke von mir.

ja, jetzt weiß ichs auch :) Danke auch noch für den hinweis :)
 

Ähnliche Themen

Runlevel Editor

Script starten ?

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Standard Programm beim Booten Starten

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

Zurück
Oben