FreeBSDのwho
コマンドはfile
、ログインしているユーザーに関する情報を読み取る場所からの引数を知っています。デフォルトは/var/run/utx.active
- で、ファイルは通常誰でも読み取り可能です...
おそらく次のスクリプトで十分でしょう。
#!/usr/local/bin/bash
while read jpath
do
echo JWHO: ${jpath:-$(hostname)}
who "${jpath}/var/run/utx.active"
done < <( jls -h path | sed '1s:.*::' )
出力例:
JWHO: marvin.example.com
smith pts/0 7 nov 20:55 (adsl2343-some-another.example.com)
JWHO: /jails/jail1
JWHO: /jails/testjail
root pts/2 7 nov 20:55 (someother.example.com)
JWHO: /jails/dbjail
手順:
- 実行中のすべての刑務所の「ルートファイルシステム」へのパスを表示します
/var/run/utx.active
指定された刑務所の who を実行します
- jls からヘッダー行をスキップします。つまり、最初の出力がホストになります。
たぶん、誰かがもっと簡単な解決策を知っているかもしれません。たとえば、ps
出力を並べ替えるなど...
コメント: 通常は次のような構造を使用したくありませんcommand | while read
- パイプが新しいシェルをフォークし、ループ内で設定された変数の値を失うと、done < <( commands )
通常はより良い...