我正在管理很多 drupal 站点,并尝试使用 drush 自动化一些东西。Drush run 使用配置中为站点别名指定的选项,通过 ssh 在远程主机上本地调用 drush。我做了很多这样的调用,所以为了加快速度,我使用持久的 ssh 连接和 ssh 配置,如下所示:
Host *
# see http://www.revsys.com/writings/quicktips/ssh-faster-connections.html
ControlMaster auto
ControlPath ~/tmp/%r@%h:%p
ControlPersist 3600
Run Code Online (Sandbox Code Playgroud)
我得到了加速,但我也收到了这样的消息:
$ drush @alias drupal-directory webform
/var/local/www/example.com/htdocs/sites/all/modules/contrib/webform
Shared connection to 12.34.56.78 closed.
Run Code Online (Sandbox Code Playgroud)
关于共享连接的消息在 stdout 上,以及我想要的输出(说真的?为什么不是 stderr?),所以当我尝试在我的脚本中捕获输出时它会导致问题:
directory=$(drush @$alias drupal-directory $module)
Run Code Online (Sandbox Code Playgroud)
我希望主连接是我已经打开的连接,但它看起来不像是关闭的。那么也许 drush 是明确地将这个新连接设为主连接并关闭它?无论如何,有没有办法抑制有关连接关闭的消息?
[这个问题是在 drupal / drush 上下文中,但我认为它基本上是关于 ssh。这是正确的网站吗?]
编辑:
看起来问题特定-t
于使用 ssh 选项的位置。我使用它是因为需要在各个点输入 svn 密码,如果没有-t
,则不会显示密码提示。也许有另一种方法可以阻止这些提示丢失?
我从这个答案composer require
中了解到, Drupal之后将强化文件权限。
为什么非 Linux 程序(在本例中为 Composer 或 Drupal)会更改 Linux 的权限?
权限更改不是人类用户(从 root 或 sudo 帐户)的任务吗?