現在のユーザーは、すべてのシェルセッション(現在のシェルだけでなく)のすべてのアクションを一覧表示します。

現在のユーザーは、すべてのシェルセッション(現在のシェルだけでなく)のすべてのアクションを一覧表示します。

jobsこのコマンドは、現在シェルセッションで実行されているジョブのみを表示することを知っています。

シェルセッション全体で現在のユーザーのタスク(たとえば、他のターミナルタブのタスク)を表示できるbashコードはありますか?

答え1

jobs現在のユーザー()が所有しているすべてのプロセスを一覧表示するだけでなく、このグローバル呼び出しが何をしたいのかはわかりませんが、ps x端末および/またはステータスでリストをフィルタリングできます。

プロセスをリストします。

  • どの端末にも接続してください。ps x |awk '$2 ~ /pts/'
  • ジョブ制御のために停止しました(Ctrl+zなしbg):ps x |awk '$3 ~ /T/'
  • フォアグラウンドで実行:ps x |awk '$3 ~ /\+/'

AWK本当に強力です。ここでは、フィールドを数値として呼び出し、$正規表現マッチング()を使用してその値を確認します~。逆マッチングを使用できます!~。条件は次のとおりです。 AWKのデフォルトの動作(一致項目を印刷し、{ print $0 }行全体を印刷するように作成することもできます)を使用しています。

AWKコマンドにヘッダー'NR == 1 || …(レコード数= 1、行1とも呼ばれる)を追加できます。たとえば、それらを組み合わせることができますps x |awk 'NR == 1 || $3 ~ /T/ || $2 ~ /pts/。正規表現を使用すると、最初の2つの箇条書きを組み合わせることができますps x |awk '$3 ~ /[T+]/'。これらの条件文は論理的なので、括弧で囲むことができます||&&ps x |awk 'NR == 1 || ($3 ~ /\+/ && $2 ~ /pts/)'

私はあなたが望むものは次のように思う。ps x |awk 'NR == 1 || $2 ~ /pts/

私はこれをLinuxシステムで実行しました。別のプログラムを実行している場合は、端末エミュレータの名前が異なる場合があります。実行して、ps $$アクティブシェルがリストにどのように表示されるかを確認し、2番目の列に正規表現を作成します。

関連情報