ファイル拡張子で検索するには、/var/runでgrepコマンドを使用します。

ファイル拡張子で検索するには、/var/runでgrepコマンドを使用します。

grepディレクトリ内のコマンドを使用してファイルを検索したいと思います。/var/run

/var/runシステムで実行されているプロセスを保存するファイルにpid拡張子があります。 pid.

私が使用しているコマンドsudo grep -nr '*.pid' . (ディレクトリでこのコマンドを実行しています/var/run

出力は表示されません。 Ubuntu 14.04 LTSを使用しています。

答え1

長い話を短く:間違ったツールです。正しいオプションをgrep使用してください。find

これにより、これがディレクトリへのシンボリックリンクであることstat /var/runがすぐにわかります。/var/run/run

$ stat /var/run
  File: /var/run -> /run
  Size: 4           Blocks: 0          IO Block: 4096   symbolic link
Device: 801h/2049d  Inode: 696874      Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2018-02-07 13:17:01.225178554 +0800
Modify: 2017-12-18 20:44:12.898113636 +0800
Change: 2017-12-18 20:44:12.898113636 +0800

したがって、ディレクトリが必要です/run。特定のファイル名を持つファイルを検索するには、find次のコマンドが必要です。

$ find /run -name "*.pid" 
/run/charon.pid
/run/starter.charon.pid
/run/dhclient-wlp2s0.pid

このディレクトリの一部のファイルはrootまたは他のシステムユーザーに属しているため、このコマンドを組み合わせる必要がありますsudo

または-Lフラグを使用して、次のシンボリックリンクとfind呼び出しを許可できます/var/run

$ find -L  /var/run -name "*.pid" 
/var/run/charon.pid
/var/run/starter.charon.pid
/var/run/dhclient-wlp2s0.pid

また、これはgrep作業に適したツールではありません。grepテキストパターンを検索するために使用されます。~へファイル名ではなくテキストファイルです。

また、次のように言及しました。

/var/runは、pid拡張子を持つファイルを含む、システムで実行されているプロセスを保存します。

これは実際に間違っています。プロセス情報はに属します/proc.pidこのファイルは一部同じプロセスの複数のコピーが実行されないようにするプログラムです。バラよりこのスタックオーバーフロー投稿参考までにこの高い投票の答えunix.seで。このディレクトリはrootユーザーに属しますが、デーモンアプリケーションの実行にのみ使用されるとは思わないでください。 root権限を持つユーザーが起動したスクリプトは、このディレクトリに簡単に書き込むことができます。

関連情報