Linux: gsutil не работает в cron

Я пытаюсь загрузить файлы в Google Cloud Storage с помощью cron в Linux, но это не удается. Я также установил путь и конфигурацию в моем файле сценария как:

PATH=/bin/gsutil/
export BOTO_CONFIG="/home/ashu/.boto"
# rest of script

Но все равно ничего не работает.


person vashishatashu    schedule 08.11.2014    source источник


Ответы (6)


И если вы используете установку по умолчанию, предоставленную Google Cloud — Compute Engine, скорее всего, gsutil находится в / snap / bin

PATH=$PATH:/snap/bin
person fpfarinhaki    schedule 26.08.2019
comment
Рекомендуется заключать кавычки вокруг $PATH, например. PATH="$PATH":/snap/bin - person Code Commander; 10.11.2020

Это немного безопаснее сделать

PATH="$PATH":/bin/gsutil/

так что вы не убиваете доступ к обычным местам, таким как /bin и /usr/bin и т. д. Вы не можете использовать их напрямую, но скрипты, которые вы вызываете, могут!

обновление: @ComputerDruid справедливо отмечает, что кавычки не дают пробелам создавать проблемы.

person pjz    schedule 10.11.2014
comment
Еще безопаснее сделать PATH="$PATH":/bin/gsutil, хотя довольно редко можно увидеть каталог с пробелами или другими нечетными символами в $PATH - person ComputerDruid; 10.11.2014

Помимо изменения PATH, как было предложено pjz, вы пытались посмотреть на фактический вывод из gsutil/cron?

Какая причина дается для неудачи похвалы? Если вам нужно перехватить вывод gsutil, вы можете перенаправить стандартный вывод и ошибку (stdout и stderr) в файл и сохранить его там.

Например. если вы используете Bash, вы можете перенаправить вывод на gsutil_log.txt, изменив свой crontab следующим образом:

*/1 * * * * /mypath/myscript.sh >> $HOME/gsutil_log.txt

Это перенаправит stdout и stderr и добавит любой вывод к gsutil_log.txt в $HOME для myscript.sh, который вызывается каждую минуту cron.

Если вывод полезен, это должно немного продвинуть вас в отладке.

person Jake    schedule 10.11.2014

Я удалил свою установку pip и использовал следующую ссылку для установки: https://cloud.google.com/storage/docs/gsutil_install#specifications.

Также следует избегать использования sudo для пути и экспорта, так как это может привести к некоторым проблемам.

PATH=$PATH:/root/gsutil/
export BOTO_CONFIG="/root/.boto"
# rest of script

Код выше работает хорошо.

person vashishatashu    schedule 11.11.2014

У меня была такая же проблема в Ubuntu 20.04, и я обнаружил, что самым простым решением было создать программную ссылку между моей установкой gsutil и системной папкой bin следующим образом:

sudo ln -s /snap/bin/gsutil /usr/bin/gsutil

person Danica    schedule 06.11.2020

вы можете попробовать использовать команду gsutil полного пути для использования в crontab

/root/gcloud/gsutil cp ...

person Aldom Michael    schedule 26.02.2020