サーバーにスクリプトがあります。サーバーでローカルに実行しても問題ありません。
<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