You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH远程执行JMeter后台命令报错:未知参数&

解决SSH执行nohup JMeter命令时的"Unknown arg: &"错误

我来帮你分析下问题根源,以及对应的解决办法:

问题原因

你在Here Document里把后台执行符&转义成了\&,这就踩坑了——远程服务器上的Shell没把这个&当成“让命令后台跑”的控制符,反而直接把它传给了JMeter,JMeter自然认不出这个奇怪的参数,就抛出了"Unknown arg: &"的错误。

修正方案

直接去掉&前面的反斜杠,同时建议加上输出重定向,避免nohup的输出阻塞SSH连接。修改后的代码片段如下:

ssh $masterIP << EOF
nohup jmeter -n -t $JMETERWS/jmx/$jmxfilename -R $slavePrivateIP -GDISCOVERYURL=$domain -GREGION=$region -GDISCOVERYENV=$env -GSERVICE=$service -GRUNID=$runId -GTESTID=$testId -Gnumthread=$numthread -Gtime=$rampuptime -GSESSIONTIME=$sessiontime > nohup.out 2>&1 &
EOF

补充说明

  • 去掉\后,远程Shell会正确识别&,让nohup启动的JMeter进程在后台运行,不会占用你的SSH会话。
  • 加上> nohup.out 2>&1是把JMeter的标准输出和错误输出都重定向到nohup.out文件,既避免了输出内容导致SSH挂起,也方便你后续查看运行日志排查问题。

另一种可选写法

如果你担心Here Document的变量解析问题,也可以直接把整个命令用双引号包裹,通过SSH的命令参数传递,效果是一样的:

ssh $masterIP "nohup jmeter -n -t $JMETERWS/jmx/$jmxfilename -R $slavePrivateIP -GDISCOVERYURL=$domain -GREGION=$region -GDISCOVERYENV=$env -GSERVICE=$service -GRUNID=$runId -GTESTID=$testId -Gnumthread=$numthread -Gtime=$rampuptime -GSESSIONTIME=$sessiontime > nohup.out 2>&1 &"

这种方式下,本地Shell会先替换所有变量,再把完整命令传给远程执行,同样能实现后台运行JMeter的需求。

内容的提问来源于stack exchange,提问作者anish ratnawat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:41:08