ব্যবহারের ধরে নেওয়া যাক chmod
থেকে গনুহ coreutils প্যাকেজ উবুন্টু 12.10 তে।
chmod 775 . -R
fchmodat
অনুমতিগুলির পরিবর্তন হওয়া দরকার কিনা তা নির্বিশেষে প্রতিটি ফাইলের জন্য সিস্টেম কল কার্যকর করে । আমি কোডটি পরীক্ষা করে এবং strace chmod 775 . -R
(নীচের স্নিপেট) ব্যবহার করে উভয় দ্বারা এটি নিশ্চিত করেছিলাম আসল আচরণের তালিকা তৈরি করতে।
newfstatat(4, "d", {st_mode=S_IFREG|0666, st_size=0, ...}, AT_SYMLINK_NOFOLLOW) = 0
fchmodat(4, "d", 0775) = 0
newfstatat(4, "c", {st_mode=S_IFREG|0666, st_size=0, ...}, AT_SYMLINK_NOFOLLOW) = 0
fchmodat(4, "c", 0775) = 0
newfstatat(4, "a", {st_mode=S_IFREG|0666, st_size=0, ...}, AT_SYMLINK_NOFOLLOW) = 0
fchmodat(4, "a", 0775) = 0
newfstatat(4, "b", {st_mode=S_IFREG|0666, st_size=0, ...}, AT_SYMLINK_NOFOLLOW) = 0
fchmodat(4, "b", 0775) = 0
fchmodat
প্রতিটি ফাইলে চলার কয়েকটি অসুবিধা রয়েছে
- বিপুল সংখ্যক ফাইল পরিবর্তন করা গেলে অতিরিক্ত সিস্টেম কল সম্ভবত তাৎপর্যপূর্ণ হয়ে উঠবে।
find
/ xargs
/ chmod
পদ্ধতি অন্যদের দ্বারা উল্লিখিত সম্ভবত শুধু তাই পরিবর্তন প্রয়োজন ফাইল পরিবর্তন করে দ্রুততর হবে।
fchmodat
প্রতিটি ফাইলের ফাইলের স্থিতি পরিবর্তন (সিটিটাইম) পরিবর্তন করার কল । এটি প্রতিটি ফাইল / ইনোড প্রতিবার পরিবর্তিত করবে এবং অতিরিক্ত ডিস্ক লেখার কারণ হতে পারে। এই অতিরিক্ত লেখাগুলি বন্ধ করতে মাউন্ট বিকল্পগুলি ব্যবহার করা সম্ভব হতে পারে।
একটি সহজ পরীক্ষা সিটিটাইমের পরিবর্তনগুলি সোজা হয়ে যাওয়া দেখায় chmod
auser@duncow:/tmp/blah.test$ ls -lc
total 0
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:17 a
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:17 b
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:17 c
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:17 d
auser@duncow:/tmp/blah.test$ chmod 775 . -R
auser@duncow:/tmp/blah.test$ ls -lc
total 0
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:25 a
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:25 b
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:25 c
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:25 d
তবে কয়েক মিনিট পরে find
/ xargs
/ এ পরিবর্তন হয় নাchmod
auser@duncow:/tmp/blah.test$ date
Tue Jun 18 18:27:27 BST 2013
auser@duncow:/tmp/blah.test$ find . ! -perm 775 -print0 | xargs -0 -I {} chmod 775 {}
auser@duncow:/tmp/blah.test$ ls -lc
total 0
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:25 a
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:25 b
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:25 c
-rwxrwxr-x 1 laptop laptop 0 Jun 18 18:25 d
আমি সর্বদা find
/ xargs
/ chmod
সংস্করণটি ব্যবহার করার প্রবণতা রাখি কারণ অনুসন্ধানগুলি জিনিসগুলি নির্বাচন করার ক্ষেত্রে আরও নিয়ন্ত্রণ দেয়।