【问题标题】:How to run list of linux commands as different user如何以不同用户身份运行 linux 命令列表
【发布时间】:2014-08-16 01:05:18
【问题描述】:

我必须以与我当前登录的用户不同的用户身份执行命令列表。 我尝试了下面的脚本,它工作正常,但捆绑安装卡住了并且没有出来。

sudo -u maneesh bash -c : && RUNAS="sudo -u maneesh"
$RUNAS bash<<_
cd /opt/maneesh/

unicorn_config="/opt/maneesh/config/unicorn.rb"

bundle install

bundle exec unicorn_rails -D -p 9001  -c $unicorn_config

_

任何帮助将不胜感激

【问题讨论】:

  • 卡住是什么意思?那你不应该解决那个问题吗?
  • 如果我以 maneesh 用户身份登录,捆绑安装工作正常。但是当我以其他用户身份登录并执行上述脚本时,捆绑安装会卡住
  • 你确定它是捆绑安装程序吗?我对 ruby​​ 或 unicorn 了解不多,但 -p 标志看起来像是在运行服务器。服务器通常会“卡住”,它会一直等到客户端询问信息等。

标签: linux shell unix ubuntu


【解决方案1】:

为了以不同的用户身份运行命令,您可以简单地用逗号列出命令并在 bash 模式下运行它们:

sudo -u maneesh bash -c 'cd /opt/maneesh/; unicorn_config="/opt/maneesh/config/unicorn.rb"; bundle install; bundle exec unicorn_rails -D -p 9001  -c $unicorn_config'

或者您可以简单地编写一个 shell 脚本:

list.sh(或其他名称):

cd /opt/maneesh/
unicorn_config="/opt/maneesh/config/unicorn.rb"
bundle install
bundle exec unicorn_rails -D -p 9001  -c $unicorn_config

并以另一个用户身份运行:

sudo -u maneesh bash list.sh

我认为您的脚本可能在只有指定用户有权访问的 cd /opt/maneesh 上失败。您可以通过更改访问权限来解决此问题。

【讨论】:

  • 实际上我不能这样运行,必须在脚本本身中处理。我知道这听起来很奇怪,但如果我必须解释这将是一个大故事。有没有办法在脚本本身中处理这个问题?
  • 我在名为 list.sh 的文件中添加以下行 sudo -u maneesh bash -c 'cd /opt/maneesh/; unicorn_config="/opt/maneesh/config/unicorn.rb";捆绑安装; bundle exec unicorn_rails -D -p 9001 -c $unicorn_config' 并执行脚本。但它卡在获取源代码行。这也是我之前提到的相同错误。/list.sh Fetching source index for rubygems.org
  • 显然是 sudo -u maneesh bash -c 'cd /opt/abc;捆绑安装'本身无法正常工作:(
  • 解决方法:登录tty (Ctrl+Alt+F1),使用maneesh 登录并在那里执行脚本...
猜你喜欢
  • 1970-01-01
  • 2010-11-04
  • 2022-01-07
  • 2010-11-22
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
相关资源
最近更新 更多