シェルまたはプロセスが実行されているxtermを識別する方法は?

シェルまたはプロセスが実行されているxtermを識別する方法は?

私は通常、複数の仮想デスクトップと多くのxtermを含む長期実行Xセッションを使用します。

また、シェル(zsh)でジョブ制御を使用しています。

時には、単純なコマンドを使用してxtermが実行されている(またはハングしている)シェルまたはプロセスを識別できるようにしたい場合があります。

たとえば、vimを使用してファイルを編集すると、vimはまだ実行されている他のvimインスタンスでファイルがすでに開いているという警告を表示します。しかし、今プロセスIDがXYZのvimが起動し、一時停止されたxtermを忘れました。停止したので殺すのは効果がありません。シグナルを介して復元して終了すると機能しますが、フォアグラウンドで実行されているプロセスが混乱し、複数のウィンドウが設定されているため、vimインスタンスを終了したくない場合があります。

現在私はawesomewmを使用していますが、他のwmsの解決策にも興味があります。

ベストアンサー1

Xterm はWINDOWID子プロセスの環境に変数を入れます。その値は xterm ウィンドウのウィンドウ ID です。 PIDに基づいてプロセス環境を照会するPOSIXメソッドはありません。プロセス環境を照会$pidし、WINDOWID変数を抽出するLinuxの方法は次のとおりです。

</proc/$pid/environ gawk -v 'RS=\0' -F = '$1=="WINDOWID" {print $2}'

wmctrlその後、ウィンドウマネージャインタフェースを使用してウィンドウを検索または操作できます。

screenを使用している場合は、まずSTYscreenセッションの名前に設定されているこの変数を試してください。を使用してセッションに接続できますscreen -rd -S "$sessionname"

おすすめ記事