сценарий оболочки, не работающий через crontab, хорошо работает вручную

Я попытался экспортировать свои пути и переменные, и crontab все еще не запустит мой скрипт. Я уверен, что делаю что-то не так.

У меня есть сценарий оболочки, который выполняет файл банки. Это не работает правильно.

После чтения вокруг я читал, это обычно происходит из-за неправильных путей из-за крона, работающего через его собственный экземпляр оболочки, и поэтому не имеет той же предпочтительной установки, как мой профиль делает.

Вот то, на что мой сценарий похож сегодня после нескольких модификаций:

#!/bin/bash --

. /root/.bash_profile

/usr/bin/java -jar Pharmagistics_auto.jar -o

...

это - самые важные части сценария, остальные - простая базирующаяся оболочка.

Кто-то может сказать мне, что я делаю неправильно?

6
задан astro 28 February 2013 в 15:50
поделиться

6 ответов

Попробуйте указать полный путь к jar-файлу:

/usr/bin/java -jar /path/to/Pharmagistics_auto.jar -o
13
ответ дан 8 December 2019 в 12:20
поделиться

Я бы просто сказал вам то, что вы уже исключили: Проверьте свой путь и окружение.

Так как вы уже это сделали, начинайте отладку. Например, запишите контрольные точки в лог-файл, чтобы посмотреть, как далеко зашел ваш скрипт (если он вообще запущен), проверьте лог-файл cronjob на наличие ошибок, проверьте почту (cron посылает письма об ошибках) и так далее ....

Не очень конкретно, извините.

3
ответ дан 8 December 2019 в 12:20
поделиться

"экспорт моих путей и переменных" не будет работать, так как crontab запускается в другой оболочке другим пользователем.

Также, не уверен, что это опечатка в том, как вы ввели вопрос, но я вижу:

usr/bin/java

... и не могу не заметить, что вы не указываете полностью квалифицированный путь. Он ищет каталог с именем "usr" в текущем рабочем каталоге. Часто для crontab, cwd не определен, поэтому ваша ссылка никуда не денется.

Попробуйте указать полный путь от корня, например:

/usr/bin/java

Или, если вы хотите увидеть пример относительного пути в действии, вы также можете попробовать:

cd /

usr/bin/java

2
ответ дан 8 December 2019 в 12:20
поделиться

Определяете ли вы необходимые пути и env-вары в вашем личном .profile (или другом скрипте)? Пробовали ли вы найти источник этого конкретного файла (или это то, что вы уже делаете с /root/.bash_profile?)

Другой способ спросить об этом: уверены ли вы, что все необходимые пути и env-вары, которые вы ожидаете, действительно доступны?

Если ничего другого нет, пробовали ли вы повторять отдельные значения или просто использовать команду "env" в вашем скрипте и затем просмотреть stdout?

0
ответ дан 8 December 2019 в 12:20
поделиться

Несколько мыслей.

  1. Удалите - после #! / Bin / bash
  2. Убедитесь, что вывод скрипта, видимый cron, направлен по почте или в другое место, где его можно просмотреть (например, MAILTO = желаемыйUser)
  3. Убедитесь, что ваш сценарий запущен и не заблокирован другим долго выполняющимся сценарием (например, во второй строке добавьте touch / tmp / MY_SCRIPT_RAN && exit )
  4. Отладьте сценарий, используя set -x и set -v , если вы знаете, что он действительно запущен
1
ответ дан 8 December 2019 в 12:20
поделиться

Это не является нарушением спецификации HTML-формы , которая гласит:

Этот атрибут указывает, какой HTTP метод будет использован для отправки формы набор данных. Возможно (без учета регистра) значения: «get» (значение по умолчанию) и «пост». См. раздел формы Отправка информации об использовании

-121--3842499-

Выглядит как http://bugs.sun.com/view_bug.do?bug_id=6476706 , которая имеет низкий приоритет и все еще не исправлена. Определенно ошибка Mustang, но нет четкого объяснения (кажется, происходит довольно случайно в соответствии с репортерами об ошибке в дополнение к этому).

-121--873366-

предоставить полные пути к файлу банки и к какому пользователю вы запускаете crontab? Если вы настроили его для обычного пользователя, вы считаете, что у пользователя есть разрешение на источник профиля корня?

0
ответ дан 8 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

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