シェル間でバックグラウンドジョブを共有する

シェル間でバックグラウンドジョブを共有する

私が使う画面内部に多数の (10 を超える) ローカル Bash セッションがあります。一部のプロセス (などvi file) をバックグラウンドに送信し、セッション間を頻繁に切り替えると、編集する必要があるファイルが既に開かれている場所を見つけるのが非常に面倒になることがあります。

このようなバックグラウンド プロセスを共有して、この画面内の任意の Bash セッションからアクセスできるようにする方法はありますか?

答え1

いいえ、bash ジョブ制御異なる bash セッション間でのジョブの共有や採用のサポートについては何も言及されていません。

しかし、レプティル別のセッションでバックグラウンドで実行されたジョブを制御できるようになります。これは、必要なことに十分近いかもしれません。

reptyr では、引き継ぎたいジョブの pid が必要なので、まずその pid を見つける必要があります。元の画面ウィンドウを見つけるよりも、この作業の方が手間がかかるかどうかは、自分で判断できます。

おそらく、主に vim でこれを実行することに関心があるようです (そうです、vi とおっしゃっていますが、内部で実行しているのは vim だと思います)。 は、 vim -r開いているすべての vim セッションと、それらのセッションで編集されているファイルのリストを表示します。リストを読み取って、必要なファイルを使用している pid を見つけ、 を実行しますreptyr <pid>

念のために言うと、vim は、他の場所で既に開いているファイルを を使って編集することを妨げることはありませんvim -r <filename>が、元のセッションに戻ったときに を使ってファイルを再度ロードして:e、新しい編集が最新バージョンに適用されるようにすることを忘れないでください。vim は特定のイベントでこれについて通知します。

答え2

問題の解決策は別のところにあると思います。バックグラウンド プロセスとそれぞれのscreenウィンドウをすべて表示するスクリプトを作成する必要があります。

これが選択肢である場合は、いくつかのコードをお勧めします。

関連情報