远程ssh命令无法正常工作

时间:2014-04-10 16:23:21

标签: linux bash ssh

主机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

我尝试了很多不同的单引号和双引号组合,我在整个地方都使用了转义字符无济于事。有人可以帮忙吗?

由于

3 个答案:

答案 0 :(得分:0)

我没有使用您的确切命令进行测试,但是

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

为我工作

答案 1 :(得分:0)

远程运行命令:

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

答案 2 :(得分:0)

  

当我添加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。