[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

einzelner Befehl innerhalb eines Script wird nicht ausgeführt, wenn es per cron gestartet wird - in einer bash funktioniert es aber



Hallo,

ich übersehe wahrscheinlich etwas und brauche daher mal Eure Mithilfe
für meinen begrenzten Horizont.

Auf einem Bananapi mit ARMBIAN Debian GNU/Linux 8 (jessie) 4.8.4-sunxi
möchte ich per cron einen Dienst (prosody 0.9.10-1~jessie1
armhf        Lightweight Jabber/XMPP server) überwachen.

Dazu habe ich per crontab -e (per root) folgende Zeile eingefügt:
 * * * * * /usr/local/sbin/dienstueberwachung_lua_5_1_chat (wird noch
auf */5 * * * * geändert, falls es mal funktioniert)

Die Rechte sind folgende:
-rwxr-xr-x 1 root root 768 Okt 28 00:01
/usr/local/sbin/dienstueberwachung_lua_5_1_chat

Listing von dienstueberwachung_lua_5_1_chat:

#!/bin/sh
PROZ=prosody
APP=$(ps aux | grep -v grep | grep prosody)
if [ -n "$APP" ]
then
  echo "$APP"
  echo "[$(date +"%Y-%m-%d %H:%M")]    lua laeuft"
  echo "[$(date +"%Y-%m-%d %H:%M")]    lua laeuft" >>
/var/log/lua-watchdog.log
  echo "lua ist aktiv"
else
  echo "prosody wird gestartet"
  echo "[$(date +"%Y-%m-%d %H:%M")]    lua wurde neu gestartet"
  echo "[$(date +"%Y-%m-%d %H:%M")]    lua wurde neu gestartet" >>
/var/log/lua-watchdog.log
  cd  /usr/sbin/
  /usr/bin/logger "cd  /usr/sbin/ ausgefuehrt: $(/bin/date)"
  service prosody start
  /usr/bin/logger "ausgefuehrt: $(/bin/date)"
fi

service cron restart ist erfolgt und meine eingebauten Überprüfungen
funktionieren auch. Leider wird der prosody Dienst nur neu gestartet,
wenn ich das script in einer bash starte, siehe folgendes Beispiel:

 # /usr/local/sbin/dienstueberwachung_lua_5_1_chat
prosody wird gestartet
[2016-10-28 13:24]    prosody wurde neu gestartet
Starting Prosody XMPP Server: prosody.
...
bei nochmaligen start erscheint richtigerweise:
# /usr/local/sbin/dienstueberwachung_lua_5_1_chat
prosody  25340  1.3  0.6   8364  6248 ?        S    13:24   0:00
/usr/bin/lua5.1 /usr/bin/prosody
[2016-10-28 13:24]    prosody laeuft
prosody ist aktiv

manuelle Kontrolle:
# /bin/ps ax | /bin/grep 'prosody' | /bin/grep -v '/bin/grep'
25340 ?        S      0:01 /usr/bin/lua5.1 /usr/bin/prosody

Beende ich manuell prosody und schaue mir dann das Log an,
welches durch den laufenden cron Job erzeugt wird:
# tail -f /var/log/lua-watchdog.log
[2016-10-28 14:06]    lua wurde neu gestartet
[2016-10-28 14:07]    lua wurde neu gestartet
[2016-10-28 14:07]    lua wurde neu gestartet
(zwischendurch manueller Aufruf des Scriptes
/usr/local/sbin/dienstueberwachung_lua_5_1_chat)
[2016-10-28 14:08]    lua laeuft
[2016-10-28 14:09]    lua laeuft

scheint auch die if then else Schleife zu funktionieren.
Nur, er startet den Dienst nicht :-(

Hier noch ein Logfile, dass den Lauf des cron jobs anzeigt:
# cat /var/log/syslog |grep 14\:06
Oct 28 14:06:01 localhost CRON[26141]: (root) CMD
(/usr/local/sbin/dienstueberwachung_lua_5_1_chat)
Oct 28 14:06:01 localhost logger: cd  /usr/sbin/ ausgefuehrt: Fr 28. Okt
14:06:01 CEST 2016
Oct 28 14:06:01 localhost logger: ausgefuehrt: Fr 28. Okt 14:06:01 CEST 2016
Oct 28 14:06:01 localhost CRON[26137]: (CRON) info (No MTA installed,
discarding output)

Mit dem fehlenden MTA kann's doch nicht zusammenhängen?...


/etc/init.d/prosody start habe ich als Ersatz für service prosody start
auch schon getestet, da brachte aber keine Veränderung.

Ich hoffe auf einen hilfreichen Hinweis ;-)

Falls ich wichtige Fakten vergessen habe, bitte kurz darauf hinweisen...


Grüße Heiko


Reply to: