【问题标题】:Execute SSH Script via Command Line and then Close Shell通过命令行执行 SSH 脚本,然后关闭 Shell
【发布时间】:2018-10-06 01:47:04
【问题描述】:

我正在尝试通过 SSIS 安排 mysqldump,而我认为可能的唯一方法是通过命令行使用 Putty。我的命令看起来像这样:

    putty.exe user@host -pw password -m script.txt

在我的脚本里面是我的 mysqldump 命令:

    mysqldump -h host -u username -ppassword schema > dump_file.sql

当我用一个虚拟数据库测试它时,它可以工作,因为完成时间不到一分钟,所以它会运行命令,打开一个 shell,执行脚本,然后退出 shell完毕。

我现在的问题是使用实时数据库,它需要更长的时间并且我的连接最终会超时并且连接丢失并且外壳永远不会关闭(即使转储成功)。所以这会导致我的 SQL Server 代理作业挂起并且永远不会结束。

有没有一种方法可以让我运行脚本然后退出 shell 而无需等待它先完成?

【问题讨论】:

    标签: shell unix ssh putty


    【解决方案1】:

    尝试使用 & 在后台运行 mysqldump 命令。

          nohup mysqldump -h host -u username -ppassword schema > dump_file.sql &
    

    【讨论】:

    • 我就是这么想的,但是最后会关闭shell连接吗?
    • 我尝试将其添加到它的末尾。我的 SQL 代理作业在 6 秒内完成,但实际上并未备份备份。我的备份文件大小为 0MB。
    • 这可能会有所帮助tecmint.com/…
    • nohup 命令可能会来救你askubuntu.com/questions/8653/…
    • 我遇到的问题是脚本是实际的 shell,所以当脚本完成执行时 shell 会自动退出。即使在我的脚本中添加了 nohup 和 & 之后,shell 也不会关闭,直到该过程完成。我需要一种方法来执行命令,然后关闭 shell。这一切都是通过 SQL Server Agent 完成的,所以没有人在电脑前输入命令。