从cron作业脚本中调用的Git

问题描述 投票:0回答:1

如果我在命令行中运行这些命令,它将按预期工作。

git add * -v
git add . -v
git commit -m "This is the latest backup" -v
git tag -a v1.0.7 -m "my version v1.0.7" -v
git push origin v1.0.7 -v

但是,如果我在一个脚本名script.sh运行以下命令:

cd working_dir && sudo -u user1 git add * -v >> logfile1 2> /home/user1/another.log
cd working_dir && sudo -u user1 git add . -v >> logfile1 2> /home/user1/another.log
cd working_dir && sudo -u user1 git commit -m "This is the latest backup" -v >> logfile1 2> /home/user1/another.log
cd working_dir && sudo -u user1 git tag -a v1.0.7 -m "my version v1.0.7" -v >> logfile1 2> /home/user1/another.log
cd working_dir && sudo -u user1 git push origin v1.0.7 -v >> logfile1 2> /home/user1/another.log

然后有cron运行script.sh:

57 13 * * * user1 /usr/local/bin/script.sh

那么问题是,标签不被创建,也不是推的标签。

任何想法,我做错了什么?

bash git cron
1个回答
1
投票

有任意数量的事情可能出现了问题。检查您的cron日志是肯定的。

最有可能的是/usr/local/bin/script.sh不起作用。这可能是因为它缺乏一个#!/bin/sh,或者因为它尚未设置可执行文件(chmod +x /usr/local/bin/script.sh)。这是很容易通过运行sudo -u user1 /usr/local/bin/script.sh检查。

这也有可能是cd working_dir失败,因为一个错字或权限问题。


所有sudo东西是不必要的,因为是把用户的脚本到/usr/local/bin。每个用户都有自己的cronfile,这可以通过user1完全完成。

身份登录user1。把脚本到~/bin/script.h。确保它是可执行的。取出sudos。运行crontab -e弹出user1的cronfile。然后加...

57 13 * * * ~/bin/script.sh

...无需用户。

© www.soinside.com 2019 - 2024. All rights reserved.