grex09
Goto Top

Startscript, nach Absturz automatisch neustarten

Hallo, ich poste hier mal mein startscript:

[code]
#! /bin/bash

case "$1" in
start)
if [ -e server.pid ]; then
echo "server.pid existiert bereits";
exit 1
else
echo "Server wird hochgefahren"
if [ -e samp02Xsvr ]; then
if [ ! -x samp02Xsvr ]; then
echo "Bitte nochmal ausfuehren "
chmod u+x /home/samp02Xsvr
fi
if [ -x start.sh ]; then
./start.sh
pidof samp02Xsvr > server.pid
else
echo "start.sh existiert nicht, bitte ueberpruefen"
exit 4
fi
else
echo "Konnte start.sh nicht finden"
exit 5
fi
fi
;;
stop)
if [ -e server.pid ]; then
echo -n "Server wird runtergefahren"
if ( kill -TERM `cat server.pid` ); then
for c in $(seq 1 300); do
if [ -e server.pid ]; then
echo -n "."
sleep 1
fi
done
fi
if [ -e server.pid ]; then
echo "Server wurde nicht ordnungsgemaes runtergefahren"
kill -KILL `cat server.pid`
rm server.pid
sleep 5
else
echo "done"
fi
else
echo "server.pid nicht vorhanden, Server nicht gestartet?"
exit 7
fi
;;
restart)
;;
status)
if [ -e server.pid ]; then
echo "Der Server laeuft ordnungsgemaes."
exit 0
else
echo "Der Server lauft derzeit nicht!"
exit 3
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 2
esac
exit 0

[/code]

Und zwar möchte ich dass er in regelmäßigen abständen überprüft ob die PID in der sever.pid existiert, wenn ja nichts machen, wenn nein, ./startscript restart ausführen...

Kann mir dabei jemand helfen, oder gleich eines posten, wenn das hier nicht funktionieren sollte.


[Edit Biber] Verschoben von "Linux/Unix Systemdateien" nach "IT-Sicherheit"->"Angriffserkennung und Abwehr" [/Edit]

Content-Key: 109385

Url: https://administrator.de/contentid/109385

Ausgedruckt am: 19.03.2024 um 11:03 Uhr

Mitglied: harti85
harti85 19.02.2009 um 09:58:15 Uhr
Goto Top
Also da müsstest ja auf CRON-Jobs zurückgreifen und dort eben stündlich, halbstündlich, wie du es willst, einstellen:
#!/bin/bash
pidfile = "<vollständiger pfad zu deiner pid-file>"  
if [ -e $pidfile] then
pid = `cat $pidfile`
result = `ps -ef | grep $pid | wc -l`

if [ $result -lt 1 ]
  /etc/init.d/startscript restart
fi

fi

