SSH,运行进程然后忽略输出

时间:2018-01-24 00:02:52

标签: linux shell ssh terminal stdout

我有一个SSH和在SSH之后运行脚本的命令。该脚本运行二进制文件。

脚本完成后,我可以键入任何键,我的本地终端将恢复正常状态。但是,由于该过程仍然在我用SSH登录的机器中运行,因此只要它登录到stdout,我就会在本地终端中看到它。

如果不通过猴子在本地计算机上修补它而将其传递给/dev/null,我怎么能忽略这个输出?我希望将输出保留在我所熟悉的机器内,并且我想在进程启动后完全离开SSH。不过,我可以将它传递给机器中的/dev/null

这是我正在运行的一个例子:

cat ./sh/script.sh | ssh -i ~/.aws/example.pem ec2-user@11.111.11.111

script.sh的内容如下所示:

# Some stuff...

# Run binary file
./bin/binary &

2 个答案:

答案 0 :(得分:3)

将脚本复制到远程计算机,然后远程运行。以下命令在本地计算机上执行。

 $ scp -i /path/to/sshkey /some/script.sh user@remote_machine:/path/to/some/script.sh

 # Run the script in the background on the remote machine and pipe the output to a logfile. This will also exit from the SSH session right away.
 $ ssh -i /path/to/sshkey \
    user@remote_machine "/path/to/some/script.sh &> /path/to/some/logfile &"

注意,将在远程计算机上创建logfile

 # View the log file while the process is executing
 $ ssh -i /path/to/sshkey user@remote_machine "tail -f /path/to/some/logfile"

答案 1 :(得分:2)

./bin/binary &>/dev/null &

解决了这个问题