主机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
我尝试了很多不同的单引号和双引号组合,我在整个地方都使用了转义字符无济于事。有人可以帮忙吗?
由于
答案 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。