# [CRON] nagłe przerwanie działania skryptu

## Jacek

Mam skrypt, który z palca wykonuje się poprawnie (z tego co zauważyłem - zawsze). Z crona natomiast zaczyna się uruchamiać, po czym całkowicie "znika".

Ale zaraz dokładniej wytłumaczę kiedy znika, po pokazaniu kodu:

wpis w "crontab -e" (vixie-cron-4.1-r10):

```
30 4 * * wed /mnt/dodatkowy/DVD/copy_new.sh
```

oraz skrypt:

```
#!/bin/bash

set -x

cd /mnt/dodatkowy/DVD || exit 1

REPLY="moje tajne haslo"

renice 19 -p $$ >/dev/null

START=15

END=01

STEP=-1

for id in `seq -w $START $STEP $END`; do

        test -d "DVD${id}" && rm -rf "DVD${id}"

        echo " * Get DVD${id}..."

        smbclient //server/zasob -d1 -U DOMENA\\user%$REPLY -c "cd sciezka/DVD; prom; recurse; mget DVD${id}" 2>&1 | sed -r '/getting/{s/^getting file (.*?) of (size [0-9]+) .*?(average .*?)\)/\1 \t\2 \t\3/g}; /WARNING/d; /Domain=/d'

done

unset REPLY

#START=15

for id in `seq -w $START $STEP $END`; do

        cd DVD${id} 2>&1 || continue

        echo " * Checksum DVD${id}..."

        find -type f -exec md5sum "{}" \; >../DVD${id}.md5

        cd ..

done
```

Pierwsza pętla for zaczyna wykonywać się poprawnie - różnie, z 6-8 razy, po czym przestaje, a proces całkowicie znika. Proces zawsze znika po (wydaje mi się) prawidłowym zakończeniu polecenia smbclient (bo katalog skopiowany jest identyczny - sumy md5 - z źródłowym oraz w logach serwera nie ma żadnych błędów). Ostatnio z uruchomienia, proces zniknął o 4:56 (czyli po 26 minutach).

W logach nie jest nic zapisywane, co miałoby związek z błędami crona czy skryptu.

Jedynie pojawia się informacja, o rozpoczęciu zadania:

```
Sep  9 04:30:01 k2 cron[1268]: (jacek) CMD (/mnt/dodatkowy/DVD/copy_new.sh)
```

Na maila nie jest nic wysyłane, chociaż z innych skryptów je otrzymuję. Dopisałem jeszcze przewrotnie "set -x" do skryptu, że może uda mi się zobaczyć na czym kończy, może jakiś kod błędu, cokolwiek... niestety nic z tego.

Natomiast w logach smtp: 

```
Sep  9 04:48:14 jacekk sSMTP[1281]: Connection lost in middle of processing
```

dla porówniania inne się wysyłają poprawnie:

```
Sep  6 07:04:00 k2 sSMTP[11943]: Sent mail for root@domena.pl (221 2.0.0 Bye) uid=0 username=root outbytes=495

Sep  9 07:14:33 k2 sSMTP[4449]: Sent mail for root@domena.pl (221 2.0.0 Bye) uid=0 username=root outbytes=652
```

Natomiast po włączeniu debuggingu ssmtp, w logu otrzymuję:

```
Sep 13 11:59:49 k2 sSMTP[9333]: 220 x.pl ESMTP 

Sep 13 11:59:49 k2 sSMTP[9333]: HELO x

Sep 13 11:59:49 k2 sSMTP[9333]: 250 x.pl

Sep 13 11:59:49 k2 sSMTP[9333]: MAIL FROM:<x>

Sep 13 11:59:49 k2 sSMTP[9333]: 250 2.1.0 Ok

Sep 13 11:59:49 k2 sSMTP[9333]: RCPT TO:<x>

Sep 13 11:59:49 k2 sSMTP[9333]: 250 2.1.5 Ok

Sep 13 11:59:49 k2 sSMTP[9333]: DATA

Sep 13 11:59:49 k2 sSMTP[9333]: 354 End data with <CR><LF>.<CR><LF>

[...] (łącznie 85 wierszy)

Sep 13 11:59:49 k2 sSMTP[9333]: + for id in '`seq -w $START $STEP $END`'

Sep 13 11:59:49 k2 sSMTP[9333]: + test -d DVD12

Sep 13 11:59:49 k2 sSMTP[9333]: + rm -rf DVD12

Sep 13 11:59:49 k2 sSMTP[9333]: + echo ' * Get DVD12...'

Sep 13 11:59:49 k2 sSMTP[9333]:  * Get DVD12...

Sep 13 11:59:49 k2 sSMTP[9333]: + smbclient //serwer/zasob -d1 -U 'DOMENA\user%haslo' -c 'cd sciezka/DVD; prom; recurse; mget DVD12'

Sep 13 11:59:49 k2 sSMTP[9333]: + sed -r '/getting/{s/^getting file (.*?) of (size [0-9]+) .*?(average .*?)\)/\1 \t\2 \t\3/g}; /WARNING/d; /Domain=/d'

Sep 13 11:59:49 k2 sSMTP[9333]: \sciezka\DVD\DVD12\poczta\thebat_info.a

Sep 13 12:04:49 k2 sSMTP[9333]: Connection lost in middle of processing

```

Przedostatni wiersz dosłownie ucięty w środku wiersza, bo rozszerzenie pliku to .arj

Natomiast skopiowane jest od DVD15 do DVD08 włącznie.

Gdzie jest pies pogrzebany (szczegóły wszystkie możliwe chyba podałem)?

Przyznam się, że z ssmtp nigdy wcześniej nie korzystałem (nie znam go, nie lubię) - zostawiłem tylko dlatego, że nie chcę specjalnie konfigurować serwera poczty dla powiadomień na maila o wykonaniu zadania.

----------

