![如何让 svn 每分钟查找一次是否有更新以及是否有调用某些脚本?](https://linux22.com/image/1107779/%E5%A6%82%E4%BD%95%E8%AE%A9%20svn%20%E6%AF%8F%E5%88%86%E9%92%9F%E6%9F%A5%E6%89%BE%E4%B8%80%E6%AC%A1%E6%98%AF%E5%90%A6%E6%9C%89%E6%9B%B4%E6%96%B0%E4%BB%A5%E5%8F%8A%E6%98%AF%E5%90%A6%E6%9C%89%E8%B0%83%E7%94%A8%E6%9F%90%E4%BA%9B%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我想知道是否有可能创建这样的 .sh 脚本,让普通用户能够以类似的方式启动nohup ./superScript.sh >& /dev/null &
,每分钟查看一次 SVN,找出当前版本,并查看是否有更新运行命令,如下:
kill `ps aux | grep -F 'ServerAPP' | grep -v -F 'grep' | awk '{ print $2 }'`
./server_automated_net_setup.sh
cd server/install-dir/
export LD_LIBRARY_PATH=./:~/server/install-dir/lib_boost:~/server/install-dir/lib_openSSL
nohup ./ServerAPP >& /dev/null &
这将终止当前正在运行的应用程序,运行我们在用户家中已有的一些自动更新脚本,~
然后再次运行它。
是否可以创建这样的脚本以及如何创建?
答案1
该脚本看起来是这样的:
#! /bin/bash
REMOTE_REPO="svn://path/to/remote/repo"
LOCAL_REPO="/path/to/local/repo"
REMOTE_REV=`svn info $REMOTE_REPO | grep '^Revision:' | awk '{print $2}'`
LOCAL_REV=`svn info $LOCAL_REPO | grep '^Revision:' | awk '{print $2}'`
if [ $REMOTE_REV -eq $LOCAL_REV ]; then
exit 0;
else
# Run your commands here.
cd $LOCAL_REPO
svn up
fi
此脚本仅比较本地和远程 svn 存储库的当前修订号。如果不同,则运行一些命令。如果它们相同,则它存在。
然后你只需要设置一个计划任务按照您想要的频率运行。
答案2
如果你可以访问 svn 服务器,那么更好的方法是定义svn 后提交钩.这样你就可以避免轮询。
我们到了吗?我们到了吗?我们到了吗?- 看看这有多烦人?
优点钩子过度轮询:
- 您会立即知道(而不是延迟 1 分钟),因为您告诉 svn 当任何内容发生变化时通知您。
- 你不会浪费你的资源去提问,也不会浪费服务器的资源去回答