Script draait perfect gewoon maar niet in cron

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • HyperBart
  • Registratie: Maart 2006
  • Laatst online: 00:13
Ik heb in mijn Ubuntu 11.04 volgend script (omdat Sabnzbdplus crasht... Zie daarvoor: HyperBart in "Het grote SABnzbd topic deel 1") een script, en wel als volgt:

bart@Pyro:~$ cat CheckSabRunning.sh
#!/bin/sh
SERVICE='sabnzbdplus'

if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
    echo "$SERVICE service running, everything is fine"
else
    echo "$SERVICE is not running"
    /etc/init.d/sabnzbdplus start
fi


Als ik dit commando uitvoer terwijl Sabnzbdplus niet draait, start hij alles netjes op, geeft de meldingen die ik in de echo's heb staan enz... Ik blij :) . Ik dacht van dit even in mijn crontab te gooien zodat hij iedere minuut checkt of Sabnzbdplus nog draait, zoniet, scriptje draaien en huppa:

Mijn crontab als user "bart":
# m h  dom mon dow   command

#Checken of Sabnzbdplus nog draait
* * * * * /home/bart/CheckSabRunning.sh >> /tmp/checksab.log


Wat krijg ik dan als ik ga kijken in de log:
sabnzbdplus service running, everything is fine
sabnzbdplus is not running
 * Starting SABnzbd+ binary newsgrabber
   ...fail!
sabnzbdplus is not running
 * Starting SABnzbd+ binary newsgrabber
   ...fail!
sabnzbdplus is not running
 * Starting SABnzbd+ binary newsgrabber
   ...fail!
sabnzbdplus is not running
 * Starting SABnzbd+ binary newsgrabber
   ...fail!
sabnzbdplus is not running
 * Starting SABnzbd+ binary newsgrabber
   ...fail!
sabnzbdplus is not running
 * Starting SABnzbd+ binary newsgrabber
   ...fail!


Ik heb het ook al eens in de crontab van root gegooid, maar dat hielp niet, wat doe ik dan in hemelsnaam fout?

Acties:
  • 0 Henk 'm!

  • Motrax
  • Registratie: Februari 2004
  • Niet online

Motrax

Profileert

Draait sanzding wel? Dan gaat het starten mogelijk verkeer omdat de service al draait en is je greb ergens verkeerd.

☻/
/▌
/ \ Analyseert | Modelleert | Valideert | Solliciteert | Generaliseert | Procrastineert | Epibreert |


Acties:
  • 0 Henk 'm!

  • Mentalist
  • Registratie: Oktober 2001
  • Laatst online: 23-06 22:28

Mentalist

[avdD]

Ik weet niet wat de sabnzbdplus service precies doet, maar ik weet uit ervaring met cron dat als je iets wil doen waar sudo voor nodig is je /usr/sbin/bestandsnaam moet gebruiken. Dus als je met cron af wil sluiten kan je niet gewoon "shutdown" gebruiken maar moet je /usr/sbin/shutdown gebruiken.

Verstuurd vanaf mijn Computer®


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 14-07 23:31
Je doet
/etc/init.d/sabnzbdplus start
als gewone user, zonder rootrechten. Weet je zeker dat dat ook buiten de cron omgeving zo werkt?
In Cron heb je gewoon een heel andere omgeving dan wanneer je zelf een terminalsessie opent. Met name andere paden (PATH env.variabele) zijn dan killing voor de werking van scripts.
Check de omgevingsvariabelen met
env
binnen en buiten cron en zie de verschillen waarop het struikelt.

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • HyperBart
  • Registratie: Maart 2006
  • Laatst online: 00:13
Het werkt ook buiten de cron omgeving... Als ik het uitvoer met sh ervoor doet het alles zoals ik wil dat het het doet... Alleen in de cron omgeving niet. Dus gewoon env eens laten uitvoeren in cron naar een file? First thing tomorrow!

