Dies ist eine mobil optimierte Seite, die schnell lädt. Wenn Sie die Seite ohne Optimierung laden möchten, dann klicken Sie auf diesen Text.

Problem mit OScam Start-Script /usr/local/bin/oscamchk

D1no

Ist gelegentlich hier
Registriert
18. Februar 2013
Beiträge
33
Reaktionspunkte
4
Punkte
8
Hallo Zusammen

ich würde gerne ein oscamchk Script haben das prüft, ob oscam läuft oder nicht.
Falls nicht via crontab dann entsprechend neustarten.

Im Skript habe ich folgendes stehen:
Problem scheint das wenn oscam bei mir startet ich 2 Prozess Id´s zurück kommt:
ps -e | grep oscam
7747 ? 00:00:00 oscam
7748 ? 00:00:00 oscam

Bash:
 sudo systemctl status oscam
● oscam.service - OScam
   Loaded: loaded (/etc/systemd/system/oscam.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-04-28 11:10:17 CEST; 5min ago
  Process: 7736 ExecStop=/usr/bin/rm /var/run/oscam.pid (code=exited, status=203/EXEC)
  Process: 7746 ExecStart=/usr/local/bin/oscam -b -B /var/run/oscam.pid (code=exited, status=0/SUCCESS)
Main PID: 7748 (oscam)
    Tasks: 27 (limit: 4915)
   CGroup: /system.slice/oscam.service
           ├─7747 /usr/local/bin/oscam -b -B /var/run/oscam.pid
           └─7748 /usr/local/bin/oscam -b -B /var/run/oscam.pid

Bash:
#!/bin/bash

if [ ! $(ps -e | grep  "oscam") ]; then
    systemctl start oscam
fi

Beim ausführen des Scripte bekomme ich dann zuück:
/etc/systemd/system# /usr/local/bin/oscamchk
/usr/local/bin/oscamchk: line 3: [: too many arguments

Es liegt daran das zwei Prozess Id´s gefunden werden.
Hat jemand eine Ahnung wie ich das beheben kann das "Ps" nur einmal oscam findet?
 
du musst für deinen Watchdog auch nur überprüfen, ob OSCam läuft. Anzahl der Prozesse spielt dabei keine Rolle

Mache doch z.B. einen "Count" der Prozesse daraus; wenn "Count" > 0 = läuft sie...
 
Hast du ein Beispiel dafür als Skript?
 
bei einem "ps ax | grep oscam" wird auch immer der eigene "grep"-Prozess gefunden, sagt also nicht unbedingt etwas aus. Schau mal, ob dir "pgrep" zur Verfügung steht, falls nicht, schaue dir unten die Lösung per "grep" an.

Bsp.:
Code:
root@rec-gbue4k-buero:~# ps ax | grep oscam
 2078 ?        Ss     0:00 /usr/bin/oscam -b -r 2 -u -c /usr/keys
 2079 ?        Sl     0:02 /usr/bin/oscam -b -r 2 -u -c /usr/keys
 9608 pts/0    S+     0:00 grep oscam
root@rec-gbue4k-buero:~# pgrep -c oscam
2

Wenn du es halt nur per "grep" checkst, musst den eigens gestarteten "grep"-Prozess ignorieren:
Code:
root@rec-gbue4k-buero:~# ps ax | grep -v grep | grep oscam
 2078 ?        Ss     0:00 /usr/bin/oscam -b -r 2 -u -c /usr/keys
 2079 ?        Sl     0:03 /usr/bin/oscam -b -r 2 -u -c /usr/keys
 
Ich hab es jetzt folgendermaßen gelöst und das ganze in die cron gepackt.

Code:
PIDFILE=/var/run/oscam.pid
if (kill -0 `cat $PIDFILE`)
   then
      echo "it's alive!";> /dev/null
   else
      rm $PIDFILE
      systemctl start oscam > /dev/null
      echo "OSCAM restarted at `date`" >> /var/log/oscam-crash.log
fi
 
Hi,
was hälst du von dieser Variante?
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…