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

SSH远程服务器并在tmux分离模式下运行带管道命令的问题

解决方法

你的问题源于tmux参数格式错误,以及SSH命令传递时的引号解析问题,以下是修正后的方案:

直接修正的命令写法

ssh root@192.168.1.10 -C "tmux new-session -d -s MySession 'nc -l 10000 | zfs receive tank/remotepool'"

或者用单引号嵌套的方式(需转义内部单引号):

ssh root@192.168.1.10 -C 'tmux new-session -d -s MySession '\''nc -l 10000 | zfs receive tank/remotepool'\'''

问题原因说明

  • tmux的-d(分离模式)和-s(指定会话名)选项必须配合new-session子命令使用,你之前省略了new-session,导致tmux无法识别要执行的后续命令。
  • 原命令中,单引号包裹的管道命令可能被本地Shell提前解析。通过外层套双引号,或转义内部单引号,能确保完整命令字符串传递到远程服务器,让tmux执行时正确解析管道符。

替代方案(复杂场景更适用)

用tmux send-keys间接发送命令,避免引号解析问题:

ssh root@192.168.1.10 -C 'tmux new-session -d -s MySession; tmux send-keys -t MySession "nc -l 10000 | zfs receive tank/remotepool" Enter'

该方式先创建分离会话,再向会话发送命令和回车信号,兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:47:03