最近の脆弱性の公開に続いてシステムで解決されたサービスを検索すると、findコマンドから非常に奇妙な動作が見られるようになりました。
root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz
このコマンドは、最初の実行の出力として0または2行を返します。しかし、2回目にコマンドを実行すると、次のようになります。
root@localhost:/# find . -name "*systemd-resolved*"
./usr/share/man/man8/systemd-resolved.service.8.gz
./usr/share/man/man8/systemd-resolved.8.gz
./lib/systemd/systemd-resolved
./lib/systemd/system/systemd-resolved.service.d
./lib/systemd/system/systemd-resolved.service
これは、初めて「find」が実際にすべてを見つけるわけではないことを意味します。また、これは一度だけ発生します。次にコマンドを実行すると、正しい出力が表示されます。Debian 8(jessie)がインストールされている他のシステムでこれをチェックしました。カーネル4.9+を使用している場合、この正確な問題は常に発生しますが、カーネル3.16を使用するシステムでは発生しません。
システムの再起動後、このすべてが再び起こります。ただし、個々のシステムの動作は同じです。つまり、特定のシステムでのテストが最初の実行で2行の出力を返し、2回目の実行で正しい出力を返す場合、システムの再起動後のコマンドの最初の実行は2行を出力します。そのため、システムは各リブート後に同じ動作を示します(私のテストによると)。ファイルの詳細は次のとおりです。
-rw-r--r-- 1 root root ./usr/share/man/man8/systemd-resolved.service.8.gz
lrwxrwxrwx 1 root root ./usr/share/man/man8/systemd-resolved.8.gz -> systemd-resolved.service.8.gz
-rwxr-xr-x 1 root root ./lib/systemd/systemd-resolved
drwxr-xr-x 2 root root ./lib/systemd/system/systemd-resolved.service.d
-rw-r--r-- 1 root root ./lib/systemd/system/systemd-resolved.service
編集:これらの特定のファイルのこの特定のケースにおそらく関連する問題を提案するすべての人々に:「システム解決」はちょうど例です。これは、他のキーワードも検索するときに発生します。これは、最初の実行で間違った結果を与える別の例です。
root@localhost:/# find . -name "*apache*"
バックポートリポジトリから最新のカーネルを搭載したDebian 8でこの問題を確認できる人はいませんか?
/lib/systemd
マウント方法 どのようなファイルシステムですか?それは別のマウントポイントの場合は、何時間それがマウントされたのですか?
strace
か?どのOSで障害のある動作を観察しましたか?「上記のような0または2つの結果を返す」とはどういう意味ですか?ゼロまたは2行の出力、または終了コード0 + 2行?新しいシェルを起動した後、または再起動した後に再び発生しますか?最初の呼び出しはファイルのみを返し、2番目の呼び出しはファイルとディレクトリを返すことに関連する場合があります。