2

У меня есть следующий скрипт

#!/bin/bash
REPODIR=$HOME/work/repository/
cd $REPODIR
var=`git fetch --dry-run 2>&1`
echo $var > $HOME/error.txt

Я хочу запускать свой скрипт каждую минуту, поэтому я редактирую crontab (через crontab -e), чтобы запускать скрипт от текущего пользователя.

*/1 * * * * /home/nameoftheuser/Documents/report-server.sh

С ручного запуска - скрипт работает правильно. Но работает скрипт из crontab (в файле error.txt):

fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

Файл скрипта имеет 775 прав. Я также проверил git status и git config -l и эти команды работают правильно. git config -l правильно отображает URL-адрес удаленного источника. Ubuntu 13.04 x64 с последними обновлениями.

Что мне делать, чтобы работать с git из crontab?

2 ответа2

1

Git не может авторизоваться, когда спрашивает удаленный об изменениях в master, потому что когда я генерирую ssh-ключ, я защищаю его парольной фразой.

Поэтому я просто регенерирую ключ без ключевой фразы и скрипт работает отлично.

0

сделать работу crontab как:

*/1 * * * * nameoftheuser /home/nameoftheuser/Documents/./report-server.sh

или же

*/1 * * * * nameoftheuser sh /home/nameoftheuser/Documents/report-server.sh

Или, если вы хотите сделать это так, как вы написали, вам нужно добавить alias в конце /etc/bash.bashrc к этому сценарию, например:

alias report-server='/home/nameoftheuser/Documents/./report-server.sh'

и тогда вы можете добавить cron job как:

*/1 * * * * root report-server

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .