gpt4 book ai didi

linux - 执行 bash 脚本和手动执行有区别吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:56:40 28 4
gpt4 key购买 nike

所以,这两天发生在我身上。我试图在 SaltStack 和一个非常简单的 bash 脚本的帮助下设置一个颠覆存储库。

Salt 做的事情非常简单,它只是将 10-subversion.conf 从 master 移动到 /root/ 在 minion(slave) 上并安装需要包,如 subversionhttpdmod_dav_svn

所有这一切发生后,下一个脚本运行:

#!/bin/bash

mv -f /root/10-subversion.conf /etc/httpd/conf.modules.d/10-subversion.conf
mkdir /var/www/svn
svnadmin create /var/www/svn/repo
chown -R apache.apache /var/www/svn/repo
chcon -R -t httpd_sys_content_t /var/www/svn/repo
chcon -R -t httpd_sys_rw_content_t /var/www/svn/repo
systemctl restart httpd
mkdir /mnt/logs
touch /mnt/logs/log
svn checkout http://localhost/svn/repo
svn checkout http://localhost/svn/repo /mnt/logs/

在那之后,我收到无法加载 svn 存储库的错误。

svn: E175002: Unable to connect to a repository at URL 'http://localhost/svn/repo'
XML parse error at line 1: no element found (http://localhost/svn/repo)

这里很奇怪,这就是问题的原因是,如果我单独运行每个命令(我从字面上从脚本复制并粘贴到 CLI),就可以工作。

那么,仅仅是 subversion 随机失败,还是执行脚本与手动执行脚本之间存在实际差异?

编辑:

不知何故,我尝试通过复制和粘贴脚本中的命令来再次执行此操作,但失败了。然后我意识到,在测试它时,我曾经使用编辑器手动修改 10-subversion.conf 但现在我正在移动它,所以我恢复了快照,再次手动编辑文件并工作。我在移动文件和编辑文件时检查了文件的权限和所有权,两者都是相同的(如下所示):

-rw-r--r--. 1 root root 120 abr 10 09:18 /etc/httpd/conf.modules.d/10-subversion.conf

最佳答案

可能的解释是,当您尝试运行 svn checkout 时,网络服务器尚未完成重启。 systemctl restart httpd 命令正在重启一个守护进程,并且不知道该守护进程何时完成初始化,并开始监听 HTTP 请求。

可能的解决方案:

  1. 重启后运行 sleep 10 或类似的程序。
  2. 在循环中使用 curlwget 来“探测”守护进程,等待您从 GET 获得成功响应。

关于linux - 执行 bash 脚本和手动执行有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36764878/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com