Acties:
  • 0 Henk 'm!

  • HyperBart
  • Registratie: Maart 2006
  • Laatst online: 00:13
Env variabelen in cron

LANGUAGE=en_US:en
HOME=/home/bart
LOGNAME=bart
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/home/bart


Buiten cron:
SHELL=/bin/bash
TERM=screen
SSH_CLIENT=192.168.8.93 62882 22
OLDPWD=/tmp
SSH_TTY=/dev/pts/0
USER=bart
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
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#24:co#139: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: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: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:/usr/games
MAIL=/var/mail/bart
STY=1329.pts-0.Pyro
PWD=/home/bart
LANG=en_US.UTF-8
HOME=/home/bart
SHLVL=2
LANGUAGE=en_US:en
LOGNAME=bart
WINDOW=0
SSH_CONNECTION=192.168.X.Y [POORTNUMMER] 192.168.IPSERVER SSHPOORT
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/env

Acties:
  • 0 Henk 'm!

  • RemcoDelft
  • Registratie: April 2002
  • Laatst online: 03-05 10:30
Misschien iets met het volledige path voor ps gebruiken? Of (dubbele) quotes om de variabele heen? Dergelijke dingen willen in mijn ervaring nog wel eens uitmaken.

Acties:
  • 0 Henk 'm!

  • HyperBart
  • Registratie: Maart 2006
  • Laatst online: 00:13
Maar hoe komt het dan dat het in de gewone shell wel werkt?

Acties:
  • 0 Henk 'm!

  • Freedom
  • Registratie: Januari 2004
  • Laatst online: 05-07 20:42
Omdat je PATH-variabelen daar uitgebreider zijn wellicht? Weet het ook niet zeker, maar het is in ieder geval meestal geen slecht idee om volledige paden naar je executables te gebruiken in cron

Acties:
  • 0 Henk 'm!

  • HyperBart
  • Registratie: Maart 2006
  • Laatst online: 00:13
Dus, wat pas ik nu aan of voeg ik nu toe?

Acties:
  • 0 Henk 'm!

  • lordgandalf
  • Registratie: Februari 2002
  • Laatst online: 15-07 13:05
je moet zorgen dat je PATH variable uitgebreider is je mist bijvoorbeeld de sbin folder en als daar een commando staat wat je gebruikt dab werkt dat niet.

Steam: Profile / Socialclub: Profile / Uplay: minedwarf / Origin: lordgandalf3


Acties:
  • 0 Henk 'm!

  • HyperBart
  • Registratie: Maart 2006
  • Laatst online: 00:13
Jongens, cut me some slack, ik weet mijn basis wegje in linux, ik kan wat jongleren met files en folders, maar wat ndeleeuw nu beschrijft is me onbekend... Kan iemand me even in jip en janneke taal vertellen wat ik waar moet toevoegen? Beter teveel als te weinig...

Acties:
  • 0 Henk 'm!

  • daft_dutch
  • Registratie: December 2003
  • Laatst online: 09-07 18:45

daft_dutch

>.< >.< >.< >.<

je hebt gelijk bart ze noemen wel wat maar geven geen oplossing.

Je moet de paden in /etc/init.d/sabnzbdplus aan passen. dat Deze absoluut zijn.
Bijvoorbeeld /bin/ls inplaats van ls

of daar in je PATH uit breiden.
PATH=$PATH:/sbin/:/usr/sbin/

>.< >.< >.< >.<


Acties:
  • 0 Henk 'm!

  • HyperBart
  • Registratie: Maart 2006
  • Laatst online: 00:13
Ok, thanks, op dit moment is dit dat sabnzbdplus script in mijn /etc/init.d/

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/sh
#
# Copyright (C) 2008-2010 by JCF Ploemen <linux@jp.pp.ru>
# released under GPL, version 2 or later

################################################
#                                              #
#  TO CONFIGURE EDIT /etc/default/sabnzbdplus  #
#                                              #
################################################

