【问题标题】:remote ssh command not working properly远程 ssh 命令无法正常工作
【发布时间】:2015-02-16 16:39:15
【问题描述】:

主机 xyz 上的以下本地命令提供以下正确输出

taskset -p `ps -ef | grep ripit | grep -v grep| awk '{print \$2}'`
pid 21352's current affinity mask: 1

当我运行以下命令并 ssh 到 xyz 主机时,我也得到正确的输出

ssh xyz "ps -ef | grep ripit | grep -v grep |awk '{print \$2}'"
21352

但是,当我添加 taskset 命令并在主机 xyz 主机上远程运行时,我得到了这个不正确的输出。

ssh xyz "taskset -p `ps -ef | grep ripit | grep -v grep | awk '{print \$2}'`"
sched_getaffinity: No such process
failed to get pid 27599's affinity
bash: line 1: 32127: command not found

我尝试了许多不同的单引号和双引号组合,并且到处使用转义字符都无济于事。任何人都可以帮忙吗?

谢谢

【问题讨论】:

  • 您是否尝试过使用另一个子shell?也许$(ps -ef| grep ripit | grep -v grep | awk '{print $2}')
  • 我确实尝试过> 我必须添加 (),然后我必须为 ssh xyz 使用转义字符 "taskset -p `ps -ef | grep ripit | grep -v grep |awk '{ print \$2}'` .. 它确实提供了答案,但它也产生了垃圾。输出开始说 taskset 命令不正确并给出了所有选项,然后它实际上在 PID 上执行命令。所以至少我已经走得更远了

标签: linux bash ssh


【解决方案1】:

我没有用你的确切命令测试过,但是

ssh host 'lsof -p $(pgrep program)'

为我工作

【讨论】:

  • 很好,但这不是我想要做的......是现在!
【解决方案2】:

远程运行命令:

#!/bin/bash
SCRIPT='
#Your commands
'
sshpass -p<pass> ssh -o 'StrictHostKeyChecking no' -p <port> user@host "$SCRIPT"

【讨论】:

  • 我们没有 sshpass
  • 你可以安装sshpass...你也可以在没有sshpass的情况下使用这个结构,你可以这样做:ssh -o 'StrictHostKeyChecking no' -p &lt;port&gt; user@host "$SCRIPT" ...不ssh -o是正确的......你也可以这样做:@ 987654324@
【解决方案3】:

当我添加taskset命令并在主机xyz主机上远程运行时

ssh xyz "taskset -p `ps -ef | grep ripit | grep -v grep | awk '{print \$2}'`"

这里,`` 之间的命令替换在本地主机上执行并产生本地进程 ID - 难怪远程主机上有No such process。如果你逃避像

这样的反引号
ssh xyz "taskset -p \`ps -ef | grep ripit | grep -v grep | awk '{print \$2}'\`"

命令替换在远程主机上执行并产生正确的进程 ID。

【讨论】:

    猜你喜欢
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多