env не работает в FreeBSD cronjob [дубликат]

На моем сервере FreeBSD я установил сценарий cron для резервного копирования с использованием Duplicity. Этот сценарий выглядит следующим образом:

#!/bin/sh

export PASSPHRASE=
export FTP_PASSWORD=

keyid=
remote=
excludelist=

/usr/local/bin/duplicity --volsize 1000 --max-blocksize=20480 --asynchronous-upload --full-if-older-than 1M --encrypt-key "$keyid" --exclude-filelist "$excludelist" /Data "$remote"

/usr/local/bin/duplicity --force remove-all-but-n-full 1 "$remote"

unset FTP_PASSWORD
unset PASSPHRASE

(конфиденциальные данные, конечно, отредактированы).

Этот сценарий находится в / etc / periodical / daily / duplicity и отлично работает, если я запускаю его прямо с терминала. Но он не работает, когда его запускает cron / periodical, и, похоже, это связано с тем, что env работает некорректно.

Изначально хэш-код сценария читался как #! / Usr / bin / env sh , но это привело к ошибке env: sh: Нет такого файла или каталога . Поэтому я изменил его на прямой путь sh.

Проблема, с которой я столкнулся сейчас, заключается в том, что двойственность использует env внутри. В настоящее время я получаю сообщение об ошибке env: python2: Нет такого файла или каталога , когда cron пытается его запустить.

Почему env не работает внутри cronjobs, и как я могу это исправить?

-1
задан 19 March 2016 в 14:55
1 ответ

Как намекнул Amiramix, проблема была в среде переменные. В частности, значение PATH .

/ etc / crontab содержало следующую строку:

PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin

После того, как я добавил к нему / usr / local / bin , мой сценарий работал, как ожидалось.

0
ответ дан 5 December 2019 в 20:29

Теги

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