我在服务器上有一个脚本。如果我在本地服务器上运行它,则没有问题。
<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
最好在screen
或tmux
会话中运行它,这样它的终端将与使用的终端分开ssh
。这样,ssh
在调用脚本后就可以自由退出,并且脚本可以继续运行任意长的时间。
为此,请执行以下操作:
ssh <user>@<host> screen -d -m restart_forms A