端末停止中にプロセスが終了しないように設定する方法

端末停止中にプロセスが終了しないように設定する方法

[編集する]

簡単に。

java xxx...マシンAでパテコールを使用してマシンBから接続しています。ただし、Bマシンにはアクセスできません。java xxx...マシンBがシャットダウンしたときにシャットダウンできない実行中のプロセスを設定するために、マシンCからマシンAにどのように接続しますか?

[オリジナル]

私はパテを使用してサーバー(マシンA)に接続しており、そのサーバーでプロセスが実行されています。ただし、コンピュータ(コンピュータB)を再起動する必要があるため、接続とパテが失われる可能性があります。実行中のプロセスにnohupを設定していないため、このプロセスが終了する可能性があります。disown何らかの理由でパテを使用して設定することはできません。だから私はマシンCを使ってサーバー(マシンA)へのパテ接続を開き、マシンBが再起動したときにプロセスが終了しないように実行中のプロセスを設定したいと思います。

これを行う方法はありますか?disown私が使用できるのと同じシェルプロセスを使用しているかどうかを知っています。しかし、もはやそうではありません。

ベストアンサー1

プロセスが SIGHUP 信号を無視するようにデバッガを接続できます。

gdb --pid="$pid" --batch -ex 'call signal(1,1)' -ex detach

$pidプロセスのIDはどこにありますか?)これを拡張してstdout / stdin / stderrをリダイレクトすることもできます。ただし、プロセスを別の端末に再接続する方法について、ここで説明されている他の質問も確認できます。reptyrこのサイトを検索)。

別のオプションは、Javaプロセスを制御する医師端末を割り当てて駆動するプロセスを一時停止することです。これにより、ssh接続が終了しても死ぬことはなく、javaが端末にあまり書いていない限り影響を受けません。

これはプロセステストですsleep

$ pstree -sp "$(pidof sleep)"
init(1)───sshd(5701)───sshd(62826)───sleep(62842)
$ kill -s STOP 62826

sleepこれで実行中のSSHクライアントを終了します。

$ ps -fC sleep
UID        PID  PPID  C STIME TTY          TIME CMD
root     62842 62826  0 09:50 pts/8    00:00:00 sleep 100

sshdJavaプロセスが終了したら、完全に終了できるようにプロセスを再起動する必要があります。

おすすめ記事