Autostart von Scripten

*cerox*

Lt. Commander
Registriert
Feb. 2005
Beiträge
1.357
Hallo zusammen,

ich habe zwei Fragen, beide sind ziehmlich simpel aber ich kenne mich mit Linux eben noch nicht aus.

1. Ich habe meine iptables mit einem sh-Script eingebunden, funktioniert auch alles (habs mir ja mit iptables -L angesehen). Beim Neustart sind die iptables wieder weg und ich muss das sh-Script wieder öffnen. Wie kann ich die ip-tables speichern?

2. Ich würde gerne gewisse Scripts, z.B. Gameserver oder das könnte man auch bei dem iptables-Script machen, beim Systemstart automatisch starten lassen. Wo muss ich da Eintragungen machen, bzw. wo stelle ich das ein?
 
Welche Distribution? Unter Debian kannst du zum Beispiel den vollen Pfad zum Script von der Firewall oder dem Gameserver in die /etc/init.d/bootmisc.sh eintragen. Oder du schreibst dir selbst ein init-Script fuer die Firewall!

MfG
 
Es geht einfach nur darum, dass gewisse Scripte, also sh-Dateien, beim Systemstart automatisch starten.

1. Wie geht das bei Mandrakelinux 10.2 (bzw. Mandriva 2005) ?

2. Wie geht das bei SuSe?
 
bei mandrake kopierst du die scripte nach /etc/init.d/ (komisch bei mir haben die scripte keine endung :confused_alt: ) - bei suse müsste das ebenfalls funktionieren.

Danach öffnest du das Mandriva Kontrollzentrum gehst unter "System" auf "Aktivieren und Deaktivieren der Systemdienste" und setzt bei "Beim Systemstart" einen haken.

Alternativ (und wenn du kein X-Server laufen hast) erstellst du mit dem Befehl "ln -s /etc/rc5.d/S99deinscript /etc/init.d/deinscript" einen Link zu deinem Script. Wichtig das "S99" nicht vergessen und die zahl 99 darf es noch nicht geben. Falls doch einfach eine andere Zahl eintippen. Um sicher zu gehen, dass dein Script auch immer gestartet wird setzt du auch noch Links in /etc/rc1.d/ /etc/rc2.d/ ...
 
Ich habe jetzt:

Code:
ln -s /etc/rc3.d/S50ip.sh /etc/init.d/ip.sh

Die Zahlh 50 existiert noch nicht, als Fehlermeldung kommt:

ln: ,,/etc/init.d/ip.sh": Datei existiert

Was mache ich falsch? Der Link taucht auch nicht in rc3.d auf.

Ein X-Server läuft nicht.
 
ln ist auf deinem system unterschiedloich aufgebaut....
Code:
ln -s /etc/init.d/ip.sh /etc/rc3.d/S50ip.sh
sprich ln -s ziel name

außerdem solltest du einfach mal nach "linux autostart" bzw "runlevel" o.ä. googlen... gibts eigentlich idiotensichere anweisungen zu


mfg
 
Ja nach Autostart unter Linux habe ich gesucht und genug gefunden.

Ich habe ein Script unter /etc/init.d liegen, welches Routing aktiviert und die iptables lädt.

Dieses Script habe ich nun in rc5.d verlinkt. Der Link funktioniert auch, denn ich kann im Verzeichnis rc5.d mit less das Script auch anschauen.

http://www.sebastianbrandt.com/bilder/a.jpg

Hier mal ein Screen, der das noch verdeutlicht. Eigentlich sollte das Script starten wie sshd z.B., was ja auch in dem Verzeichnis liegt.

Leider funktioniert es aber trotzdem nicht - das Script wird nicht gestartet beim Systemstart (bei Runlevel 5 also).

//EDIT:
Habs jetzt hinbekommen - musste in inittab den Default Runlevel noch auf 5 setzen von 3. Aber wieso funktioniert dann der SSH-Server das würde ich mal gerne wissen - denn dieser ist unter rc5.d und ich melde mich bei dem Rechner nur über SSH an.
 
