Почему git не использует мой pubkey с crontab?

Для резервного копирования моей базы данных sql у меня запущено задание cron, которое создает дамп mysql. Теперь я хочу создать еще одно задание cron, которое фиксирует этот дамп в репозитории, теперь проблема в том, что он не работает.

В журнале cron я вижу строку, в которой запускается команда, но ничего не фиксируется.

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
MAILTO=root
HOME=/

49 16 * * * cd /path/to/backup/folder/ && /usr/local/bin/git commit -am "Updating DB backup"

Это то, что я положил в crontab -e. Я также попробовал это в / etc / crontab, где я помещаю root как пользователь, и это работает, но только как пользователь root, что является проблемой из-за ловушки git post-commit, которая выполняет push после того, как что-то было зафиксировано. Так как только мой пользователь может нажать push, это не работает, когда root делает коммит.

Так как он работает с пользователем root, я думаю, что это проблема с разрешениями, но с разрешениями чего? Эти команды работают в обычной командной строке.

При отлове stdout и stderr я получаю в журнале следующее.

Permission denied (publickey).^M
fatal: The remote end hung up unexpectedly

, поэтому он не работает как мой пользователь или не может найти ключ?

3
задан 7 September 2013 в 15:13

2 ответа

Формат вашего файла cron (который вы получаете при вводе crontab -e) отличается от системного файла cron. Вам не нужно указывать пользователя в файле cron пользователя, он автоматически запускается как вы. Попробуйте:

49 16 * * * cd /path/to/backup/folder/ && /usr/local/bin/git commit -am "Updating DB backup"

Я бы также предложил перехватить stdout и stderr, чтобы вы могли реально увидеть, что сделал коммит, например:

49 16 * * * cd /path/to/backup/folder/ && /usr/local/bin/git commit -am "Updating DB backup" >> /path/to/logfile 2>&1

Отредактировано, чтобы добавить: Теперь, когда вы показал вывод из stdout / stderr, проблема ясна. ssh не находит ваши ключи, что, вероятно, связано с тем, что вы установили

HOME=/

Вероятно, это должно быть что-то вроде

HOME=/home/me

В качестве альтернативы, вы можете просто оставить его неустановленным. ]

0
ответ дан 7 September 2013 в 15:13

Вы, вероятно, устанавливаете crontab, используя другого пользователя, а не вас. Проверьте, выполняете ли вы «sudo crontab -e», и попробуйте просто «crontab -e» для своего пользователя или любого, кто является владельцем git и файлов.

Это разобрало меня, так что, возможно, это будет работать и для вас.

0
ответ дан 7 September 2013 в 15:13

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

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