viでユーザーがどのファイルを編集しているかを確認する方法

viでユーザーがどのファイルを編集しているかを確認する方法

を実行すると、wユーザーがviで特定のファイルを編集していることを確認できます。

ただし、異なるディレクトリに同じ名前の複数のファイルがあります。

これらのファイルのうち、ユーザーが編集しているファイルが何であるかをどうやって知ることができますか?

ベストアンサー1

次のようにlsofユーザーを選択してプロセスを検索できます。vim

sudo lsof -u user -a -c vim | grep swp

@Foxが指摘したように、古典的なアプローチは一時ファイルをvi生成するため、/var/tmpこれを表示するには選択(テストしない)が必要です。

sudo lsof -u user -a -c vi | grep '/var/tmp/'

しかし、@Foxが指摘したように、クラシックファイルと実際のファイルを関連付けることはできず、答えで次にvi議論するツールが必要です(クラシックのvi場合はvimそれで十分ですlsof)。通常vim今日のLinuxではvi

バラより15 Linux lsofコマンドの例(オープンファイルの識別)

vim例に戻ると、使用しているスワップファイルが次のようにfile開かれていることがわかります。.file.swp

ユーザーがuser1以下を行う場合vi file:

$ sudo lsof -c vi -a -u user1 | grep swp
vi      3615  user1  3u   REG    8,1    12288 265061 /home/user1/.file.swp

~からman lsof

-a はリスト選択オプションを AND に連結します。

-ccこのオプションは、c文字で始まるコマンドを実行するプロセスのファイルのリストを選択します。複数の -c オプションを使用して複数のコマンドを指定できます。 ANDオプションの選択に参加する前に、単一のORセットに追加されます。

-usこのオプションは、ログインまたはユーザーID番号がカンマで区切られたグループ内のユーザーのファイルのリストを選択します。

lsofルートとして使用できる他にも、sysdig強力なデバッグフレームワークがあります。

これにより、システムで開いているすべてのファイルがリアルタイムで表示され、ファイルが開くとすぐにユーザー、PID、およびプロセスが一覧表示されます。

sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open"

sysdig:システムレベルのナビゲーションとトラブルシューティングツール

SysdigはLinuxカーネルにインストールし、システムコールやその他のオペレーティングシステムイベントをキャプチャし、オペレーティングシステムレベルで物理マシンと仮想マシンを検出します。その後、sysdigのコマンドラインインターフェイスを使用してこれらのイベントをフィルタリングしてデコードして、有用な情報と統計を抽出できます。

Sysdigを使用すると、リアルタイムシステムをリアルタイムで確認したり、後で分析したりできるトレースファイルを作成できます。

snoopyシステム管理者にとって便利なツールとして、プロセスで行われたすべての呼び出しをsyslogに記録するツールをインストールすることもできます。ユーザーがコマンドラインから呼び出すと、vi fileシステムログに表示されます。

インストールされたら、snoopy削除するまでexecve()を介してすべてのプロセス呼び出しを記録することに注意してください。

snoopy: execve() ラッパーとロガー

snoopyは、syslog(authpriv)へのすべての呼び出しを記録するためにlibcによって提供されるexecve()関数の周りのラッパーとして機能する共有ライブラリです。システム管理者は、スヌーピーが軽量/重いシステムの監視、他の管理者のタスクの追跡、システムで何が起こっているのかについての良い「感覚」の取得(Apache実行cgiスクリプトなど)などのタスクに役立ちます。

インストールするには、次のようにしsnoopyますsysdig

$sudo apt-get install snoopy sysdig

関連質問も参照してください。Linuxバイナリが実行するタスクの理解

おすすめ記事