### BEGIN INIT INFO
# Provides:          sabnzbdplus
# Required-Start:    $local_fs $network $remote_fs
# Required-Stop:     $local_fs $network $remote_fs
# Should-Start:      NetworkManager
# Should-Stop:       NetworkManager
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SABnzbd+ binary newsgrabber
### END INIT INFO

DAEMON=/usr/bin/sabnzbdplus
SETTINGS=/etc/default/sabnzbdplus

([ -x $DAEMON ] && [ -r $SETTINGS ]) || exit 0

DESC="SABnzbd+ binary newsgrabber"
DEFOPTS="--daemon"
PYTHONEXEC="^$(sed -n '1s/^#\!\([a-z0-9\.\/]\+\)\(.*\)/\1(\2)?/p' $DAEMON)"
PIDFILE=/var/run/sabnzbdplus.pid
SETTINGS_LOADED=FALSE

# these are only accepted from the settings file
unset USER CONFIG HOST PORT EXTRAOPTS

. /lib/lsb/init-functions

check_retval() {
    if [ $? -eq 0 ]; then
        log_end_msg 0
        return 0
    else
        log_end_msg 1
        exit 1
    fi
}

is_running() {
    # returns 0 when running, 1 otherwise
    PID="$(pgrep -f -x -u $USER "$PYTHONEXEC $DAEMON $DEFOPTS.*")"
    RET=$?
    [ $RET -gt 1 ] && exit 1 || return $RET
}

load_settings() {
    if [ $SETTINGS_LOADED != "TRUE" ]; then
        . $SETTINGS

        [ -z "$USER" ] && {
            log_warning_msg "$DESC: not configured, aborting. See $SETTINGS";
            return 1; }

        OPTIONS="$DEFOPTS"
        [ -n "$CONFIG" ] && OPTIONS="$OPTIONS --config-file $CONFIG"
        [ -n "$HOST" ] && SERVER="$HOST" || SERVER=
        [ -n "$PORT" ] && SERVER="$SERVER:$PORT"
        [ -n "$SERVER" ] && OPTIONS="$OPTIONS --server $SERVER"
        [ -n "$EXTRAOPTS" ] && OPTIONS="$OPTIONS $EXTRAOPTS"
        SETTINGS_LOADED=TRUE
    fi
    return 0
}

start_sab() {
    load_settings || exit 0
    if ! is_running; then
        log_daemon_msg "Starting $DESC"
        start-stop-daemon --quiet --chuid $USER --start --exec $DAEMON -- $OPTIONS
        check_retval
        # create a pidfile; we don't use it but some monitoring app likes to have one
        [ -w $(dirname $PIDFILE) ] && \
            pgrep -f -x -n -u $USER "$PYTHONEXEC $DAEMON $OPTIONS" > $PIDFILE
    else
        log_success_msg "$DESC: already running (pid $PID)"
    fi
}

stop_sab() {
    load_settings || exit 0
    if is_running; then
        TMPFILE=$(mktemp /tmp/sabnzbdplus.XXXXXXXXXX || exit 1)
        trap '[ -f $TMPFILE ] && rm -f $TMPFILE' EXIT
        echo "$PID" > $TMPFILE
        log_daemon_msg "Stopping $DESC"
        start-stop-daemon --stop --user $USER --pidfile $TMPFILE --retry 30
        check_retval
    else
        log_success_msg "$DESC: not running"
    fi
    [ -f $PIDFILE ] && rm -f $PIDFILE
}

case "$1" in
    start)
        start_sab
    ;;
    stop)
        stop_sab
    ;;
    force-reload|restart)
        stop_sab
        start_sab
    ;;
    status)
        load_settings || exit 4
        if is_running; then
            log_success_msg "$DESC: running (pid $PID)"
        else
            log_success_msg "$DESC: not running"
            [ -f $PIDFILE ] && exit 1 || exit 3
        fi
    ;;
    *)
        log_failure_msg "Usage: $0 {start|stop|restart|force-reload|status}"
        exit 3
    ;;