Bei stündlicher Ausführung müsstest du dieses Script nur unter /etc/cron.hourly/ einfügen und ausführbar machen. (ist jedenfalls bei den meisten Linux Systemen so.

Gruß Martin
Mitglied: Grex09
Grex09 19.02.2009 um 12:43:31 Uhr
Goto Top
Danke, werde den Server heute Nacht einmal abschmieren lassen, mal schauen ob er neu startet. Ist es eigentlich gut, jede Minute das Script uszuführen?, kommt es dann nicht zu "lags" jede Minute ?, oder "spürt" man davon kaum was ? , hatte noch nie was mit Crontabs direkt unter Linux zu tun ( nur über Programme, Webapplikationen usw. ).

Achja das mit den Rechten hat sich erledigt :D
Mitglied: harti85
harti85 19.02.2009 um 12:47:00 Uhr
Goto Top
Ich würds auf 0700 ändern, weil das script ja als root gestartet werden soll oder? Voraussetzung dafür ist, dass du das Script als root erstellst bzw dann mit chown root dem superuser zuteilst.

wichtig ist jedenfalls das x-Flag, welcher User es auch immer ausführen soll. Wie gesagt, das müsstest über crontab -eu <user> steuern. Schätzungsweise aber als root, daher reichts des script mit 700 Rechten ins /etc/cron.hourly verzeichnis zu kopieren, dann führt ers jede Stunde aus.

Gruß Martin
Mitglied: Grex09
Grex09 19.02.2009 um 13:04:20 Uhr
Goto Top
Hi, hab oben zwar was editiert, jedoch möchte ich noch hier was dazuschreiben.

Habe die Datei die ins Verzeichnis erstellt unter dem user ( beispiel: a ). Habe crontab -e gemacht und
  • * * * * Meinverzeichnis/crontab
gemacht, so sollte es doch funktionieren oder ? ( war als user a eingeloggt, für das erstellen des Crontabs).


EDIT: Der Aufzählungszeichen sollte ein * sein, nimmt er nicht wirklich an, trotz Leerzeichen, naja.
Mitglied: harti85
harti85 19.02.2009 um 13:09:42 Uhr
Goto Top
Ja, sollte so funktionieren.

Zum Testen, ob ers wirklich jede Minute als user A ausführt würd ich dann am Ende meines Scripts noch date >> <pfad wo dus hinhaben willst> schreiben, dann siehst, wann er das script ausführt.

Zeit sollte übrigens kein Problem sein, weil des Script ja relativ schnell fertig sein sollte.
Mitglied: Grex09
Grex09 19.02.2009 um 13:13:16 Uhr
Goto Top
ok danke, jo schon wie oben gesagt, ich lasse mal den server heute abschmieren, ob er den crontab ausführt.
Und nur rein interssehalber, kann man auch jede Sekunde prüfen lassen?, würde das gehen mit
/60 * * * * meinscript/crontab

?
Mitglied: harti85
harti85 19.02.2009 um 13:53:30 Uhr
Goto Top
Also, meines technischen Know-Hows geht das nicht, ich lasse mich allerdings gerne besserem belehren. Wie gesagt, ich habs noch nie gebraucht und auch noch nicht gelesen/gehört.

Wäre auch in den meisten Fällen verbratene Rechenleistung. Dann könnte man ja gleich im Script selbst drauf warten mit sleep <Millisekunden> z.B.
Mitglied: Grex09
Grex09 19.02.2009 um 16:17:11 Uhr
Goto Top
ok danke ! für die Infos.

Mfg
Grex09
Mitglied: Biber
Biber 19.02.2009 um 19:05:42 Uhr
Goto Top
Moin grex09,

<OT>
ich kann ja bei "Linux & Unix"-"Systemdateien" nicht wirklich viel helfen, aber Dein Titel...
Startscript, wenn server absützt automitsch staten
erscheint mir -wohlgemerkt als Laie- doch ein wenig optimierbar für unsere Forumssuch-Funktion bzw. UserInnen mit ähnlichen Problemen.
Könntest Du diesen Titel, wenn Du wieder im Forum sein solltest, ein bissi editieren?

Dafür wäre sehr dankbar
Biber
</OT>
Mitglied: Grex09
Grex09 19.02.2009 um 21:48:08 Uhr
Goto Top
Hi, welche Titel sollte ich denn nenne ?

EDIT: Funktioniert nun, bei der zweiten Abfrage gehört noch ein ;then und bei der ersten Abfrage fehlt das ";" vor then.

mfg
Grex
Mitglied: Biber
Biber 20.02.2009 um 00:19:46 Uhr
Goto Top
<Nu' aber voll OT>
Hmmmmmmmmm, Grex09,

welche Titel sollte ich denn nenne ?
Dieser Karneval macht mich jedes Jahr fertig... allein diese Sprache....*seufz*

ich versuche mal, laaaaaangsam einen Verbesserungsvorschlag herzuleiten:
[Dein jetziger Titel]
Startscript, wenn server absützt automitsch staten
Zu dem mir nicht geläufigen Fachterminus "absützt" habe ich eine der bekannteren Suchmaschinen bemüht.

Dazu werden (außer Deinem Beitrag) auch unter anderem dieser Thread auf der Seite www.aiqum.de gefunden:
Es gibt 2 Threads dazu........Bauchmuskeln und weibliche Brust. Bei der weiblichen Brust gibt es eine Übung bei der man seitlich liegt und sich absützt, das wäre z.B. etwas für dich.
Quelle: Forum aiqum.de

Jahaa....... das Thema "weibliche Brust absützen" hat mich zwar auch immer schon irgendwie interessiert.
Aber bei den genannten Sprachakrobaten geht es - ich zitiere (und habe mich beim Lesen fast eingenässt) um:
Dauerhaft abnehmen über gesundes Abnehmen sollte das Ziel heißen - und das ist exakt die Kunst, die AIQUM perfekt beherrscht!
Quelle: Abnehmen leicht schnell abnehmen warum abnehmen ]

Wer solche Ziele wie "Abnehmen über Abnehmen" über solche Wege formulieren kann, verfügt sicherlich über eine ziemlich geradlinige und unkomplizierte Denkweise, aber, um auf das eigentliche Thema "absützen" zurückzukommen:
Ich kann mir NICHT vorstellen, dass Dein Server so etwas macht!

.... aber okay, ich bin auch kein Unix-Guru....

Mehr Tipps gebe ich aber erstmal nicht zum Thema Titel-Editieren....

