当前位置: 首页 > 知识库问答 >
问题:

服务器管理 - 为什么SSH连接在执行脚本后会断开?

白宏义
2024-01-30
#!/bin/bash{ sleep 3 kill -9 -- -$PPID}&tail -f /var/log/*.log

ssh连接服务执行如上代码,ssh连接会断开?好奇怪

执行结果
Connection to x.x.x.x closed.
执行系统
CentOS Linux release 7.8.2003 (Core)

共有1个答案

法浩壤
2024-01-30

当你使用SSH连接到远程服务器并执行脚本时,脚本中的命令会按照顺序执行。在你的示例中,脚本首先将一个后台任务设置为在3秒后杀死其父进程(即SSH连接)。然后,脚本开始显示/var/log目录下的所有日志文件的内容。

由于父进程(SSH连接)在脚本执行时被杀死,因此SSH连接将被终止,导致连接断开。

为了解决这个问题,你可以将杀死父进程的命令移动到脚本的末尾,或者将其更改为在特定条件下执行。这样可以确保SSH连接在执行其他命令时保持打开状态,直到脚本完成执行。

以下是修改后的示例脚本:

#!/bin/bash# 其他命令和操作...# 等待一段时间,以便你可以查看日志文件的内容sleep 30# 在脚本结束时杀死父进程kill -9 -- -$PPID

这样,SSH连接将保持打开状态,直到脚本执行完毕或达到指定的等待时间。

 类似资料:
  • 我使用java ssh客户端(http://www.jcraft.com/jsch/)连接到远程机器并执行命令。代码工作正常,直到我连接到远程机器并执行命令。然而,问题是,即使命令执行成功,通道和会话也不会断开。 我也打电话给session.disconnect和channel.disconnect,但仍然是问题所在。 这是我的代码: 请建议

  • 问题内容: 我有一个简单的Lua脚本: 为什么此脚本阻止Redis服务器?如果我在另一个控制台命令中运行,例如:设置测试1,结果: 问题答案: Redis是单线程的。每个命令都会阻止它。也是命令,因此它会阻止redis。

  • 这是一个交通灯项目。GUI是一个服务器。在GUI上,我使用一个按钮启动服务器,但我的GUI被冻结,因为它正在等待客户端。克莱恩夫妇只是接受者。我知道我应该使用线程,但我不知道如何使用。问题是GUI的冻结。请帮帮我 } //这是我的课 公共类ServerThread扩展线程{ } //下面是ServerClass公共类服务器实现Runnable{ }

  • 我已经在亚马逊(AWS)机器上创建了一个linux节点。我可以 ssh 到节点,但我不能 ping 到它的 IPv4 公共 IP。我应该怎么做才能解决此问题? 作品: 不工作(返回0失败): 请注意,当我进行此设置时,我可以从另一个amazon节点ping到另一个amazon节点。但从非amazon节点,我仍然无法对amazon结点执行ping操作。 感谢您宝贵的时间和帮助。

  • 问题内容: 我使用JDBC连接到MySQL。在时,一切正常。 但是,当我将应用程序移动到Intranet中的另一台计算机上并用于连接到MySQL数据库时,大约需要1分钟才能成功连接到MySQL。这是怎么回事? 问题答案: 好吧,这可能是DNS问题。您可以通过从配置文件中的选项开始禁用DNS主机名查找。 在这里阅读更多详细信息:http : //dev.mysql.com/doc/refman/5.

  • 启动mysql服务: sudo service mysql start 停止mysql服务: sudo service mysql stop 要连接到服务器,我们通常需要提供MySQL的用户名来触发mysql,很可能,还需要密码。如果你的服务器运行在一个其他的机器上,你还需要指定主机名。联系管理员来找到连接参数(例如主机名,用户名和密码),当你知道了正确的参数后,你可以像下面那样连接: she