中止shell脚本将中止正在执行的命令

时间:2011-08-20 13:36:17

标签: bash shell networking ssh

我是shell脚本的菜鸟,我尝试搜索但找不到解决方案。

我的互联网连接不好而且一直在下降。我必须在远程服务器上运行某些命令。当我在终端上运行ssh并运行这些命令并且连接断开时,我不确定命令是否继续或者它也停止(我假设它的行为就好像已经收到了Ctrl ^ C.我是否正确?)

现在我已将所有命令放在shell脚本中。 ftp-ed在服务器上,并通过ssh在终端上运行它。这是否可以保证即使连接断开也会运行我的命令。或者我应该将其包装在另一个shell脚本中吗?

谢谢。

4 个答案:

答案 0 :(得分:3)

如果您需要保留在连接断开后使用nohup远程运行​​的命令。有关详细信息,请参阅man nohup。我想你需要做的就是在远程方面运行:

nohup /path/to/your_script.sh &

更确切地说,每当连接断开时,在服务器端发生超时,套接字就会关闭,并且所有进程都属于ssh连接进程的进程树。

答案 1 :(得分:2)

您需要查看输出吗?

如果是,请使用screen,它可以有效地运行服务器上的所有内容,并允许您远程连接到屏幕。

如果不这样做,那么您可以使用nohup来介绍该过程。这样做时,请确保重定向标准流,即

nohup script_to_run &>/dev/null </dev/null &

答案 2 :(得分:0)

使用nohupscreen会话

中运行脚本或运行脚本

答案 3 :(得分:0)

要保证即使断开连接也会运行命令或脚本,请使用nohup

要获得更多控制权,请使用GNU Screen(您将能够重新连接并返回正在运行的命令的终端)。

man nohupman screen有更多信息。