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

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



Danke an Christian für die Denkanstöße

* * * * * env >> /root/env
ergiebt:

cat /root/env
LANGUAGE=en_US.UTF-8
HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
LANG=de_DE.UTF-8
LC_MESSAGES=POSIX
SHELL=/bin/sh
PWD=/root

ein in der bash (in der das Script ja funktioniert) ausgeführtes env
ergibt folgendes:
# env
XDG_SESSION_ID=c1
SHELL=/bin/bash
TERM=screen
USER=root
TERMCAP=SC|screen|VT 100/ANSI X3.64 virtual terminal:\
        :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\
        :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\
        :do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\
        :le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\
        :li#57:co#140:am:xn:xv:LP:sr=\EM:al=\E[L:AL=\E[%dL:\
        :cs=\E[%i%d;%dr:dl=\E[M:DL=\E[%dM:dc=\E[P:DC=\E[%dP:\
        :im=\E[4h:ei=\E[4l:mi:IC=\E[%d@:ks=\E[?1h\E=:\
        :ke=\E[?1l\E>:vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\
        :ti=\E[?1049h:te=\E[?1049l:us=\E[4m:ue=\E[24m:so=\E[3m:\
        :se=\E[23m:mb=\E[5m:md=\E[1m:mh=\E[2m:mr=\E[7m:\
        :me=\E[m:ms:\
        :Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\
        :vb=\Eg:G0:as=\E(0:ae=\E(B:\

:ac=\140\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:\
        :po=\E[5i:pf=\E[4i:Km=\E[M:k0=\E[10~:k1=\EOP:k2=\EOQ:\
        :k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:\
        :k8=\E[19~:k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:\
        :F3=\E[1;2P:F4=\E[1;2Q:F5=\E[1;2R:F6=\E[1;2S:\
        :F7=\E[15;2~:F8=\E[17;2~:F9=\E[18;2~:FA=\E[19;2~:kb=:\
        :K2=\EOE:kB=\E[Z:kF=\E[1;2B:kR=\E[1;2A:*4=\E[3;2~:\
        :*7=\E[1;2F:#2=\E[1;2H:#3=\E[2;2~:#4=\E[1;2D:%c=\E[6;2~:\
        :%e=\E[5;2~:%i=\E[1;2C:kh=\E[1~:@1=\E[1~:kH=\E[4~:\
        :@7=\E[4~:kN=\E[6~:kP=\E[5~:kI=\E[2~:kD=\E[3~:ku=\EOA:\
        :kd=\EOB:kr=\EOC:kl=\EOD:km:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
LC_MESSAGES=POSIX
STY=2879.pts-0.bananapi
PWD=/root
LANG=de_DE.UTF-8
HOME=/root
SHLVL=2
LANGUAGE=en_US.UTF-8
LOGNAME=root
WINDOW=2
_=/usr/bin/env

in Zeile 59 von /etc/init.d/prosody steht
        if start-stop-daemon --start --quiet --oknodo --pidfile
"$PIDFILE" --chuid prosody $(start_opts) --exec "$RUNTIME" -- "$DAEMON";
then

lokaler Mailversand (mit exim & heirloom-mailx) ist eingerichtet, welche
Ereignisse kann/soll ich per Mail versenden ?

$ mail
Heirloom mailx version 12.5 6/20/10.  Type ? for help.
"/var/mail/heiko": 5 messages 3 new 4 unread
 O  1 Heiko              Sat Oct 29 23:52   22/666   „Testmail“
 U  2 root               Sat Oct 29 23:56   22/659   „Testmail“
>N  3 Heiko              Sat Oct 29 23:57   21/655   „Testmail“
 N  4 root               Sat Oct 29 23:57   21/650   „Testmail2“
 N  5 root               Sat Oct 29 23:57   21/650   „Testmail3“


Das cron nicht unbedingt dafür gedacht, als watchdog zu fungieren, ist
mir schon klar. Aber Tools wie Monit extra zu installieren, wenn ein
paar Zeilen Code in einem Script das gleiche bewirken? Dass es nicht
funktioniert, weiss man ja erst später. Und meist lernt man bei der
Fehlersuche ja auch einiges ;-)

/etc/inittab gibts übrigens noch, aber da habe ich auch keinen
Denkansatz, wie ich das zur Dienstüberwachung nutzen könnte und müsste
mich auch erst mal einlesen ...

Bin gespannt, ob meine neuen Infos Ideen zur Lösungsfindung bzw.
-eingrenzung hervorbringen ;-)

VG Heiko

Am 29.10.2016 um 17:52 schrieb Christian Knoke:
> Heiko Weiß schrieb am 29. Oct um 16:57 Uhr:
> 
>>   service prosody start 2>&1 | tee /var/tmp/meinlog
> 
>> /usr/local/sbin/dienstueberwachung_lua_5_1_chat: 17:
>> /usr/local/sbin/dienstueberwachung_lua_5_1_chat: service: not found
> 
> 
>> /etc/init.d/prosody start 2>&1 | tee /var/tmp/meinlog
>>
>> Starting Prosody XMPP Server: prosody/etc/init.d/prosody: 59:
>> /etc/init.d/prosody: start-stop-daemon: not found
>>  failed!
> 
>> scheinbar hängt es ja doch mit dem unbekannten Pfad zu service zusammmen?!
> 
> nicht direkt, denn
> 
> 
>>   /usr/sbin/service prosody start 2>&1 | tee /var/tmp/meinlog
> 
>> Starting Prosody XMPP Server: prosody/etc/init.d/prosody: 59:
>> /etc/init.d/prosody: start-stop-daemon: not found
>>  failed!
> 
> die Fehlermeldung bleibt ja gleich
> 
>> hinzuzufügen? Oder welches Herangehen bringt mich zur Fehlerfindung weiter
> 
> also, ich würde vermuten
> 
> a) es liegt an der Umgebung, wie Matthias schon schrieb. Vergleiche mal die
> Ausgabe von env mit folgendem crontab Eintrag:
> 
> * * * * * env >> /root/env
> 
> Oder aber du schaust mal in das Script /etc/init.d/prosody, in Zeile 59.
> 
> Ein einfacher MTA, der nur lokal zustellt, würde bei der Fehlersuche auch
> helfen.
> 
> Auch ist cron nicht unbedingt dafür gedacht, als watchdog zu fungieren. 
> Dafür gibts was anderes, früher gab es mal /etc/inittab, da reichte es, ein
> Zeile einzutragen.
> 
> Gruß
> Christian
> 
> 
> 
>> Am 28.10.2016 um 17:23 schrieb Matthias Böttcher:
>>> Hallo Heiko,
>>>
>>> lass dir mal $PATH in deinem Script ausgeben, wenn es mit cron gestartet wird.
>>>
>>> Gruß
>>> Matthias
> 


Reply to: