我有一个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 &
答案 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 &