Ssh
無法通過 SSH 在遠端螢幕會話中重定向 STDOUT
我想通過 SSH/screen 執行一個長時間執行的命令,並將輸出重定向到一個文件。我能夠很好地執行命令(類似於這個問題),但輸出永遠不會出現。
這是我目前的命令:
ssh user@host screen -dm "ping -c 20 -i 5 localhost > /tmp/ping.out"
在遠端主機上,我可以看到會話:
> screen -ls There is a screen on: 4530..com001 (Detached) 1 Socket in /var/run/screen/S-root.
並附加以查看實時輸出,該輸出按預期終止, ping 命令完成:
PING localhost (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.060 ms 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.071 ms ..
除了文件重定向之外,一切都只是我需要的:本地主機上的 ssh 立即斷開連接,命令在遠端主機上的螢幕會話中實時執行(我可以連接到螢幕會話並查看我的 ping 執行)和螢幕ping 命令完成後會話立即終止。/tmp/ping.out 文件甚至可以在遠端主機上創建!但是顯示停留在螢幕會話中,而不是被重定向到文件。
我在這裡想念什麼?
(順便說一句,ping 只是為了測試。最終我想停一個 1 - 2 分鐘的 tcpdump 並在後台收集輸出以進行故障排除)。
螢幕“輸出”並不完全符合您的期望,因為它被設計為多路復用器。您正在尋找的命令是:
ssh user@host screen -d -m "sh -c 'ping -c 20 -i 5 localhost > /tmp/ping.out'"
此命令將產生一個新的外殼並按預期工作。