SSH, run process and then ignore the output

亡梦爱人 提交于 2019-12-11 02:31:11

问题


I have a command that will SSH and run a script after SSH'ing. The script runs a binary file.

Once the script is done, I can type any key and my local terminal goes back to its normal state. However, since the process is still running in the machine I SSH'ed into, any time it logs to stdout I see it in my local terminal.

How can I ignore this output without monkey patching it on my local machine by passing it to /dev/null? I want to keep the output inside the machine I am SSH'ing to and I want to just leave the SSH altogether after the process starts. I can pass it to /dev/null in the machine, however.

This is an example of what I'm running:

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

The contents of script.sh looks something like this:

# Some stuff...

# Run binary file
./bin/binary &

回答1:


Copy the script to the remote machine and then run it remotely. Following commands are executed on your local machine.

 $ 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 &"

Note, logfile will be created on the remote machine.

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



回答2:


Solved it with ./bin/binary &>/dev/null &



来源:https://stackoverflow.com/questions/48412836/ssh-run-process-and-then-ignore-the-output

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!