«команда не найдена» при запуске скрипта через cron

16

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

В моем скрипте я запускаю эту команду:

db2 connect to myDB2

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

  

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

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

задан Wolfy 09.06.2011 в 11:15
источник

2 ответа

28

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

Использовать абсолютные пути

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

/usr/bin/db2 connect to myDB2

Задайте переменную PATH

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

export PATH="/usr/local/bin:/usr/bin:/bin"
    
ответ дан Lekensteyn 09.06.2011 в 11:18
источник
3

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

Пример:

/bin/rm /home/ubuntu/a.txt
    
ответ дан Mahmudin Ashar 09.06.2011 в 13:42