"check if running script"

Status
Für weitere Antworten geschlossen.

manufact

Benutzer
Mitglied seit
13. Jan 2017
Beiträge
23
Punkte für Reaktionen
0
Punkte
1
hat jemand einen vorschlag, wie man am besten ein script einrichtet, welches nach bestimmter zeit überprüft, ob ein porgramm (prozess) noch rennt und falls nötig dann das programm neustartet?


ich habs mal probiert:



1. checkoscam.sh in /volume2/oscam/

#!/bin/sh
ps auxw | grep oscam | grep -v grep > /dev/null

if [ $? != 0 ]
then
cd /volume2/oscam
./oscam - c /volume2/oscam
fi

2. chmod 755 für checkoscam.sh

3. weitere zeile in corontab:

* * * * * root /volume2/oscam/checkoscam.sh




funzt leider nicht
 
Zuletzt bearbeitet:

dil88

Benutzer
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
31.023
Punkte für Reaktionen
2.515
Punkte
829
Leite die Ausgabe des Skripts in eine Datei um und schau, was da kommt.
 

hvkls

Benutzer
Mitglied seit
23. Dez 2012
Beiträge
463
Punkte für Reaktionen
0
Punkte
22
Im Code ist ein Leerzeichen zu viel, "./oscam - c" statt "./oscam -c". Außerdem tippe ich, dass man $PATH mitgeben sollte. Drittens können nicht alle Shells (busybox ash in DSM 5.2 zum Beispiel) "ps auxw", ich würde "ps w" nehmen oder explizit eine bestimmte Shell angeben.
 

manufact

Benutzer
Mitglied seit
13. Jan 2017
Beiträge
23
Punkte für Reaktionen
0
Punkte
1
#!/bin/sh

ps w | grep oscam | grep -v grep > /dev/null

if [ $? != 0 ]
then
/volume2/oscam/oscam -b -c /volume2/oscam
fi


habs korrigiert.... ausser $PATH...weiss nicht wie man das genau angeben muss und weshalb.


nun....das Script startet oscam wenn ich es ausführe.

Jedoch wenn ich das script nochmals ausführe, startet es oscam nochmals und nochmals.....

d.h. für mich das

hier irgendwo der fehler liegt:

ps w | grep oscam | grep -v grep > /dev/null

if [ $? != 0 ]
 

Tommi2day

Benutzer
Mitglied seit
24. Aug 2011
Beiträge
1.196
Punkte für Reaktionen
73
Punkte
68

manufact

Benutzer
Mitglied seit
13. Jan 2017
Beiträge
23
Punkte für Reaktionen
0
Punkte
1
evtl. so

if [ $? -ne 0 ]

auch nicht....
oscam wird immer wieder gestartet beim script ausführen, obwohl es schon läuft


ich hab no ein 2. script

#!/bin/sh

# Oscam-Watchdog-Skript das alle 20 Sekunden überprüft, ob Oscam läuft und gegebenenfalls neu startet.
# Dabei wird protokolliert, wie oft es abgefragt, bzw. Oscam neu gestartet werden musste.
#

while sleep 20
do
if ps w | grep -v grep | grep -w -c "/volume2/oscam/oscam"
then
echo""
echo `date` "Oscam läuft" >> /volume2/oscam/log/check_oscam.log
else
killall oscam
sleep 1
echo `date` "Neustart Oscam..." >> /volume2/oscam/log/oscam-crash.log
/volume2/oscam/oscam -b -c /volume2/oscam &
fi
done

dieses restartet oscam jedoch alles x (hier 20) sekunden, obwohl es bereits läuft
 
Zuletzt bearbeitet:

laserdesign

Benutzer
Mitglied seit
11. Jan 2011
Beiträge
2.560
Punkte für Reaktionen
50
Punkte
94
Rich (BBCode):
ps w | grep oscam | grep -v grep > /dev/null

gebe mal which ps im Terminal ein, dann sollte die Ausgabe /bin/ps kommen.

Das setzt du dann in deinem Script ein.

Rich (BBCode):
/bin/ps w | grep oscam | grep -v grep > /dev/null

/bin/ps auxw sollte unter DMS 6 funktionieren.
 
Zuletzt bearbeitet:

manufact

Benutzer
Mitglied seit
13. Jan 2017
Beiträge
23
Punkte für Reaktionen
0
Punkte
1
Rich (BBCode):
ps w | grep oscam | grep -v grep > /dev/null

gebe mal which ps im Terminal ein, dann sollte die Ausgabe /bin/ps kommen.

Das setzt du dann in deinem Script ein.

Rich (BBCode):
/bin/ps w | grep oscam | grep -v grep > /dev/null

/bin/ps auxw sollte unter DMS 6 funktionieren.


geht auch nicht....dasselbe. oscam startet obwohl schon läuft
 

PsychoHH

Benutzer
Mitglied seit
03. Jul 2013
Beiträge
2.967
Punkte für Reaktionen
4
Punkte
78
Schon mal auf der Konsole den Befehl eingegeben ohne Umleitung?
Dann kannst du ja sehen ob du ihn findest
 

manufact

Benutzer
Mitglied seit
13. Jan 2017
Beiträge
23
Punkte für Reaktionen
0
Punkte
1
so gehts

in /volume2/oscam/ check.sh:

if /bin/ps auxw | grep -v grep | grep -w -c "/volume2/oscam/oscam"
then
echo""
else
killall oscam
sleep 2
echo `date` "Neustart Oscam..." >> /volume2/oscam/log/oscam-crash.log
/volume2/oscam/oscam -b -c /volume2/oscam &
fi


in crontab dann noch

* * * * * root /volume2/oscam/check.sh




----------------------------------------------------------------------------------------------

das hauptproblem war wohl die falsche if bedingung
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat