Я попытался экспортировать свои пути и переменные, и crontab все еще не запустит мой скрипт. Я уверен, что делаю что-то не так.
У меня есть сценарий оболочки, который выполняет файл банки. Это не работает правильно.
После чтения вокруг я читал, это обычно происходит из-за неправильных путей из-за крона, работающего через его собственный экземпляр оболочки, и поэтому не имеет той же предпочтительной установки, как мой профиль делает.
Вот то, на что мой сценарий похож сегодня после нескольких модификаций:
#!/bin/bash --
. /root/.bash_profile
/usr/bin/java -jar Pharmagistics_auto.jar -o
...
это - самые важные части сценария, остальные - простая базирующаяся оболочка.
Кто-то может сказать мне, что я делаю неправильно?
Попробуйте указать полный путь к jar-файлу:
/usr/bin/java -jar /path/to/Pharmagistics_auto.jar -o
Я бы просто сказал вам то, что вы уже исключили: Проверьте свой путь и окружение.
Так как вы уже это сделали, начинайте отладку. Например, запишите контрольные точки в лог-файл, чтобы посмотреть, как далеко зашел ваш скрипт (если он вообще запущен), проверьте лог-файл cronjob на наличие ошибок, проверьте почту (cron посылает письма об ошибках) и так далее ....
Не очень конкретно, извините.
"экспорт моих путей и переменных" не будет работать, так как crontab запускается в другой оболочке другим пользователем.
Также, не уверен, что это опечатка в том, как вы ввели вопрос, но я вижу:
usr/bin/java
... и не могу не заметить, что вы не указываете полностью квалифицированный путь. Он ищет каталог с именем "usr" в текущем рабочем каталоге. Часто для crontab, cwd не определен, поэтому ваша ссылка никуда не денется.
Попробуйте указать полный путь от корня, например:
/usr/bin/java
Или, если вы хотите увидеть пример относительного пути в действии, вы также можете попробовать:
cd /
usr/bin/java
Определяете ли вы необходимые пути и env-вары в вашем личном .profile (или другом скрипте)? Пробовали ли вы найти источник этого конкретного файла (или это то, что вы уже делаете с /root/.bash_profile?)
Другой способ спросить об этом: уверены ли вы, что все необходимые пути и env-вары, которые вы ожидаете, действительно доступны?
Если ничего другого нет, пробовали ли вы повторять отдельные значения или просто использовать команду "env" в вашем скрипте и затем просмотреть stdout?
Несколько мыслей.
-
после #! / Bin / bash
touch / tmp / MY_SCRIPT_RAN && exit
) set -x
и set -v
, если вы знаете, что он действительно запущен Это не является нарушением спецификации HTML-формы , которая гласит:
-121--3842499-Этот атрибут указывает, какой HTTP метод будет использован для отправки формы набор данных. Возможно (без учета регистра) значения: «get» (значение по умолчанию) и «пост». См. раздел формы Отправка информации об использовании
Выглядит как http://bugs.sun.com/view_bug.do?bug_id=6476706 , которая имеет низкий приоритет и все еще не исправлена. Определенно ошибка Mustang, но нет четкого объяснения (кажется, происходит довольно случайно в соответствии с репортерами об ошибке в дополнение к этому).
-121--873366-предоставить полные пути к файлу банки и к какому пользователю вы запускаете crontab? Если вы настроили его для обычного пользователя, вы считаете, что у пользователя есть разрешение на источник профиля корня?