一時停止したプロセスをコピーできますか?

一時停止したプロセスをコピーできますか?

bashで実行されているジョブを一時停止するためにctrl-zを使用している場合は、それを複製する方法はありますか?これにより、2つの同じプロセスが作成されました。

複数のファイルを読み込み、いくつかの分析を実行するPythonスクリプトを実行しています。その後、分析されたデータに対していくつかのテストを実行しようとする対話型ステップに達します。これは約20分かかり、最初の分析を一度完了し、インタラクティブな手順を最初から数回テストできるというアイデアです。

答え1

というツールがあります。クーラントこれにより、実行中のプロセスのスナップショットを撮って後で復元できます。試してはいませんが、元のプロセスの実行中にスナップショットプロセスを「復元」できない理由はありません。 〜のようにテデンのコメントヒントは多いです考慮すべき事項cryopidは、プロセスのスナップショットを撮るのが難しいかもしれません。あなたの場合の最善の解決策は、分析が完了したら分析を保存し、将来の実行時にロードするように元のプロセスを変更することです。

答え2

jobsこれを得るには、-コマンドを使用できる必要があります。

➜  ~  top
[1]  + 55990 suspended  top
➜  ~  jobs -l
[1]  + 55990 suspended  top

答え3

/proc/$pid/興味のあるプロセスのディレクトリにあるファイルを一覧表示する方法を探しているようです。(少なくともLinuxマシンでは)。このディレクトリでは、あるプロセスの状態を別のプロセスからコピー/シミュレートするために必要なほとんどすべての情報を見つけることができます。

cgroupsプロセスグループ、マウント伝播フラグ、Numa類似性、ダーティページ、巨大ページ、共有メモリ、メモリマップ、fdオフセット、および、、、、、、、、、、、および...のすべてstatusの項目に注意を払う必要があります。まあ、注意深く見てください。ns/*fd/*oom*iocmdlineenvironmaps

とにかく正しい権限を付与するだけで、次のすべてのファイルを一覧表示できます。

ls -R /proc/"${pid_of_interest}"/

このオプションを使用して 3.3+ カーネルを構築すると、CONFIG_CHECKPOINT_RESTOREカーネルは/proc/$pid/mem_files/シンボリックリンクでディレクトリを埋めます。(アッラー/proc/$pid/fd/*mmap()現在のプロセスで宣言されているすべての「d」ファイルと、他のプロセスと共有するすべてのファイルについて。

関連情報