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
入れてプログラムを終了すると、後で使用できるように上記の問題を解決できるかどうか疑問に思います。exit
script.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
を使用してください。これにより、実行中のプロセスに再接続し、より多くのコマンドを入力できます(例:)。tmux
disown
vmd
exit