esac

exit 0



Mag ik die lijn gewoon zo toevoegen?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/sh
#
# Copyright (C) 2008-2010 by JCF Ploemen <linux@jp.pp.ru>
# released under GPL, version 2 or later

################################################
#                                              #
#  TO CONFIGURE EDIT /etc/default/sabnzbdplus  #
#                                              #
################################################

### BEGIN INIT INFO
# Provides:          sabnzbdplus
# Required-Start:    $local_fs $network $remote_fs
# Required-Stop:     $local_fs $network $remote_fs
# Should-Start:      NetworkManager
# Should-Stop:       NetworkManager
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SABnzbd+ binary newsgrabber
### END INIT INFO

DAEMON=/usr/bin/sabnzbdplus
SETTINGS=/etc/default/sabnzbdplus
/bin/ls

Verdere bla bla

Acties:
  • 0 Henk 'm!

  • daft_dutch
  • Registratie: December 2003
  • Laatst online: 09-07 18:45

daft_dutch

>.< >.< >.< >.<

is zie op het eerste oog geen fouten in je script. alles ziet er absoluut uit.

misschien de service met restart aanroepen inplaats van start
of service inplaats van /etc/init.d/

>.< >.< >.< >.<


Acties:
  • 0 Henk 'm!

  • UnicronNL
  • Registratie: December 2009
  • Laatst online: 29-04-2024
bart@Pyro:~$ cat CheckSabRunning.sh
#!/bin/sh
SERVICE='sabnzbdplus'

if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
    echo "$SERVICE service running, everything is fine"
else
    echo "$SERVICE is not running"
    /etc/init.d/sabnzbdplus start
fi
Heb ik even aangepast naar dit:

#!/bin/sh
SERVICE='sabnzbdplus'
DAEMON=/usr/bin/sabnzbdplus
PIDFILE=/var/run/sabnzbdplus.pid
USER=bart
CONFIG="/home/bart/.sabnzbd/"
HOST=localhost
PORT=8080

if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
    echo "$SERVICE service running, everything is fine"
else
    echo "$SERVICE is not running"
    echo "starting $SERVICE"
    su $USER -c ''$DAEMON' --daemon --config-file '$CONFIG' --server '$HOST':'$PORT''
    pgrep -f $DAEMON > $PIDFILE
    if ps ax | grep -v grep | grep $SERVICE > /dev/null
    then
        echo "$SERVICE service running, everything is fine"
    else
        echo "$SERVICE failed to start"
     fi
fi


Werkt goed bij mij, ook gestest met afsluiten sabnzbdplus en het script starte sabnzbdplus ook weer op.
Ik heb hem in de crontab van root gestopt aangezien hij dit met opstarten van de pc ook met root doet en ivm pidfile. (sudo crontab -e)

In je script kan je dit eventueel nog aanpassen:
USER=bart
CONFIG="/home/bart/.sabnzbd/"
HOST=localhost
PORT=8080

(vergeet in de "CONFIG=" optie niet de laatste "/" )

cat /tmp/checksab.log
sabnzbdplus service running, everything is fine
sabnzbdplus is not running
starting sabnzbdplus
sabnzbdplus service running, everything is fine
sabnzbdplus service running, everything is fine
sabnzbdplus service running, everything is fine
sabnzbdplus service running, everything is fine
sabnzbdplus service running, everything is fine
sabnzbdplus service running, everything is fine


Wellicht als je de file /etc/default/sabnzbdplus edit, en alle settings invuld, je orginele script wel werkt.

Acties:
  • 0 Henk 'm!

  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 07-07 14:23

webfreakz.nl

el-nul-zet-é-er

Ziet eruit als een klus voor http://supervisord.org/? :P

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!

Pagina: 1