grep voodooo

November 26th, 2012 § 3 comments

Seit einigen Wochen nutzen wir u.a. fuer Swopspot den github-clone gitlab. Soweit - Sogut. Alles schoen. Doof nur, das der verwendete resque server abundan aussteigt und dann werden die Aenderungen der git-repositories nicht an gitlab weitergereicht. Also bekomm ich dann (nach dem die Notifications zwei Tage haengen) eMails mit der Bitte mal zu gucken... Das spiel habe ich dann jetzt drei mal gespielt und keine Lust mehr gehabt... Nachdem man einmal weis woran es liegt kann man das bequem die Maschine uebernehmen lassen...

Also dachte mir ich, k bauste fix nen shell script, was guckt ob sich irgendwo noch resque Prozesse finden, und wenn nicht, dann starte ihn halt wieder...

Dann sah die erste Version so aus:

 #!/bin/bash

FINDRESQUEPROCESS=$(echo `ps -ef | grep resque | grep -vc grep`)
# den grep Prozess wollen wir natuerlich nicht mitzaehlen ;)
# -v invertiert die Suche und -c zaehlt die Ergebnisse

if [ $FINDRESQUEPROCESS != "0" ]; then
  echo "resque is running."
  echo "nothing to do here."
  exit 0
else
  echo "resque is not running!"
  echo "starting resque for you..."
  sudo su - gitlab bash -c "cd gitlab && ./resque.sh && exit"
  exit 0
fi
exit 1

# ./check-resque.sh
4

4? Sollte dort nicht 1 stehen? Mhm...
Also lassen wir uns testweise mal ausgeben was gefunden wird.

# ./check-resque.sh
gitlab 11727 1 0 01:04 ? 00:00:05 resque-1.20.0: Waiting for post_receive,mailer,system_hook
root 23013 5903 0 13:51 pts/9 00:00:00 /bin/bash ./check-resque.sh
root 23014 23013 0 13:51 pts/9 00:00:00 /bin/bash ./check-resque.sh
root 23015 23014 0 13:51 pts/9 00:00:00 /bin/bash ./check-resque.sh

Gut, das erklaert die Sache, das Script enthaelt natuerlich auch resque im Namen und wird somit gefunden. Also muessen wir das Script selbst auch aus dem Ergebniss nehmen.

 #!/bin/bash

THISSCRIPT=`basename $0`
FINDRESQUEPROCESS=$(echo `ps -ef | grep resque | grep -v $THISSCRIPT | grep -vc grep`)

if [ $FINDRESQUEPROCESS != "0" ]; then
  echo "resque is running."
  echo "nothing to do here."
  exit 0
else
  echo "resque is not running!"
  echo "starting resque for you..."
  sudo su - gitlab bash -c "cd gitlab && ./resque.sh && exit"
  exit 0
fi
exit 1

Cron fuehrt das Script jetzt einfach alle 30 Minuten aus und Ruhe is' (hoffentlich).

Tagged , , , , ,

§ 3 Responses to grep voodooo"

  • es tut mir leid, das ich euch in der Luft zerreissen muss:

    pidof resque >/dev/null || {
    restart_resque
    }

    das kann dann auch leicht ein cron.minutely sein....

  • Padde sagt:

    Geht auch mit einem eigens dafür geschriebenen framework namens GOD, welches auch in Ruby geschrieben ist und ziemlich schlaue Sachen kann.

  • Bernd sagt:

    @basti: mhm k. muss man wissen.

    :-)

    mitlerweile is es aber eh obsolete :/ gitlab verwendet nun sidekiq

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

What's this?

You are currently reading grep voodooo at maschinenraum.

meta