私はたくさんの答えを調べます この主題について 、しかしここで何かが間違っています、説明させてください。 cron
をよりクリーンにするために、このスクリプトを作成します:)
#!/bin/bash
cd /home/valter.silva/Development/git/valter/
/usr/bin/git add -A
/usr/bin/git commit -am "update `date`"
/usr/bin/git Push
次に、それを私のcronに追加します。valter.silva's cron
、notmy root cron
:
00 * * * * /home/valter.silva/Development/git/valter/scripts/git/sync.sh
Cronを再起動します
Sudo service cron restart
cron stop/waiting
cron start/running, process 6047
Aaand ..何も起こりません..
しかし、コマンドラインでスクリプトを実行すると、すべてが正常に機能します。パス全体をcronスクリプトに配置しないと、正しく機能しない場合があることを私は知っています。そして、rootのcronではなく、cronを使用してそれを行う必要があります。
では、ここで何が問題になっていますか?何か案は ?ありがとうございました!
udpate
Terdonの提案に従って操作をログに記録しますが、すべて問題ないようですが、Push
プロセスは問題ありません。どうして ?
[master ad5d001] update Fri Aug 9 11:00:01 BRT 2013
9 files changed, 1224 insertions(+), 364 deletions(-)
create mode 100644 scripts/centreon/4.answers~
create mode 100644 scripts/centreon/6.importing database
create mode 100644 scripts/centreon/6.importing database~
create mode 100755 scripts/centreon/7.upgrade.sh
create mode 100755 scripts/centreon/7.upgrade.sh~
create mode 100644 scripts/centreon/8.answers
create mode 100644 scripts/centreon/8.answers~
# On branch master
# Your branch is ahead of 'Origin/master' by 1 commit.
#
nothing to commit (working directory clean)
# On branch master
# Your branch is ahead of 'Origin/master' by 1 commit.
#
nothing to commit (working directory clean)
# On branch master
# Your branch is ahead of 'Origin/master' by 1 commit.
#
nothing to commit (working directory clean)
# On branch master
# Your branch is ahead of 'Origin/master' by 1 commit.
#
nothing to commit (working directory clean)
まとめると、リンクが簡略化されているので、 hutiのブログ投稿 に基づいて回答を探している人にとって読みやすくなっています。
したがって、sync.sh
の場合、プッシュ用に-u Origin master
を追加します。
#!/bin/bash
cd /home/valter/git-project/
/usr/bin/git add -A
/usr/bin/git commit -am "Daily update"
/usr/bin/git Push -u Origin master
スクリプトがbashで実行できることを確認してください。
Sudo chmod 765 ~/sync.sh
次に、/etc/crontab
に行を追加できます。
Sudo nano /etc/crontab # To edit the file
01 18 * * * root /home/valter/sync.sh
Cronジョブを有効にするには、必ず再起動してください。これで、スクリプトは毎日18:01に実行されます。変更がない場合でも、何もプッシュされません。
私はgitマスターではありませんが、ローカルのgitテストリポジトリでいくつかのgitテストを行います。 git Pushを実行すると、出力は次のようになります。
fatal: No configured Push destination.
Either specify the URL from the command-line or configure a remote repository using
git remote add <name> <url>
and then Push using the remote name
git Push <name>
Q:git remote add
コマンドを使用してリモートリポジトリを構成しましたか?はいの場合は、リモートリポジトリの名前でgitPushを実行してみてください。いいえの場合は、構成するか、コマンドライン(git Push git://Host.xz[:port]/path/to/repo.git/
)でリモートリポジトリのURLを指定してgitPushを使用します。
なぜあなたは何かが起こると期待しますか? cron
に、スクリプトを毎時、正時に実行するように指示しました。たとえば、13:02にcrontabを変更した場合、14:00まで何も起こりません。
時間が来るまでしばらく待ってみてくださいXX:00
、スクリプトを実行する必要があります。ああ、cron
を再起動する必要はありません。新しいcrontabを読み取り、次に実行する必要があるときに実行します。
十分に待機してもスクリプトが実行されない場合は、エラー出力をリダイレクトして、何かが起こっているかどうかを確認してください。
00 * * * * /home/valter.silva/Development/git/valter/scripts/git/sync.sh 2> /home/valter.silva/error.txt
また、ダミーのcronジョブを設定して、それが機能するかどうかを確認してください。
00 * * * * date > /home/valter.silva/date.txt