gpt4 book ai didi

linux - 通过 SSH 但在后台运行远程命令

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:32:25 28 4
gpt4 key购买 nike

我的用例如下。我必须列出远程机器上的文件,我正在使用 SSH 来完成此任务

命令看起来像这样

/usr/bin/ssh -2 remote_user@remote_host ls -l remote_dir

这很好用,我得到了 ls 输出

但是当我用 nohup 或在后台运行它时它会出错。该过程刚刚退出。例如下面的命令无法给出任何输出

nohup /usr/bin/ssh -2 remote_user@remote_host ls -l remote_dir &

在 Debug模式下运行时,我看到了这个错误。它认为所有连接都已关闭

debug2: channel 0: read<=0 rfd 4 len -1^Mdebug2: channel 0: read failed^Mdebug2: channel 0: close_read^Mdebug2: channel 0: input open -> drain^Mdebug2: channel 0: ibuf empty^Mdebug2: channel 0: send eof^Mdebug2: channel 0: input drain -> closed^Mdebug2: tcpwinsz: 87380 for connection: 3^Mdebug2: tcpwinsz: 87380 for connection: 3^Mdebug2: channel 0: rcvd eof^Mdebug2: channel 0: output open -> drain^Mdebug2: channel 0: obuf empty^Mdebug2: channel 0: close_write^Mdebug2: channel 0: output drain -> closed^Mdebug1: client_input_channel_req: channel 0 rtype exit-status reply 0^Mdebug2: channel 0: rcvd close^Mdebug3: channel 0: will not send data after close^Mdebug2: tcpwinsz: 87380 for connection: 3^Mdebug2: channel 0: almost dead^Mdebug2: channel 0: gc: notify user^Mdebug2: channel 0: gc: user detached^Mdebug2: channel 0: send close^M

如何在后台运行远程文件列表并且我不想重定向标准输出和标准错误?

谁能解释一下这里发生了什么?

最佳答案

发现 SSH 命令必须传递一个 -t 参数。

SSH 的手册页是这样说的

     -t      Force pseudo-tty allocation.  This can be used to execute arbitrary screen-based programs on a remote machine,             which can be very useful, e.g. when implementing menu services.  Multiple -t options force tty allocation, even if             ssh has no local tty.

在使用 -t -t 运行 SSH 命令时,我能够使用 nohup 运行它

nohup /usr/bin/ssh -2 -t -t remote_user@remote_host ls -l remote_dir &

您必须指定两次 -t 以强制分配 tty

关于linux - 通过 SSH 但在后台运行远程命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24795377/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com