/ / Запуск jar з cron викидає помилку: '/ bin / sh: 1: java: not found' - java, linux, cron

Запуск jar з cron викидає помилку: '/ bin / sh: 1: java: not found' - java, linux, cron

Я призначив свою роботу для запуску щодня о 12:30 за допомогою цієї команди:

30 12 * * * java -jar test.jar

Це кидає помилку:

/bin/sh: 1: java: not found

Я спробував запустити цю команду: java -jar test.jar від оболонки і це спрацювало відмінно.

Тепер я не розумію. Я б сказав, що це відбувається тому, що JAVA_HOME змінна середовища не встановлена, але тоді чому вона працює з оболонки?

Відповіді:

1 для відповіді № 1

Помилка повідомляє, що оболонка не може знайти java двійковий для виконання. Це не має нічого спільного з JAVA_HOME змінної середовища, але з PATH змінна, з якою здійснюється консультація sh щоб знайти будь-яку команду.

Коли ви виконуєте своє завдання з cron, оболонка не отримала таку ж ініціалізацію, як інтерактивна оболонка, де команда працює для вас. Ви так само знайдете JAVA_HOME Тут також не встановлено.


1 для відповіді № 2

Ваше середовище оболонки входу в систему відрізняється від того, що має ваша cronjob. Використовуйте envдля друку вашого середовища.

Перевірте шлях на обох - У межах cron (щось подібне) 30 08 * * * env > ~/cronenv. У вашій оболонці входу просто використовуйте env. Потім порівняйте змінні PATH. Як @ Марко Топольник вже заявив, що ваш PATH в cron, очевидно, не містить ваших виконуваних Java-файлів.


0 для відповіді № 3

Можна додати рядок у ваш файл crontab, який містить потрібний вам шлях:

# m h  dom mon dow   command
PATH=.....

Можливо, вам потрібно щось на зразок цього:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Ви також можете використовувати echo $PATH щоб дізнатися, що у вас є у звичайному середовищі, і просто використати це значення.