Grüße
Biber
</Nu' aber voll OT>
Mitglied: Grex09
Grex09 20.02.2009 um 00:27:47 Uhr
Goto Top
hehe face-smile danke für dein Vortrag.
So, leider funktioniert es nicht, siehe:
#!/bin/bash

pidfile="/home/server.pid"  

if [ -e $pidfile ]; then
	pid=`cat $pidfile`
	result=`ps -ef | grep $pid | wc -l`

	if [ $result -lt 1 ]; then
	/home/startscript restart
	fi
fi
sieht da jemand einen Fehler?
Ich führe es aus, kein Fehler kommt, jedoch der Befehl wird nicht ausgeführt, also der /home/startscript restart Befehel.


Mfg
Grex
Mitglied: 16568
16568 20.02.2009 um 08:02:46 Uhr
Goto Top
Wer einen Cron mit * * * * * (also WIRKLICH jede Minute!) ausführt, der ist bißchen pervers veranlagt...

Wie wäre es, anstelle den Server zu quälen, ein anständiges Programm/Script zu schreiben, daß nicht andauernd abstürzt?

Aber das ist nur meine bescheidene Meinung, ich war mal so frei, einen anderen Spezialisten auf diesem Gebiet zu konsultieren...
(meldet sich hier vielleicht auch noch mal zu Wort...)


Lonesome Walker
Mitglied: Grex09
Grex09 20.02.2009 um 13:57:16 Uhr
Goto Top
sry das ist nicht mein Programm, daher habe ich keine Source codes und kann eben nicht bearbeiten. Es sieht so aus, dass einer einen Crashcode sendet, der den Server crashen lässt. Wenn man aber hier als Idiot dargestellt wird, dann werde ich mir von wo anders die Hilfe holen....

Mfg
Grex
Mitglied: gnarff
gnarff 20.02.2009 um 16:12:50 Uhr
Goto Top
Ich sehe nicht, dass dich hier irgendwer als Idiot dargestellt hat; es ging wohl um deine Rechtschreibfehler.

Was heisst hier, dass jemand einen Crashcode sendet?
Wenn es moeglich ist, dass dir jemand mit einem Exploit den Server abschiesst, dann ist nicht ein Autoreboot script - was als Funktion sowieso in den meisten *nix systemen vorhanden ist - das Mittel der Wahl, sondern sein Betriebssystem zu patchen und den Angreifer auszusperren.

Dann verstehe ich auch nicht das ganze herumgecode. Du hast einen Linux SA-MP Gameserver laufen und der bringt bereits alle Skripte mit, die du benoetigst um das gute Stueck Online zu halten; in diesem Fall mit
 nohup ./restart.sh &

Die restart.sh sieht so aus:
 #!/bin/sh
log=samp.log
dat=`date`
samp="/path/to/samp/server/samp02Xsvr"  
cd /path/to/samp/server
 
echo "${dat} watchdog script starting." >>${log}  
while true; do
        echo "${dat} Server exited, restarting..." >>${log}  
        mv /path/to/samp/server/server_log.txt /path/to/samp/server/logs/server_log.`date '+%m%d%y%H%M%S'`  
        ${samp} >> $log
	sleep 2
done

Wie du siehst braucht es dazu keinen cronjob.
Weitere Skripte in der Gebrauchsanweisung

Der Thread gehoert nach Angriffserkennung und Abwehr verschoben.

Saludos
gnarff
Mitglied: Grex09
Grex09 20.02.2009 um 16:19:07 Uhr
Goto Top
Hallo,
ok danke und es tut mir leid, für meinen Ausdruck in meinen vorherigen Post.

Mfg
Grex09
Mitglied: Biber
Biber 20.02.2009 um 17:35:01 Uhr
Goto Top
<OT III>
Moin grex09,

ich habe den Beitrag jetzt verschoben nach "Angriffserkennung und -abwehr" wie von gnarff vorgeschlagen.

Und um eventuellen Missverständnissen vorzubeugen:
Ich wollte zu keinem Zeitpunkt zum Ausdruck bringen, dass ich Dich für nicht lernfähig halte.
Als pingeliger und hanseatisch-biederer, ordnungsliebender und humorloser unterkühlter Bremer konnte ich an der (ursprünglichen) Beitragsüberschrift nicht vorbeigehen.

Ich weiß nicht, ob Du den Loriot-Sketch "Das Bild hängt schief..." kennst?

Egal - meine OT-Kommentare weiter oben sollten jedenfalls keine Beleidigung und kein persönlicher Angriff sein.

So, genug offgetopict für heute - schönes Wochenende allen
Biber
</OT III>
Mitglied: Grex09
Grex09 21.02.2009 um 12:55:33 Uhr
Goto Top
Danke, dir auch und an alle schönes Wochenende.