Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [OPGELOST] Script niet uitgevoerd door cron  (gelezen 3037 keer)

Offline 10o

  • Lid
[OPGELOST] Script niet uitgevoerd door cron
« Gepost op: 2014/04/14, 12:18:43 »
Op mijn Ubuntu server worden dagelijks een aantal bash scripts aangeroepen:

crontab -e
00 08,00 * * * /home/myname/rmsubs
00 08,00 * * * /home/myname/rmnzbs
00 11,18 * * * /home/myname/getsubs

De eerste twee scripts worden netjes uitgevoerd, het laatste niet.
Wie weet waarom dat script via cron niet uitgevoerd wordt, terwijl het handmatig (sh getsubs) wel gewoon werkt?

Alle scripts doen hun werk in een map met TV-series. Iedere TV-serie heeft zijn eigen submap.

De scripts in kwestie

rmsubs: verwijdert verweesde srt-bestanden
#!/bin/bash

folder_tv_series="/mnt/hitachi2tb2/Videos/TV-Series"

find "$folder_tv_series" -name "*.srt" | while read file
do
        stripped="${file%.srt}"
        mkv="$stripped"".mkv"
        if [ ! -e "$mkv" ]
        then
                # echo "removed orphaned subtitle: ""$file"
                rm "$file"
        fi
done

folder_movies="/mnt/hitachi2tb2/Videos/Movies"

find "$folder_movies" -name "*.srt" | while read file
do
        stripped="${file%.srt}"
        mkv="$stripped"".mkv"
        if [ ! -e "$mkv" ]
        then
                # echo "removed orphaned subtitle: ""$file"
                rm "$file"
        fi
done

exit 0

rmnzbs: verwijdert nzb-bestanden aangemaakt door Sickbeard
find /mnt/hitachi2tb1/Videos -iname "*.nzb" -exec rm {} \;
find /mnt/hitachi2tb2/Videos -iname "*.nzb" -exec rm {} \;

getsubs: zoekt naar engelstalige subs m.b.v. subliminal script
subliminal --log-file /home/myname/subliminal.log -l en -v -s -h /mnt/hitachi2tb2/Videos/TV-Series
« Laatst bewerkt op: 2014/04/15, 12:51:06 door 10o »
Workstation:  i7-5820K 16GiB - GeForce GTX 960 2GiB - 4K  (Ubuntu 16.04.1)
Server: Asus E35M1-I Deluxe - AMD Fusion APU E-350 (Ubuntu Server 16.04.1)

Re: Script niet uitgevoerd door cron
« Reactie #1 Gepost op: 2014/04/15, 00:19:04 »
Misschien dat in de logs staat waarop cron is vastgelopen:
grep CRON /var/log/syslog

Offline 10o

  • Lid
Re: Script niet uitgevoerd door cron
« Reactie #2 Gepost op: 2014/04/15, 08:52:59 »
Misschien dat in de logs staat waarop cron is vastgelopen:

Ik heb cron zojuist het laatste script laten draaien. Dat is blijkbaar niet gelukt. Het commando "subliminal" is onvindbaar. Vreemd, want handmatig draait het script gewoon. Hoe zou dit kunnen?

cronlog
grep CRON /var/log/syslog
Apr 15 06:54:01 myname-server CRON[31110]: (root) CMD (if test -x /usr/sbin/apticron; then /usr/sbin/apticron --cron; else true; fi)
Apr 15 07:09:01 myname-server CRON[31183]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Apr 15 07:17:01 myname-server CRON[31222]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Apr 15 07:39:01 myname-server CRON[31325]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Apr 15 07:54:01 myname-server CRON[31396]: (root) CMD (if test -x /usr/sbin/apticron; then /usr/sbin/apticron --cron; else true; fi)
Apr 15 08:00:01 myname-server CRON[31428]: (myname) CMD (/home/myname/rmnzbs)
Apr 15 08:00:01 myname-server CRON[31431]: (myname) CMD (/home/myname/rmsubs)
Apr 15 08:09:01 myname-server CRON[31478]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Apr 15 08:17:01 myname-server CRON[31517]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Apr 15 08:39:01 myname-server CRON[31620]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Apr 15 08:54:01 myname-server CRON[31867]: (root) CMD (if test -x /usr/sbin/apticron; then /usr/sbin/apticron --cron; else true; fi)
Apr 15 09:00:01 myname-server CRON[31935]: (myname) CMD (/home/myname/getsubs)

/var/mail/myname
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/myname>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=myname>
Message-Id: <E1WZxLd-0008J7-47@myname-server>
Date: Tue, 15 Apr 2014 09:00:01 +0200

/home/myname/getsubs: 1: /home/myname/getsubs: subliminal: not found
« Laatst bewerkt op: 2014/04/15, 09:13:39 door 10o »
Workstation:  i7-5820K 16GiB - GeForce GTX 960 2GiB - 4K  (Ubuntu 16.04.1)
Server: Asus E35M1-I Deluxe - AMD Fusion APU E-350 (Ubuntu Server 16.04.1)

Offline 10o

  • Lid
Re: Script niet uitgevoerd door cron
« Reactie #3 Gepost op: 2014/04/15, 12:50:50 »
Een script draait mogelijk met andere PATH gegevens waardoor hij het programma niet kan vinden.
Even in een terminal 'which subliminal' doen en je weet het hele pad van het uitvoerbare bestand, die dan gebruiken in je script en voila... :)
Overigens is het handig om dat bij alle executables te doen die je aanroept, zodat je zeker weet dat de juiste versie gebruikt word.

Helder and working. Bedankt!

Script getsubs aangepast en pad ervoor gezet:
/usr/local/bin/subliminal --log-file /home/myname/subliminal.log -l en -v -s -h /mnt/hitachi2tb2/Videos/TV-Series
Workstation:  i7-5820K 16GiB - GeForce GTX 960 2GiB - 4K  (Ubuntu 16.04.1)
Server: Asus E35M1-I Deluxe - AMD Fusion APU E-350 (Ubuntu Server 16.04.1)