“команда, не найденная” при запущении скрипта через крон

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

В моем сценарии я выполняю эту команду:

db2 connect to myDB2

Это хорошо работает, когда я выполняю это как db2inst1 пользователь, но когда я запускаю этот скрипт в db2inst1 crontab, я получаю это:

db2: команда, не найденная.

Как я могу решить это?

28
задан 25 June 2012 в 17:10

3 ответа

Избегать необходимости вводить полный путь к команде, оболочки, представленные $PATH переменная среды, каждый каталог разделяется a : и поиски сделаны слева направо. cron часто очищает целую среду, включая это $PATH переменная. Поэтому сценарий может вести себя по-другому в Вашем кроне по сравнению с поведением в оболочке.

Используйте полные пути

Выполненный which db2 как db2inst1 пользователь для получения полного пути для db2 программа. Если вывод /usr/bin/db2, Ваша команда крона была бы похожа:

/usr/bin/db2 connect to myDB2

Установите переменную ПУТИ

Выполненный echo "$PATH" как db2inst1 пользователь для получения $PATH переменная и удостоверяется, что эта переменная доступна в Вашем сценарии крона также. Например, если вывод был /usr/local/bin:/usr/bin:/bin, Вы поместили бы следующую строку в верхнюю часть Вашего сценария оболочки:

export PATH="/usr/local/bin:/usr/bin:/bin"
42
ответ дан 23 November 2019 в 00:56

Необходимо определить, каковы db2 и myDB2, иначе используйте абсолютное местоположение 'файла' или 'приложения', которые хотят работать.

Пример:

/bin/rm /home/ubuntu/a.txt
3
ответ дан 23 November 2019 в 00:56

Как отвечено в https://askubuntu.com/a/23438/227839, необходимо установить PATH в Вашем сценарии оболочки:

#!/bin/bash
PATH="/usr/local/bin:/usr/bin:/bin"

# rest of script follows

или в crontab файле, который будет относиться ко всем заданиям крона:

PATH="/usr/local/bin:/usr/bin:/bin"
0 1 * * * db2 connect to myDB2
8
ответ дан 23 November 2019 в 00:56

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

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