【发布时间】:2025-11-25 22:25:01
【问题描述】:
我目前正在清理别人在 CentOS 6 服务器上留下的烂摊子。有一个应用程序需要每 6 小时备份到一个 github 帐户。有一个脚本负责准备数据,它负责 git add 和 git commit。
git push 由“expect”脚本处理。这样做是为了在 ssh 请求时可以将密码短语传递给 git push。用户不想使用空密码。
脚本在 root 用户从 bash shell 中的命令行运行时运行良好。我可以看到传输到github的文件。
当脚本在由 root 创建的 crontab 下运行时,脚本似乎在运行,但 git push 不会发生。如果我手动运行 git push,在脚本失败后,我注意到应该发生的推送与我从命令行调用的手动推送一起发生。看来脚本中应该发生的推送已经被缓存了,没有推送到github。
谁能建议我在这里缺少什么?是否有可能让 git push 在这样的脚本中工作?
问候
理查德
【问题讨论】:
-
当您手动执行命令时,您会以 root 身份运行它吗?不是须藤?
-
命令在 cron 下失败的通常原因是它取决于 .profile 中设置的环境变量,因为它不是由 cron 作业运行的。
-
当我手动运行命令时,我以 root 身份运行它
-
我同意环境变量可能是从 cronjob 运行命令失败的原因。在标准的 CentOS 安装中,似乎没有为 root 登录设置很多环境变量。我遇到问题的脚本中的所有命令都使用它们的绝对路径调用,并且不依赖于 PATH 变量。