使用 SSH.NET 无阻塞地执行命令并在关闭连接后保持 运行
Execute command with SSH.NET without blocking and keep it running after closing the connection
我正在使用以下代码:
using (var client = new SshClient(host, user, pass))
{
client.Connect();
var terminal = client.RunCommand("/home/my-script.sh");
}
client.RunCommand
挂起,因为我正在使用的命令正在创建一个线程。我希望执行命令而不是等待线程完成。怎么点呢?
综上所述,我想:
- 发送创建后台工作(线程)的命令
- 当后台工作正在完成时,我应该能够关闭 session/connection 以继续后台工作
这不是真正的 SSH.NET 问题,而是一个通用的 SSH/shell 问题。
见How to make a program continue to run after log out from ssh?
所以应该这样做:
client.RunCommand("nohup /home/my-script.sh > foo.out 2> foo.err < /dev/null &");
我正在使用以下代码:
using (var client = new SshClient(host, user, pass))
{
client.Connect();
var terminal = client.RunCommand("/home/my-script.sh");
}
client.RunCommand
挂起,因为我正在使用的命令正在创建一个线程。我希望执行命令而不是等待线程完成。怎么点呢?
综上所述,我想:
- 发送创建后台工作(线程)的命令
- 当后台工作正在完成时,我应该能够关闭 session/connection 以继续后台工作
这不是真正的 SSH.NET 问题,而是一个通用的 SSH/shell 问题。
见How to make a program continue to run after log out from ssh?
所以应该这样做:
client.RunCommand("nohup /home/my-script.sh > foo.out 2> foo.err < /dev/null &");