拒否後にプロセスを終了する方法

拒否後にプロセスを終了する方法

disown私はSSHを介して長期実行プロセスを実行することに精通しています。たとえば、次のプログラムを実行します。

vmd -e script.tcl > out.txt &

disown -aその後、それをケースから取り外すために使用しました。端末を再接続すると、プログラムが完了したことを示すout.txtメッセージが表示されます。ただし、vmd>vmd()のコマンドプロンプトが表示されます。 VMDは化学シミュレーションのためにTCLスクリプトを実行するプログラムです。独自のシェルを持つPythonに似ていると仮定できます。

http://www.ks.uiuc.edu/Training/Tutorials/vmd/tutorial-html/node8.html

fork retry: Resource temporary unavailableしばらくして実行中のプロセスの制限により、ssh()に接続できません。まず、待機状態の拒否プロセスを終了する方法を知りたいです。

次に、最後にmyをvmd入れてプログラムを終了すると、後で使用できるように上記の問題を解決できるかどうか疑問に思います。exitscript.tcl

答え1

これを行う方法はいくつかあります。 (TM値)

解決策1(おそらく最高):vmdスクリプトの最後にシャットダウンコマンドを追加します。

解決策 2:vmd次のようにコマンドの標準入力を空のデバイスに(または心の状態に応じて空のデバイスから)リダイレクトします。

vmd -e script.tcl > out.txt < /dev/null &

これでvmdスクリプトが完了し、標準入力から次のコマンドを読み取ろうとすると、「ファイルの終わり」を受け取り、終了します。

解決策3:Kill残りのvmdプロセスを使用してくださいkill。シェルの起動後に印刷するときに書き留めるか、&コマンドで見つけることができるPIDが必要ですps ax。まずkill -TERM(デフォルト)試して、うまくいかない場合に行ってくださいkill -HUPいいえkill -KILLエイリアスを使用してくださいkill -9

解決策4:代わりにまたはscreenを使用してください。これにより、実行中のプロセスに再接続し、より多くのコマンドを入力できます(例:)。tmuxdisownvmdexit

関連情報