組み込みLinuxインストールで実行されるデーモンの起動スクリプトを作成しています。これはchmod
BusyBox v1.24.2 からインポートされたことを意味します。
フラッシュメディアに不要な書き込みサイクルが発生したくありません。
そのため、ディレクトリで(with)を実行すると、ディスクへの書き込みchmod 03755
I / Oが発生するかどうか疑問に思います。umask 022
つまり、ディレクトリ権限が正しく設定されていることを確認し、権限が正しくない場合にのみchmodを実行する必要がありますか?
chmod
または、busyboxは権限を確認しないため、ディレクトリ権限の確認は努力の無駄です。すべてのディスク書き込みI/O権限に変更が必要ない場合はいつですか?
答え1
chmod 03755
ファイルを操作することを意味しますchmod("file", 03755)
。その後、その操作に対する権限があることを確認し、可能であれば実行します(そうでない場合はエラーを返します)。これにより、少なくともファイルのctimeが更新されます。作成する監査記録など
busyboxが必要かどうかを確認するために苦労している場合、ctimeは更新されず、これはバグです。これはまた、バグになる可能性があるタスクの原子特性を排除します。
したがって、すぐに完了しなくても、記憶装置にいくつかの関連書込みが発生する。
だから自分で確認をしなければなりません。
stat
あなたのbusyboxバージョンでこのアプレットが有効になっている場合:
[ "$(stat -Lc%a file)" = 3755 ] || chmod 3755 file
答え2
現時点では理想的ではない解決策は、コマンドの前後の書き込み数を印刷することです。
まず、私はディスク書き込みキャッシュの無効化:
# hdparm -W 0 /dev/sda
次に、次の手順を繰り返して、別のプロセスからディスクへの書き込みを除外しました。カーネルディスク統計何度も命令してください。
# cat /sys/block/sda/stat | awk '{ print $5 }';chmod 03755 /opt/etc/tinydns;cat /sys/block/sda/stat | awk '{ print $5 }'
1725
1725
# cat /sys/block/sda/stat | awk '{ print $5 }';chmod 03755 /opt/etc/tinydns;cat /sys/block/sda/stat | awk '{ print $5 }'
1725
1725
# cat /sys/block/sda/stat | awk '{ print $5 }';chmod 03755 /opt/etc/tinydns;cat /sys/block/sda/stat | awk '{ print $5 }'
1725
1725
この場合、chmod
ディスクの出力/書き込みアクティビティは発生しないようです。
答え3
そのファイルで "strace chmod 03755"を使用してそれを見つけることができます。 busybox イメージに strace を追加した可能性があります。