以下脚本正在运行git pull
,然后将状态写入文件。
#!/bin/bash
git pull
git log -7 > /var/www/domain.com/v.txt
当我手动运行文件时,会创建文件v.txt,并按预期创建内容
bash /var/www/domain.io/update.sh
当我通过cron运行时,文件已创建,但内容为为空
* * * * * bash /var/www/domain.io/update.sh
怎么了?
答案 0 :(得分:0)
如果我没记错的话,交互式shell与cron的运行时环境是不同的。具体而言,像PATH这样的环境变量的设置可以是不同的。这可以影响脚本如何通过cron运行。
作为测试,您可以尝试以下方法。创建一个小型bash shell脚本,将您的环境转储到文件中,并从命令行和cron运行此脚本,并查找差异。
EG。文件名为:r1.sh
#! /bin/bash
env
从命令行:
$ r1.sh > cmd-line.out
来自cron
* * * * * /home/your-user-name/r1.sh > /home/your-user-name/cron.out
注意:使用shell脚本和输出文件的完整路径名。
当我在我的系统上进行此测试时,两者之间存在许多差异,例如PATH变量要短得多。
如果您的系统出现这种情况,则可能在cron环境中没有“git”。
无论如何,只是一个尝试的想法。 我希望这会有所帮助。