我的场景如下:更新 Git 存储库上的文件后,我有一个 Git 挂钩,可以从我的 Web 服务器调用 API。该 API 执行 Git pull,然后我有一个合并后的 Git 钩子,可以重新启动 Web 服务器 (Gunicorn)。 Web 服务器应在拉取完成后几秒钟重新启动,否则 Web 服务器将在 API 调用完成之前关闭,并向 Git 挂钩返回错误。目前我制定了以下解决方案,但我对此不满意。文件.git/hooks/post-merge
#!/bin/sh
/var/www/tempcollect/.git/hooks/restart > /var/www/tempcollect/.git/hooks/restart.log &
文件.git/hooks/restart
sleep 10s
/usr/bin/sudo systemctl restart tempcollect
我希望在post-merge
文件中包含重新启动 Web 服务器的命令。文件的执行post-merge
是由 Git 在拉取结束时启动的,因此我无法控制它的启动方式。
答案1
最后我在文件中得到了这一行.git/hooks/post-merge
#!/bin/sh
( sleep 10 ; /usr/bin/sudo systemctl restart tempcollect ) &