gpt4 book ai didi

Bash 脚本 : What does this mean? "done
转载 作者:行者123 更新时间:2023-11-29 08:57:14 25 4
gpt4 key购买 nike

您能否准确解释最后一行的作用以及为什么需要它?

while true; do
/usr/bin/ssh -R 55555:localhost:22 -i ~/.ssh/tunnel-id user@server.com
sleep 1
done < /dev/null & disown

这就是整个脚本,它的目的是创建一个到中继服务器的 SSH 隧道。我是 Bash 的新手,但看起来它会不断尝试保持连接有效,但我不明白最后一行的语法。

此脚本是在防火墙后使用 SSH 的过程的一部分,在我的例子中是 NAT: http://martin.piware.de/ssh/index.html

最佳答案

最后一行将 /dev/null 作为输入重定向到循环中——它立即返回 EOF——并在后台运行该进程。然后它运行命令 disown (1) 在前台,分离进程,防止 HUP 信号停止它(有点像 nohup。)。效果是使循环变成类似于守护进程的东西。

整个循环每秒运行一次 ssh 命令。该命令打开一个 ssh 隧道,将其本地连接到端口 5555 并远程连接到端口 22 (ssh)。如果有什么东西可以连接,它就会连接;否则重定向的 EOF 会导致它终止。然后它会在一秒钟后再次尝试。

(或者我相信,我还没有真正尝试过。)

在 bash 中,disown 是内置的;使用 help disown 查看一些细节。

关于Bash 脚本 : What does this mean? "done </dev/null & disown",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4425943/

25 4 0

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