Невозможно запустить скрипт bash из crontab, когда он работает из командной строки bash

У меня странная проблема, связанная с возможностью запуска bash-скрипта из командной строки, но не из записи crontab для root. Я использую 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

Если я запускаю сценарий из строки cmd, используя bash, он работает нормально, но завершается неудачно с sh со следующей ошибкой:

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

После поиска проблемы, похоже, что оболочка stand не имеет те же математические операторы, как% (модуль), как Bash. Не знаете, почему в скрипте не выполняется задание cron? я предполагаю его, потому что он не использует оболочку bash? Он определенно запускается демоном cron (это можно увидеть в / var / log / syslog). Любая помощь высоко ценится.

скрипт, вызывающий проблемы

#!/bin/bash
echo Running the jmeter-cron-randomiser script


script="/home/xxxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/jmeter-cron.sh"    

min=$(( 1 * 1 ))
rmin=$(( $RANDOM % $min ))

echo  "min = ${min}";
echo  "rmin = ${rmin}"

at -f "$script" now+${rmin}min
3
задан 23 October 2014 в 19:36

2 ответа

Я отмечаю в crontab (5) страница справочника, это:

''шестое'' поле (остальная часть строки) определяет команду, которая будет выполнена. Вся часть команды строки будет выполняться /bin/sh или оболочкой, определенной в переменной SHELL cronfile.

Так, можно хотеть определить удар или с

SHELL=/bin/bash

или, как вышеупомянутое влияние все сценарии крона, это

* * * * 1-5 root bash /home/xxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/jmeter-cron-randomise.sh >> /home/xxxxxxx/jmeter/VerificationService-0.0.1-SNAPSHOT/cron.log
# ...............^^^^
0
ответ дан 23 October 2014 в 19:36

crontab делает , выполняет сценарий с bash;

, Но Вы выполняете его рекурсивно с at.

И at использование /bin/sh.

из-за более ранней проблемы, спецификация времени для at now+0min - таким образом, она работает снова только в конце.

, Что выполненные сбои, таким образом, по крайней мере, нет никакого цикла.

продвижение задач к эти now+0min состоит в том, что n % 1 0, таким образом $RANDOM % 1 = 0, и rmin = 0.

Добавляют вторую строку

set -x

к сценарию для лучшего входа, Вы будете последняя строка с 0 timespec.

0
ответ дан 23 October 2014 в 19:36

Другие вопросы по тегам:

Похожие вопросы: