実行中のプロセスを選別する


24

スクリーンセッションでプログラムを実行するのを忘れて、途中で停止できないことがあり、時間がかかることがわかっています。

既に実行中のプロセスを再起動せずにスクリーニングする方法はありますか?

回答:


12

アールからのserverfaultでこの答えを見つけました:

ただし、実際の問題については、もう1つ試すことができます。ターミナルからジョブを起動した後、ctrl- zとを入力してバックグラウンドにしますbg
その後、それの親シェルから仕事を切り離す-でbashdisown -h %<jobid>。その後、端末を安全に閉じることができ、ジョブの実行が継続されます。

そして、ロブ・ウェルズからの同じ質問からのこれ:

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw


ジョブを再びフォアグラウンドに戻す方法はありますか?「スクリーン」、次に「fg 1」が機能しない
Putnik

@Putnik-説明どおりに他の手順を実行しましたか?
ウォーレン

7

ServerFaultで重複が見つかりました。

その投稿にない別の解決策は、スクリーンセッションを開始した後にrettyを使用することです。


5
回答を削除しました。2日後に自分の回答を受け入れることができます(また受け入れるべきです)。クロスサイトの「重複」は実際には対象読者が異なるためだまされないため、ここで関連部分を自由に引用してください。
ジェフアトウッド

4
しかし、ジェフの提案に従って、関連する部分を引用しませんでした。=)
デビッドは、モニカを復活させると

5

まさにそれを行うreptyrを見てください。githubページにはすべての情報があります。

reptyr-「再入力」のためのツール

プログラム。

reptyrは、既存の実行中のプログラムを取得して新しい端末に接続するためのユーティリティです。ssh経由で長時間実行されるプロセスを開始しましたが、終了する必要があり、中断したくないですか?画面を起動し、reptyrを使用してそれを取得し、sshセッションを終了して家に向かいます。

使用法

レプティルPID

「reptyr PID」は、ID PIDのプロセスを取得し、現在の端末に接続します。

接続後、プロセスは^ Cや^ Zを含む新しいターミナルから入力を受け取り、新しいターミナルに出力を書き込みます。(残念ながら、それをバックグラウンド化する場合、古い端末で「bg」または「fg」を実行する必要があります。これは、シェルにパッチを当てずに適切な方法で修正することはおそらく不可能です。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.