Kann nicht ausgeführt bash-Skript aus der crontab, wenn es funktioniert von der Kommandozeile bash

Ich habe ein seltsames problem, um in der Lage zu laufen ein bash-Skript von der Kommandozeile aber nicht aus der crontab-Eintrag für root. Ich bin mit Ubuntu 12.04.

* * * * 1-5 root /home/xxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/jmeter-cron-randomise.sh >> /home/xxxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/cron.log

Wenn ich das Skript aus der cmd-line bash verwenden, es funktioniert gut, aber sh scheitert mit folgenden Fehler:

> jmeter-cron-randomise.sh: 7: jmeter-cron-randomise.sh: arithmetic
> expression: expecting primary: "  % 1 "

Haben gegoogelt, das problem scheint die standard-shell nicht den gleichen mathematischen Operatoren, wie % (modulo), als bash. Ich bin mir Nicht sicher, warum der cron-job nicht das Skript? Ich gehe davon aus, dass es ist, weil es nicht mit der bash-shell? Es ist definitiv gefeuert zu werden, von der cron-daemon (sehen Sie in /var/log/syslog). Jede Hilfe sehr geschätzt.

Was ist deine shebang-Zeile?
seine #!/bin/bash
Hat Ihr cron führen Sie den Befehl mit /bin/sh? Es sieht aus wie es wahrscheinlich ist, weil der Fehler ist, was Sie möchten erhalten, wenn Sie die Ausführung des Skripts mit sh statt bash (wie in: sh /home/…/jmeter-cron-randomise.sh). Und auf Ubuntu /bin/sh ist oft dash, nicht bash. Zu beheben, verwenden Sie bash /home/…/jmeter-cron-dandomise.sh >> … in Ihre crontab-Eintrag.
Wie es aussieht, läuft sh. Wie kann ich erzwingen, führen Sie die bash-abgesehen von der shebang-Zeile?
kal: laufen bash /path/of/script.sh. Diese bash sollte die Ausgabe von which bash, das ist der vollständige Pfad der binären.

InformationsquelleAutor kal | 2014-10-23

Schreibe einen Kommentar