Zuletzt bearbeitet:
ganz einfach weil der AUCH im runlevel 3 drin ist ;)
 
Hm, ich bräuchte bei noch einer Sache Hilfe.

Und zwar soll beim Systemstart ein TS2 Server gestartet werden, allerdings NICHT vom System (daher kann ich es nicht so wie mit dem vorherigen Script machen) - sondern von einem Benutzer, der ts2 heißt.

Also der Benutzer soll automatisch das vorgesehene Startscript starten. Ich könnte das in die .bash_profile legen, aber dann müsste ich jedesmal den User ts2 anmelden.

Geht das auch anders?
 
du könntest einfach ein script schreiben dass per
Code:
su ts2 -c "./teamspeak2-server_startscript start"
den server startet...
nen bekannter (auch hier außem Forum :)) startet meine ich auf die Weise seinen CS1.6 server...

mfg
 
Ok, das würde so funktionieren aber dazu müsste ich es als root ausführen bzw. in die .bash_profile von root legen.

Geht es auch so, dass ich wirklich, ganz faul, nur den Rechner starten muss? Also so, dass es schon in einem Runleven gestartet wird, wie eben meine iptables, nur es sollte von einem bestimmten Benutzer ausgeführt werden und NICHT von irgendeinem Systembenutzer oder root.
 
also der besagte bekannte hat das auch einfach in einem startscript in /etc/init.d und dann symlinks in die runlevels eingetragen. und es scheint zu gehen. probier doch einfach mal! :)

mfg

PS: zur not frag ich ihn mal bei icq

EDIT: Hab mal was schönes rausgekramt aus meinem server. Ein schöner befehl namens start-stop-daemon. guck dir das mal mit help an! Hier mein /etc/init.d/amuledaemon startscript:
Code:
#!/bin/sh

DAEMON=/usr/local/bin/amuled

case "$1" in
  start)
	echo -n "Starting aMule daemon:"

	echo -n " amuled"
        if start-stop-daemon --quiet --stop --signal 0 --exec $DAEMON --name amuled
	then
		echo " already running."
		exit
	fi
	/sbin/start-stop-daemon --start --quiet --exec $DAEMON -- -f>/dev/null
	echo "."
	;;
  stop)
	echo -n "Stopping aMule daemon:"
	echo -n " amuled"
	if start-stop-daemon --quiet --stop --signal 0 --exec $DAEMON --name amuled
	then
		start-stop-daemon --quiet --stop --exec $DAEMON --name amuled
		while start-stop-daemon --quiet --stop --signal 0 --exec $DAEMON --name amuled 2>/dev/null; do sleep 1; done
		echo "."
	else
		echo " not running.";
	fi

	;;
  force-reload|restart)
	$0 stop
	$0 start
	;;
  *)
	echo "Usage: /etc/init.d/amuled {start|stop|restart|force-reload}"
	exit 1
esac

exit 0
 
Zuletzt bearbeitet:
Hi,
das geht natürlich auch
ich habe für meinen Server ein eigenes Script angelegt (/etc/init.d/server)
welches nur dafür da ist Daemons zu starten (TS, HLTV,HLDS,mlDonkey ...)
dieses linkst du dann in rc3.d, bei suse also:
Code:
ln server /rc3.d/Sxxserver
xx steht für die Reihenfolge beim starten.
Ich empfehle es als letztes zu starten da manche Daemons andere Dienste benötigen und so vorher gestartet werden müssen.
Dasist zwar nicht die beste lösung da die daemons nicht beim beenden ordnungsgemäß
beendet werden, tut aber seinen Zweck.
 
Erstmal danke für eure Hilfe die ganze Zeit.

Folgendes Problem:

Wenn ich das teamspeakserver startscript ausführe, wird der Server problemlos gestartet.

Wenn das allerdings das hier mache:

Code:
su ts2 -c "/home/ts2/tss2_rc2/teamspeak2-server_startscript start"

dann kommt.

starting the teamspeak server...

couldn't find server_linux
 
Zurück
Oben