cronjob做一个git pull

时间:2017-06-14 08:28:13

标签: git cron cron-task

我想设置一个cronjob给我一个git pull和其他零碎的东西。

我的工作看起来像这样:

cd /var/www/project; git pull; composer install; composer update;

但它永远不会有效我尝试在本地进行更改,并推动它,我从未见过我必须手动git拉动的变化,为什么会发生这种情况?我不知道为什么我会在这里获得要点,这些都是明星。

在cron.log中我得到:

Jun 14 09:38:32 ip-172-31-24-22 cron[19247]: (CRON) INFO (pidfile fd = 3)
Jun 14 09:38:32 ip-172-31-24-22 cron[19247]: (CRON) INFO (Skipping @reboot jobs -- not $
Jun 14 09:39:01 ip-172-31-24-22 CRON[19256]: (root) CMD (php /var/www/project/artisa$
Jun 14 09:39:01 ip-172-31-24-22 CRON[19257]: (root) CMD (cd /var/www/project; git pu$
$ionclean ] && /usr/lib/php/sessionclean)
Jun 14 09:39:02 ip-172-31-24-22 CRON[19254]: (CRON) info (No MTA installed, discarding $

//

Already up-to-date.
/bin/sh: 1: composer: not found
/bin/sh: 1: composer: not found

1 个答案:

答案 0 :(得分:1)

因此,要修复/bin/sh: 1: composer: not found,您可以设置绝对路径而不是程序名称。

要知道composer的位置:

$ whereis composer
composer: /usr/bin/composer /usr/share/man/man1/composer.1.gz

您需要的是/usr/bin/composer

因此您可以根据以下内容更新您的cron行:

* * * * * cd /var/www/project && git pull && /usr/bin/composer install && /usr/bin/composer update

顺便说一下,这里有一些提示:

  • 不要用五颗星开始cron线,这真的不是一个好习惯。
  • 喜欢crons的事件 - 就像git hooks一样,在这种情况下,你应该使用githooks。
  • 如果要在一行中执行多个bash命令,请使用&&而不是;(除非您知道自己在做什么)。
  • 我不知道这是不是一个好习惯,但是您可以对crontab中调用的每个程序使用绝对路径。 (/usr/bin/git)。
  • 在cron行中使用cd并不是那么好,您应该看看是否可以向git&添加参数。 composer命令从具有相同行为的任何地方运行它。