【问题标题】:cronjob to do a git pullcronjob 做一个 git pull
【发布时间】:2017-06-14 22:30:42
【问题描述】:

我想设置一个 cronjob 来帮我做一个 git pull 和其他一些零碎的工作。

我的工作是这样的:

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

但它从来没有工作我尝试在本地进行更改,然后推送它,我从未见过我必须手动 git pull 的更改,为什么会发生这种情况?我不知道为什么我在这里得到要点这些是星星。

在 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

【问题讨论】:

  • 登录 cron 的用户,导航到他的家并执行命令看看发生了什么
  • 你试过用至少一个数字而不是只用星星吗?您也可以尝试将 */ 放在前面,不知道为什么但对我有用。
  • 也通过这个question
  • 我添加了 cron.log,这会告诉任何人吗?
  • cron 作业的输出使用电子邮件发送回 crontab 所有者。 cron 守护程序找不到您系统上安装的任何电子邮件程序,并且无法通过电子邮件发送输出。它在日志中抱怨它 (No MTA installed, discarding output)。

标签: git cron cron-task


【解决方案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 不是很好,您应该看看是否可以向 gitcomposer 命令添加参数,以便在任何地方以相同的行为运行它。

【讨论】:

    猜你喜欢
    • 2021-09-25
    • 2018-01-03
    • 2022-01-20
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2012-12-22
    • 2014-12-01
    • 2020-03-25
    相关资源
    最近更新 更多