Linux 远程运行脚本,屏幕挂起,永远无法返回控制

Linux 远程运行脚本,屏幕挂起,永远无法返回控制

我在服务器上有一个脚本。如果我在本地服务器上运行它,则没有问题。

<user@server> ~ % restart_forms A 
forms [A] is Restarting
<user@server> ~ %

但是,如果我从客户端(另一台 Linux 机器)远程运行它,它会像这样

<user@client> ~ % ssh server /path/restart_forms A
forms [A] is Restarting

屏幕挂起并且无法返回到控件;我每次都必须使用 ctrl+c 来终止脚本然后返回到控件。

我知道这可能与 stdin、stdout 和 stderr 有关。目前,我已尝试运行此后台

<user@client> ~ % ssh server /path/restart_forms A &

也尝试过

<user@client> ~ % ssh server /path/restart_forms A >/dev/null 2>&1 &

以上所有方法均失败并出现相同问题。(由于某些业务原因,我无法创建要运行的屏幕)

有人知道吗?谢谢

更新:当我ps -ef | grep restart_forms在客户端尝试时,我可以看到该脚本仍在客户端中运行。它不应该是这样的。

答案1

如果您需要运行一个不会自行终止的脚本,并且想要在类似的情况下运行它,ssh最好在screentmux会话中运行它,这样它的终端将与使用的终端分开ssh。这样,ssh在调用脚本后就可以自由退出,并且脚本可以继续运行任意长的时间。

为此,请执行以下操作:

ssh <user>@<host> screen -d -m restart_forms A

相关内容