我正在尝试运行以下命令
ssh xxx@99.99.99.99 ". ./.profile; myscript 2&1 >> /tmp/2244455.log"
但它出现了以下错误
sh: 1: execute permission denied
当我在远程服务器上运行myscript 2&1 >> /tmp/2244455.log
时,它运行正常。
同样,当我运行ssh xxx@99.99.99.99 ". ./.profile; myscript
时,它运作正常。
请你帮我解决这个问题
myscript不归xxx所有,权限是
ls -ltrh myscript
-rwxr-xr-x 1 yyy other 11K May 18 15:04 myscript
答案 0 :(得分:1)
2& 1语法错误;如果要将stderr重定向到stdout,则需要:
2>&1
你也有没有正确嵌套的引号;反引号``与双引号重叠。编辑:我看到你已经编辑了这个问题,但现在你的命令开头有一个不配对的反击
所以,我猜猜你用引号后的内容,但你的整个命令可能是:
ssh xxx@99.99.99.99 ". ./.profile; myscript 2>&1 >> /tmp/2244455.log"
这将在远程99.99.99.99计算机上创建/tmp/2244455.log。
答案 1 :(得分:1)
在ssh
命令周围放置背包会导致本地shell尝试将其输出作为新命令行运行。摆脱那些,如果这不仅仅是格式化问题的错字。
真正的问题是您错过了重定向上的>
。 2>&1
,而不是2&1
。 >
less版本只是将2作为参数添加到命令中,然后在后台运行名为1
的命令时尝试在后台运行该命令。