ঠিক আছে, ttaran7 দ্বারা উত্তর সম্পর্কে মন্তব্য করার মতো যথেষ্ট খ্যাতি আমার নেই, সুতরাং এটি একটি উত্তর বলে মনে হবে এটি হতে হবে। কম খ্যাতির কারণে আমার আপ-ভোট সর্বজনীনভাবে দৃশ্যমান নয়। আমি উত্তরটি স্রেফ অনুমানের পরিবর্তে একটি সিস্টেম কল ট্রেস সহ প্রকৃত পক্ষে ভোট দিয়েছি।
ওপি-র প্রশ্নের উত্তর দিতে: হ্যাঁ, আপনার যুক্তিটি সঠিক ছিল: ডিরেক্টরিটি পড়তে না পারার কারণে আপনি অবরুদ্ধ হয়ে পড়েছেন
তারা (ttaran7) যা করেছে তার একই ধরণের চিহ্ন আমি পেয়েছিলাম কারণ আমি একই যুক্তি নিয়ে সন্দেহ করেছি: rm
ডিরেক্টরিটি পড়তে ব্যর্থ হওয়ার পরে কলটি ব্যর্থ হবে এবং এটিই শেষ হবে, ডিরেক্টরিটি ফাঁকা থাকার বিষয়ে অভিযোগ করার কোনও সুযোগ নেই। আমি যে ট্রেস নিয়েছি সেটিকে দ্বিতীয়বার দেখার পরে আমি লক্ষ্য করেছি যে প্রদত্ত ফাইলের নামটি যেভাবেই লিঙ্কমুক্ত করার চেষ্টা করার জন্য একটি সিস্টেম কল করা হয়েছিল:
newfstatat(AT_FDCWD, "folder1", {st_mode=S_IFDIR|0311, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0
openat(AT_FDCWD, "folder1", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_NOFOLLOW|O_DIRECTORY) = -1 EACCES (Permission denied)
openat(AT_FDCWD, "folder1", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_NOFOLLOW|O_CLOEXEC|O_DIRECTORY) = -1 EACCES (Permission denied)
unlinkat(AT_FDCWD, "folder1", AT_REMOVEDIR) = -1 ENOTEMPTY (Directory not empty)
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2995, ...}) = 0
read(3, "# Locale name alias data base.\n#"..., 4096) = 2995
read(3, "", 4096) = 0
close(3) = 0
openat(AT_FDCWD, "/usr/share/locale/en_AU/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_AU/LC_MESSAGES/coreutils.mo", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=45256, ...}) = 0
mmap(NULL, 45256, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8db25ca000
close(3) = 0
openat(AT_FDCWD, "/usr/share/locale- langpack/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=578, ...}) = 0
mmap(NULL, 578, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8db25c9000
close(3) = 0
write(2, "rm: ", 4rm: ) = 4
write(2, "cannot remove 'folder1'", 23cannot remove 'folder1') = 23
openat(AT_FDCWD, "/usr/share/locale/en_AU/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/share/locale-langpack/en_AU/LC_MESSAGES/libc.mo", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2893, ...}) = 0
mmap(NULL, 2893, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f8db25c8000
close(3) = 0
openat(AT_FDCWD, "/usr/share/locale-langpack/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, ": Permission denied", 19: Permission denied) = 19
write(2, "\n", 1
lseek(0, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
close(0) = 0
close(1) = 0
close(2) = 0
exitgroup(1)
চতুর্থ লাইনের দিকে দেখুন: unlinkat
... ডিরেক্টরিটি খালি না হওয়ায় এটি ব্যর্থ হয়। এখন এটাই আমি অপ্রত্যাশিত আচরণ বিবেচনা করব, সত্য যে এটি পড়ার অনুমতি না থাকা সত্ত্বেও ডিরেক্টরিটি মুছে ফেলার চেষ্টা করে।