ssh 远程命令解析出错

ssh 远程命令解析出错

我正在尝试通过 ssh 执行单个远程命令来调试设置。这不会执行正确的命令(我看不到输出,但似乎 gdbserver 缺少 PID):

ssh -t [email protected] "ps -A | grep myprocess | awk '{print $1}' | xargs -I{} gdbserver --attach 0.0.0.0:52159 {}"

在进行本地工作时:

ps -A | grep myprocess | awk '{print $1}' | xargs -I{} sudo gdbserver --attach 0.0.0.0:52159 {}

解析过程中哪里出错了?

答案1

我自己尝试了一下,并通过插入 echo 命令进行了调试:

ssh -t [email protected] "ps -A | grep rsyslogd | awk '{print $1}' | xargs -I{} echo gdbserver --attach 0.0.0.0:52159 {}"

最后一部分应该只是 PID,但是却是:

1209 ?        00:00:05 rsyslogd

我的猜测是 awk 中的 $ 符号在某处被 bash 解释并变成一个空字符串,所以 awk 命令只是{print}

在 $ 前添加反斜杠可以修复此问题并生成仅包含 PID 的最终命令。

ssh -t [email protected] "ps -A | grep rsyslogd | awk '{print \$1}' | xargs -I{} echo gdbserver --attach 0.0.0.0:52159 {}"

相关内容